java梯度“设置”任务(预构建/编译/jar)
对java和gradle来说相对较新——尝试做“正确”的事情。在构建我的应用程序之前(我添加了gradle“application”插件),我想设置一些环境和系统的东西——例如,我想创建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();
}
这是可行的——但我在运行时会收到一堆标准警告>;梯度设置
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执行设置/安装任务的正确方法是什么?(在部署应用程序时,这实际上应该只执行一次)
# 1 楼答案
啊,你在混合任务configuration and execution。这:
与此不同:
在第一个阶段中,“stuff”在配置时运行,导致您看到的警告(因为
f
在此阶段被解释为项目变量)。在第二种情况下,它在执行时运行(Gradle很棒,但这种非常微妙的语法差异可能是许多令人恼火的bug的根源!)
至于如何正确地进行设置,当您使用应用程序插件时,您应该查看Including other resources in the distribution
(你也应该考虑将目录创建逻辑移到你的应用程序本身中,作为理想的,你希望它对删除日志目录的人来说是健壮的)!