Gradle任务。 &#34;(类型:复制)&#34;并且<dolast>都不能起作用

时间:2017-05-26 09:35:05

标签: gradle copy

task simpleTask{
    print("simpleTask is reach");
}

task copySomeFile(type: Copy){
    print("copySomeFile is reach");
    from baseProjectPath;
    into toProjectPath;
    appendXML();
}
def appendXML(){
    //modify a.txt
}

//我只想运行&#34; simpleTask&#34;但是,当&#34; gradle simpleTask&#34;,任务&#34; copySomeFile&#34;也会跑!我知道beacuse gradle初始化。

但如果写得像这样

task copySomeFile(type: Copy)<<{
}

&#34; copySomeFile&#34;不行。

似乎&#34;(类型:复制)&#34;无法使用&#34;&lt;&lt;&#34;或者&#34; doLast {}&#34;?

我只想要&#34; - gradle simpleTask&#34; &#34; - gradle copySomeFile&#34;可以独自运行。

2 个答案:

答案 0 :(得分:3)

您必须阅读Gradle build lifecycle

您需要注意两个阶段 - ConfigurationExecution。所有任务总是在每次构建时配置,但只有部分任务才真正作为执行阶段执行。

您看到的是在配置阶段配置了copySomeFile任务。它不会复制任何东西,但必须进行配置。任务关闭中的所有内容都是任务的配置,这就是您在输出中看到print("copySomeFile is reach");的结果的原因。

<<doLast用于在执行阶段运行某些内容,但如果将所有配置放入doLast,则不会配置类型为Copy的任务部分或将<<添加到任务定义中 - 这就是副本无法工作的原因。

答案 1 :(得分:1)

是的,我明白了。我多么感谢你们两位。分享代码:

Thread