【问题标题】:Gradle task executes is Configuration phase but not in Execution phaseGradle 任务执行是配置阶段但不在执行阶段
【发布时间】:2016-05-20 18:14:00
【问题描述】:

我有一个 Gradle 任务,它只是将文件从一个文件夹复制到另一个文件夹。

在配置阶段调用复制 'from' 'into' 方法时,它可以工作,但在执行阶段调用它们时,它不会。

这样做是有效的

task copyServerConfig(type:Copy)  {  
    from "${projectDir}" + File.separator + 'server_config'  
    into localServer  
}  

gradle copyServerConfig

:copyServerConfig  

BUILD SUCCESSFUL  

Total time: 0.686 secs  

使用 '

task copyServerConfig(type:Copy) << {  
    from "${projectDir}" + File.separator + 'server_config'  
    into localServer  
}  

gradle copyServerConfig

:copyServerConfig UP-TO-DATE  

BUILD SUCCESSFUL  

Total time: 0.654 secs  

如果我将它放在 doFirst{} 块中,也会发生同样的情况。

我不明白的另一件事是:

如果我执行这个任务:

task task1(type:Exec) << {  
     commandLine 'echo', ' TEST'   
}  

我收到此错误:

毕业任务1

:task1 FAILED  

FAILURE: Build failed with an exception.

What went wrong:  
Execution failed for task ':task1'.  
execCommand == null!

但如果我改成这样:

task task1(type:Exec) {  
     commandLine 'echo', ' TEST'   
}  

毕业任务1

:task1  
 TEST  

BUILD SUCCESSFUL  

Total time: 0.655 secs  

我阅读了有关构建生命周期的文档,我了解 doFirst{} 和 doLast{} 块内的命令在执行阶段执行,而这些块外的命令在配置阶段执行。

但我认为这里缺少一些重要的概念。为什么会这样?在配置阶段和执行阶段执行命令有什么区别?

【问题讨论】:

    标签: gradle build.gradle


    【解决方案1】:

    第一个变体是声明复制任务的正确方法

    task copyServerConfig(type:Copy)  {  
        from "${projectDir}" + File.separator + 'server_config'  
        into localServer  
    }
    

    在这里你说“这是一个Copy类型的任务,名称为copyServerConfig,这是from参数,这是into参数”。括号内的代码用于配置一个任务。


    &lt;&lt; 操作符为任务添加了一个doAfter 闭包,在它之后执行。

    task copyServerConfig(type:Copy) << {  
        from "${projectDir}" + File.separator + 'server_config'  
        into localServer  
    } 
    

    这个声明的意思是“创建空的(未配置的)Copy任务,完成后执行这两行。这里你没有配置任务,它什么也不做,总是UP-TO-DATE。@中的两行987654331@ 闭包也不做任何事情,因为它们与Copy 任务无关,所以frominto 关键字不起作用。


    Exec 任务也会发生类似的事情

    task task1(type:Exec) << {  
         commandLine 'echo', ' TEST'   
    } 
    

    这里有空的 Exec 任务,因为没有配置而失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-08
      相关资源
      最近更新 更多