在单个build.gradle文件中多次调用同一任务

在单个build.gradle文件中多次调用同一任务,gradle,plugins,Gradle,Plugins,我有一个自定义的Gradle插件,可以从模板文件生成Java文件。我在不同的位置有几个这样的模板文件,我需要“编译”所有这些文件来生成我需要的Java文件。一旦我有了这些文件,我想把它们打包到一个.jar中 我认为可以这样做的一种方法是在同一个构建文件中多次调用“编译模板”任务。在编译位置a中的模板文件的任务中,我会调用它一次,再次调用从位置B编译模板文件的任务。。。等等,直到我有了所有需要的Java文件 大概是这样的: task compileFromLocationA <<{

我有一个自定义的Gradle插件,可以从模板文件生成Java文件。我在不同的位置有几个这样的模板文件,我需要“编译”所有这些文件来生成我需要的Java文件。一旦我有了这些文件,我想把它们打包到一个.jar中

我认为可以这样做的一种方法是在同一个构建文件中多次调用“编译模板”任务。在编译位置a中的模板文件的任务中,我会调用它一次,再次调用从位置B编译模板文件的任务。。。等等,直到我有了所有需要的Java文件

大概是这样的:

task compileFromLocationA <<{
    compileTemplate.execute(A)...
}

task compileFromLocationB
    compileTemplate.execute(B)...

...

packageJar(depends: compileFromLocationA, compileFromLocationB, ...)
    ...

task compileFromLocationA此代码似乎通过使用
tasks.register()
build.gradle
中工作-例如,要执行多个源代码生成步骤-在我的情况下,我需要在两个不同的步骤中加载不同的文件对(XML架构和生成选项):

插件{
id‘java’
id“com.plugin”版本“1.0”
}
sourceSets.main.java.srcDirs+=文件(“${buildDir}/genSrc”)
sourceSets.test.java.srcDirs+=文件(“${buildDir}/testGenSrc”)
tasks.compileJava{
dependsOn tasks.named(“genMessage”)
}
简讯{
codesFile=“${projectDir}/src/main/resources/file.xml”
}
def testGenModel1=tasks.register(“testGenModel1”,com.plugin.testgenmodelstask.class){
schema=“${projectDir}/src/test/resources/file.xsd”
options=“${projectDir}/src/test/resources/file.xml”
}
def testGenModel2=tasks.register(“testGenModel2”,com.plugin.testgenmodelstask.class){
schema=“${projectDir}/src/test/resources/file2.xsd”
options=“${projectDir}/src/test/resources/file2.xml”
}
tasks.compileTestJava{
dependsOn tasks.named(“testGenModel1”),tasks.named(“testGenModel2”)
}

为了更好地理解:位于多个位置的模板文件是否位于已知位置?还有,自定义插件,是您自己创建的吗?意思是你可以控制插件的源代码?是的,是的。我需要从6到7个地方获取模板文件,但我都知道。至于插件,我没有写它,但我可以访问源代码。如果它是插件,那么它提供了自定义任务类型?它是否还定义了诸如“源”之类的属性,以便在其中查找要生成模板的文件?它提供了一个自定义任务,
compileTemplateFile
。它没有定义像“source”这样的属性,它只是查看
build.umple
文件的位置。不过,我可以将其配置为包含
source
属性。如果它只查看bulid.umple文件,为什么不将多个源作为一个任务动态构建该文件,然后在独立的任务中调用插件,该任务取决于构建该文件的第一个任务?假设文件可以有多个源?这将是一个不需要任何插件修改的选项。