我有一个自定义 Gradle 插件,它将从模板文件生成 Java 文件。我在不同位置有几个这样的模板文件,我需要“编译”所有这些文件以生成我需要的 Java 文件。获得文件后,我想将它们打包到 .jar 中。
我认为可以做到这一点的一种方法是从同一构建文件中多次调用“编译模板”任务。我会在编译位置 A 中的模板文件的任务中调用它一次,然后在编译位置 B 中的模板文件的任务中再次调用它......等等,直到获得所需的所有 Java 文件。
像这样的东西:
task compileFromLocationA <<{
compileTemplate.execute(A)...
}
task compileFromLocationB
compileTemplate.execute(B)...
...
packageJar(depends: compileFromLocationA, compileFromLocationB, ...)
...
但是,您无法以编程方式从另一个任务中调用一个任务。我想我可以打破每一个compileFromLocation_
任务变成它自己的任务build.gradle
文件,但这似乎有点矫枉过正。在这种情况下,“最佳实践”是什么?
这段代码似乎适用于build.gradle
通过使用tasks.register()
- 例如执行多个源代码生成步骤 - 在我的例子中,我需要在两个不同的步骤中加载不同的文件对(XML 模式和生成选项):
plugins {
id 'java'
id "com.plugin" version "1.0"
}
sourceSets.main.java.srcDirs += file("${buildDir}/genSrc")
sourceSets.test.java.srcDirs += file("${buildDir}/testGenSrc")
tasks.compileJava {
dependsOn tasks.named("genMessage")
}
genMessage {
codesFile = "${projectDir}/src/main/resources/file.xml"
}
def testGenModel1 = tasks.register("testGenModel1", com.plugin.TestGenModelTask.class) {
schema = "${projectDir}/src/test/resources/file.xsd"
options = "${projectDir}/src/test/resources/file.xml"
}
def testGenModel2 = tasks.register("testGenModel2", com.plugin.TestGenModelTask.class) {
schema = "${projectDir}/src/test/resources/file2.xsd"
options = "${projectDir}/src/test/resources/file2.xml"
}
tasks.compileTestJava {
dependsOn tasks.named("testGenModel1"), tasks.named("testGenModel2")
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)