Gradle jar任务执行wsclean任务,为什么?

时间:2016-11-23 07:50:44

标签: gradle jar

我有一个build.gradle文件,看起来像这样

task wsimport{
    ....
}

task wsclean {
    delete "${destDir.path}/com"
}

compileJava.source = ["${projectDir}/src/main/java", "${projectDir}/src/main/generated"]

wsimport任务会生成wsdl文件中需要的一些java文件。这一代需要一段时间,所以我不想在每次构建jar时执行它,或者编译程序。

wsclean任务是在wsdl更改时使用的。

首先,我运行wsimport任务并确认文件是否正确生成,它们是!

但是现在当我运行gradle jar时,生成的文件将被删除。为什么呢?

当我注释掉wsclean任务时,jar任务继续成功。为什么gradle会调用wsclean

注意:我确定我没有 明确地 创建jar.dependsOn wsclean

我持有的一个理论是jar任务执行*clean任务。如果是这样,我该如何防止它发生?

1 个答案:

答案 0 :(得分:1)

而不是

task wsclean {
  delete "${destDir.path}/com"
}

你需要

task wsclean << {
  delete "${destDir.path}/com"
}

task wsclean {
  doLast {
    delete "${destDir.path}/com"
  }
}

否则,删除将作为配置阶段的一部分执行,无论启动任何任务,都会在每次构建时执行删除。见https://docs.gradle.org/current/userguide/build_lifecycle.html