【发布时间】:2017-04-18 13:37:19
【问题描述】:
有没有办法在 gradle 中有两个任务,并在插件中返回正确的值设置参数
我有:
Build.gradle
apply plugin: 'gradle.plugin'
task FirstTask(type: com.nav.Coding){
param.dictFile = file ("${projectDir}/src/main/resources/customized_struct.xml")
param.outputDirectory = file("${buildDir}/generated/"
}
task SecondTask(type: com.nav.Coding){
param.dictFile = file("${projectDir}/src/main/resources/customized_struct_two.xml")
param.outputDirectory = file("${buildDir}/generated/"
}
由于某种原因,在将参数设置为 JVM 并处理自定义插件时,我的输出仅采用第二个 dictFile 而不是第一个。
命令输出
$ gradle -q FirstTask SecondTask
:com:nav:Coding:FirstTask
Processing C:\dev\src\main\resources\customized_struct_two.xml
This is my output dictFile C:\dev\src\main\resources\customized_struct_two.xml
This is my output outputDirectory C:\dev\build\generated
:com:nav:Coding:SecondTask
Processing C:\dev\src\main\resources\customized_struct_two.xml
This is my output dictFile C:\dev\src\main\resources\customized_struct_two.xml
This is my output outputDirectiory C:\dev\build\generated
BUILD SUCCESSFUL
Total time: 12.79 secs
【问题讨论】:
-
什么是
param?一些全局配置对象? -
这是在我的 groovy 类中创建的插件名称
project.getExtensions().create("param",Coding.ParamPluginExtension.class) -
两个任务都输出到
${buildDir}/generated,所以这可能会导致问题。要么输出到每个任务的单独目录,要么确保com.nav.Coding的TaskOutputs精确到确切的文件(而不是目录) -
@LanceJava 我的插件利用
dictFilexml 并根据 xml 中的值生成代码。我想在同一目录中输出生成的文件...当我注释掉其中一个任务时,它会在${buildDir}/generated中生成类,反之亦然(其他注释掉)我觉得我的问题是第二个任务优先并在插件上设置参数 vs 第一个任务完成,然后使用第二个字典文件