为什么gradle clean任务会启动所有其他非默认任务?

Mar*_*och 2 gradle android-gradle-plugin

我已经设置并运行了gradle。我的build.gradle内部定义了2个任务:

task setVersion() {
    println('setVersion')
    //...
}

task setIntegrationEnv() {
    println('setIntegrationEnv')
    //...
}
Run Code Online (Sandbox Code Playgroud)

当我跑步

./gradlew clean
Run Code Online (Sandbox Code Playgroud)

gradle这个同时运行的任务setVersionsetIntegrationEnv,然后运行干净我所有的模块(appcloud_module在该项目中,输出):

Relying on packaging to define the extension of the main artifact has been deprecated and is scheduled to be removed in Gradle 2.0
setVersion
setIntegrationEnv
:cloud_module:clean
:app:clean

BUILD SUCCESSFUL

Total time: 14.18 secs
Run Code Online (Sandbox Code Playgroud)

为什么会发生这种情况(在定义此行为的地方)?

Opa*_*pal 5

您能提供完整的build.gradle脚本吗?我会很容易为您提供帮助。您可能将gradle 构建阶段与配置错误了阶段相 -这是这里的常见主题。

一般规则是,您要在构建阶段运行的代码应作为操作添加:

task someTask << {
   println 'runtime'
}
Run Code Online (Sandbox Code Playgroud)

而您想在配置阶段运行的代码应添加到任务正文中:

task someTask  {
   println 'configuration
}
Run Code Online (Sandbox Code Playgroud)

或全部一起:

task someTask {
   println 'configuration'

   doLast {
      println 'runtime'
   }
}
Run Code Online (Sandbox Code Playgroud)

其他信息可以在这里这里这里找到

  • 我建议始终使用`doLast`而不是`&lt;&lt;`,因为使用`&lt;&lt;`非常容易出错(容易忘记等)。 (2认同)

归档时间:

查看次数:

1622 次

最近记录:

11 年,7 月 前