相对较新的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();
}
哪个有效 - 但是在运行&gt时我收到一堆stdout警告gradle setup
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执行设置/安装任务的正确方法是什么? (这应该只在部署应用程序时执行一次)
答案 0 :(得分:5)
啊,你正在混合任务configuration and execution。这样:
task foo {
// Stuff
}
与此不同:
task foo << {
// Stuff
}
在第一个中,“stuff”在配置时运行,导致您看到的警告(因为f
在此阶段被解释为项目变量)。在第二个,它在执行时运行。
(Gradle很棒,但这种非常微妙的语法区别可能是许多真正的错误的来源!)
至于如何正确设置,当您使用应用程序插件时,您应该查看 Including other resources in the distribution 。
(您还应该考虑将目录创建逻辑移动到您的应用程序本身,理想情况下,您希望它对于删除日志目录的人来说是健壮的!)