Gradle 如何使用参数调用另一个子项目生成文件中的任务
我正在使用Gradle创建一个多项目构建文件。许多子项目需要通过传递某些参数来执行存在于另一个子项目中的任务。如何在格拉德尔实现这一目标 例如:Gradle 如何使用参数调用另一个子项目生成文件中的任务,gradle,build.gradle,Gradle,Build.gradle,我正在使用Gradle创建一个多项目构建文件。许多子项目需要通过传递某些参数来执行存在于另一个子项目中的任务。如何在格拉德尔实现这一目标 例如: root project - project B : task X - project A : task Y (param m, param n) 我需要projectB.taskX调用projectA.taskY(m,n) 更新: 子项目A有一个JavaExec类型的任务,它需要一个属性文件位置的输入参数 task generateCo
root project
- project B : task X
- project A : task Y (param m, param n)
我需要projectB.taskX调用projectA.taskY(m,n)
更新:
子项目A有一个JavaExec类型的任务,它需要一个属性文件位置的输入参数
task generateCode(dependsOn:['classes','build'], type: JavaExec) {
main = 'jjrom.ObjectGen'
classpath = sourceSets.main.runtimeClasspath
args 'arg1', 'arg2', file(propertiesFilePath).path
}
现在,共有10个子项目,所有子项目都需要使用包含属性文件位置的参数调用此任务“generateCode”。此外,该任务应在构建每个子项目之前执行,这些子项目可以使用dependsOn实现
我的java项目代码组织:
trunk/
projA/src/java/../ObjectGen.java
projB/src/java/../properties.xml
projC/src/java/../properties.xml
projD/src/java/../properties.xml
....
一个任务不能调用另一个任务。相反,解决此问题的方法是向所有十个子项目添加
generateCode
任务。您可以从根生成脚本执行此操作,代码如下所示:
subprojects {
apply plugin: 'java'
configurations {
codegen
}
dependencies {
// A contains the code for the code generator
codegen project(':A')
}
task generateCode(type: JavaExec) {
main = 'jjrom.ObjectGen'
classpath = configurations.codegen
args 'arg1', 'arg2'
}
compileJava.dependsOn(generateCode)
}
如果没有关于属性文件位置的常规模式,则可以在子项目的构建脚本中添加此信息:
generateCode {
args file('relative/path/to/properties/file')
}
不确定“需要执行另一个子项目中存在的任务”是什么意思。请举一个具体的例子。