gpt4 book ai didi

java - Gradle : Task dependency tree ignored?

转载 作者:行者123 更新时间:2023-12-03 06:20:41 24 4
gpt4 key购买 nike

我对 gradle 的任务依赖项有疑问。

我有一个 version.properties 文件,必须清除(在干净任务上)或用版本信息填充(在 war 任务上)。

因此我设置了这个依赖:

clean.dependsOn clearVersionProperties


processResources.dependsOn ([defaultValues,infoEnv])
compileJsps.dependsOn(classes, tomcatJasper, xmlModify)
war.dependsOn(compileJsps, svnRevision, writeVersionProperties)

我的任务已在 commons.gradle 中外部化,如下所示:
...

def writeVersionFile(String whatToWrite) {
File f = new File(project.webAppDirName+'/WEB-INF/version.properties');
if (f.exists()) { f.delete(); }

f = new File(project.webAppDirName+'/WEB-INF/version.properties');
FileOutputStream os = new FileOutputStream(f);
os.write(whatToWrite.getBytes());
os.flush();
os.close();
}

task clearVersionProperties() {
println "Clearing version file"
String whatToWrite = "version=@version@"
writeVersionFile(whatToWrite)
}

task writeVersionProperties(dependsOn: svnRevision) {
println "Writing version file"
String whatToWrite = "version="+project.ext.revision;
writeVersionFile(whatToWrite)
}
...

据我了解,clean 现在将调用 clearVersionProperties,war 将调用 writeVersionProperties。

但是当我执行 gradle clean 时, react 器计划如下所示:
C:\devtools\....\branches\merge\Application>gradle -bbuild20.gradle clean -Ptomcat=7 -Ptarget=live

To honour the JVM settings for this build a new JVM will be forked. Please consider using the daemon: http://gradle.org/
docs/2.0/userguide/gradle_daemon.html.
_______________________________________________________________________________

### building LIVE system

_______________________________________________________________________________
Clearing version file
Writing version file
JSP compilation...
TC7 Sources integrated
________________________________________________________
Compiling JSPs against Tomcat 7.0.11
________________________________________________________
:clearVersionProperties UP-TO-DATE
:clean UP-TO-DATE

BUILD SUCCESSFUL

Total time: 16.803 secs

为什么任务 clearVersionProperties 和 writeVersionProperties 被执行,因为它们绑定(bind)到某些构建阶段?例如任务 infoEnv 没有被执行,但是 - 这确实是一个问题 - 任务 writeVersionProperties 只应该由 war 任务执行。

任何帮助表示赞赏!

最佳答案

与此同时,我发现了这些任务被解雇的原因:

我在任务声明之后错过了 <<,所以将我的两个任务更改为

task clearVersionProperties() << {
println "Clearing version file"
String whatToWrite = "version=@version@"
writeVersionFile(whatToWrite)
}

task writeVersionProperties(dependsOn: [svnRevision]) << {
println "Writing version file"
String whatToWrite = "version="+project.ext.revision;
writeVersionFile(whatToWrite)
}

writeVersionProperties.mustRunAfter clearVersionProperties

这完成了工作....我不确定这是错误、功能还是副作用。但在我看来,就像在函数之后忘记 () 一样,完全是邪恶的陷阱。

关于java - Gradle : Task dependency tree ignored?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25720374/

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