我有一个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
任务。如果是这样,我该如何防止它发生?
答案 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