2016-04-08 172 views
2

我是一个gmake用户过渡到Gradle。我有一个多项目结构,其中一个子项目是一个Java项目,另一个是自酿的语言。家酿的语言不使用任何Gradle插件。现在我想添加一个运行Java程序的任务,以便在我的任何自家酿造的源文件被修改时生成XML。在make中,我只是在目标名称旁边声明了对inputFile.mine或* .mine的依赖关系,但我无法轻松找到如何使用Gradle来完成这个基本的事情。目前,我强制任务始终使用下面可能很丑陋的解决方法执行。我想用一些dependsOn * .mine替换它。 Gradle用户指南有一整章专门用于解释指定文件的不同方式,但我没有看到如何声明依赖关系。文件依赖Gradle

task generateXML(type: Exec) { 
generateXML.getOutputs().upToDateWhen({false}) // Force it to execute always 
executable("java.exe") 
args("-jar", "resources/generateXml.jar", "src/inputFile.mine") 
} 

感谢您帮助新手出去。

回答

0

您可以在Gradle中定义任务输入和输出。

例如:

task generateXML(type: Exec) { 
    inputs.file ("src/inputFile.mine") 
    executable("java.exe") 
    args("-jar", "resources/generateXml.jar", "src/inputFile.mine") 
} 

更多信息请参见https://docs.gradle.org/current/userguide/more_about_tasks.htmlhttps://docs.gradle.org/current/javadoc/org/gradle/api/tasks/TaskInputs.html

备注:当你用-i运行你的版本时,Gradle会告诉你在最新的检查过程中发生了什么。

+0

谢谢!这些参考和示例正是我所需要的。特别是第17.9节。 “跳过最新的任务”解决了这个问题。 –