Gradle Jar任务忽略doLast中的destinationDir
我需要在构建的执行阶段执行Jar任务。 我试过了 记录器显示destinationDir的值已更改。但当我运行脚本时,它会在默认位置而不是“某个位置”创建JarGradle Jar任务忽略doLast中的destinationDir,gradle,jar,task,Gradle,Jar,Task,我需要在构建的执行阶段执行Jar任务。 我试过了 记录器显示destinationDir的值已更改。但当我运行脚本时,它会在默认位置而不是“某个位置”创建Jar 如果我删除“doLast”,则任务在配置阶段工作,忽略不符合我需要的dependsOn值。不要在执行阶段更改配置。这将对最新检查起作用,您的任务可能在不必要时执行,或者更糟糕的是,在必要时不执行。除非您完全禁用此任务的最新检查,否则您将禁用Gradle的一大优势 不要执行doLast,它工作正常。如您所述,任务不是在配置阶段运行的。只有
如果我删除“doLast”,则任务在配置阶段工作,忽略不符合我需要的dependsOn值。不要在执行阶段更改配置。这将对最新检查起作用,您的任务可能在不必要时执行,或者更糟糕的是,在必要时不执行。除非您完全禁用此任务的最新检查,否则您将禁用Gradle的一大优势 不要执行
doLast
,它工作正常。如您所述,任务不是在配置阶段运行的。只有您的println
语句在配置阶段运行,就像它们在配置块中一样。实际任务的执行将在您定义的依赖项之后进行
PS:当然您必须在doFirst{}
中设置配置,而不是doLast{}
。顾名思义,doLast{}
在所有现有任务操作之后执行,doFirst{}
在之前执行。但请不要这样做,这很可能不是正确的做法
task ("createJar", type: Jar, dependsOn: "some_task") {
doLast{
println ("default destinationDir " + destinationDir)
destinationDir file("some_location")
println ("destinationDir after change" + destinationDir)
from "some_dir"
}
}