我有一个Gradle任务,简单地将文件从一个文件夹复制到另一个文件夹。
当在配置阶段调用copy'from''into'方法时,它可以工作,但当在执行阶段调用它们时,它就不工作了。
这样做是有效的
task copyServerConfig(type:Copy) {
from "${projectDir}" + File.separator + 'server_config'
into localServer
}
: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'
}
gradle task1
: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'
}
gradle task1
:task1
TEST
BUILD SUCCESSFUL
Total time: 0.655 secs
第一个变体是声明复制任务的正确方式
task copyServerConfig(type:Copy) {
from "${projectDir}" + File.separator + 'server_config'
into localServer
}
这里您说“这是一个类型为copy
的任务,名称为copyserverconfig
,这是from
param,这是into
param”。方括号内的代码用于配置任务。
<<
运算符将doafter
闭包添加到任务中,并在任务之后执行。
task copyServerConfig(type:Copy) << {
from "${projectDir}" + File.separator + 'server_config'
into localServer
}
此声明表示“创建空(未配置)copy
任务,并在完成后执行这两行。这里没有配置任务,它什么也不做,并且总是最新的
。doafter
闭包中的两行也什么也不做,因为它们与copy
任务无关,所以from
和into
关键字没有作用。
类似的情况也发生在exec
任务中
task task1(type:Exec) << {
commandLine 'echo', ' TEST'
}
这里有一个空的Exec任务,因为没有配置它而失败。
我目前正在学习Gradle。 但是我发现,当我在命令行运行时,复制不会发生。只有当显式执行任务时(即通过在命令行运行)才会发生复制。所以上面的代码实际上行为与 我对配置阶段和配置闭包的理解是否不正确?还是我漏掉了一些信息?
我有在Gradle的执行阶段创建和执行任务的需求。 目前,在构建任务期间,我确定并创建了多个添加到taskContainer的任务,使用: 在第一次执行时,我得到以下错误: >任务工件状态缓存(.../.gradle/1.5/taskartifacts)尚未被锁定。 我做错了什么,有没有更好的方法在执行过程中动态添加任务?
https://docs.gradle.org/current/userguide/custom_tasks.html 如何使此任务在执行阶段运行?正在传递一个空闭包 唯一的解决办法? 但是hello任务似乎是在构建的配置阶段调用的。
OpenResty 处理一个请求,它的处理流程请参考下图(从 Request start 开始): 我们在这里做个测试,示例代码如下: location /mixed { set_by_lua_block $a { ngx.log(ngx.ERR, "set_by_lua*") } rewrite_by_lua_block { ngx.log
Openresty是什么? 重申一下Openresty是什么?截一张Openresty官网,春哥对Openresty的一个官方说明如下图: 我的理解Openresty = Nginx + ngxhttp_lua_module + lua_resty*;它是一个原生Nginx合上一个HTTP_LUA模块,在加上一系列Lua_resty模块组成的一个Ngx_Lua高性能服务生态。 Openresty处
我是格雷德尔的新手。我正在尝试使用一个插件,但我想在执行过程中更改插件的默认值 我希望在执行过程中使用project.version中存在的版本值。但看起来该值是在执行任何任务之前设置的。有什么想法吗?