根据作为插件属性的条件配置自定义gradle插件任务

时间:2015-09-15 20:33:24

标签: gradle

我正在编写一个包含复制任务的自定义插件。该任务应该从maven存储库中获取wsdl文件或包含wsdl和xsds的zip。在zip文件的情况下,它将使用ziptree来扩展文件。

完成此操作后,另一项任务将使用wsimport从这些文件创建客户端jar。

我目前的尝试是使用插件布尔属性来区分。以下代码是我试图实现的目标:

void addTasks(Project project) {
  project.task('downloadWSDL', type: Copy) {
    if (project.wsimport.zipped) {
      from { project.configurations.wsdl.collect { project.zipTree(it) }}
      into { project.wsimport.wsdlDir }
    } else {
      from { project.configurations.wsdl }
      into { project.wsimport.wsdlDir }
    }
  }
}

这里的问题是在配置阶段没有设置project.wsimport.zipped(我想假)。我试图将它放在一个闭包中,但即使该属性设置为false,它似乎仍然会执行压缩路径。

如何根据条件配置此类任务?

检查工作解决方案是否处于最新状态时是否会按预期运行?

我认为另一种方法可能是拥有2个不同的任务并动态修改依赖类的dependsOn,但我怀疑它会遇到类似的问题。

谢谢。

0 个答案:

没有答案