gpt4 book ai didi

java - Gradle "setup"任务(预构建/编译/jar)

转载 作者:行者123 更新时间:2023-12-01 17:17:55 25 4
gpt4 key购买 nike

对于 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 时收到一堆标准输出警告

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 执行设置/安装任务的正确方法是什么? (这实际上应该只在部署应用程序时执行一次)

最佳答案

啊,你在混合任务configuration and execution 。这:

task foo {
// Stuff
}

与此不同:

task foo << {
// Stuff
}

首先,“stuff”在配置时运行,导致您看到警告(因为 f 在此阶段被解释为项目变量)。在第二个中,它在执行时运行。

(Gradle 很棒,但是这种非常微妙的语法区别可能是许多令人恼火的错误的根源!)

<小时/>

至于如何正确设置,当您使用应用程序插件时,您应该查看 Including other resources in the distribution

(您还应该考虑将目录创建逻辑移到应用程序本身中,因为理想情况下您希望它能够防止有人删除日志目录!)

关于java - Gradle "setup"任务(预构建/编译/jar),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20730836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com