繁体   English   中英

Gradle:任务依赖树被忽略了吗?

[英]Gradle : Task dependency tree ignored?

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

我有一个version.properties文件,必须将其清除(在执行清理任务时)或在版本中(执行战争任务时)填充版本信息。

因此,我设置了这种依赖关系:

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时,反应堆计划如下所示:

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绑定到某些构建阶段,为什么还要执行这些任务? 例如任务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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM