相对较新的java和gradle - 试图做"正确"的事情.在构建我的应用程序之前(我添加了gradle"应用程序"插件)我想设置一些环境和系统的东西 - 例如,我想创建log /目录和log.txt文件.
所以我做的事情如下:
task setup { println 'Setup task executing ...' File d = new File('log'); d.mkdir(); f = new File(d.getPath() + '/log.txt'); f.createNewFile(); }
哪个有效 - 但是在运行> gradle setup时我收到了一堆stdout警告
Setup task executing ... Creating properties on demand (a.k.a. dynamic properties) has been deprecated and is scheduled to be removed in Gradle 2.0. Please read http://gradle.org/docs/current/dsl/org.gradle.api.plugins.ExtraPropertiesExtension.html for information on the replacement for dynamic properties. Deprecated dynamic property: "f" on "task ':setup'", value: "log/log.txt". :setup UP-TO-DATE
所以有一个问题:利用Gradle执行设置/安装任务的正确方法是什么?(这应该只在部署应用程序时执行一次)
啊,你正在混合任务配置和执行.这个:
task foo { // Stuff }
与此不一样:
task foo << { // Stuff }
在第一个中,"stuff"在配置时运行,导致您看到的警告(因为f
在此阶段被解释为项目变量).在第二个,它在执行时运行.
(Gradle很棒,但这种非常微妙的语法区别可能是许多真气虫的来源!)
至于如何正确地进行设置,当您使用Application插件时,您应该考虑在分发中包含其他资源.
(您还应该考虑将目录创建逻辑移动到您的应用程序本身,理想情况下,您希望它对于删除日志目录的人来说是健壮的!)