我正在读关于Gradle 执行程序并创建了以下内容build.gradle
:
task startTomcat(type:Exec) {
commandLine 'cmd', '/c', 'echo init startTomcat'
}
task stopTomcat(type:Exec) {
// on windows:
commandLine 'cmd', '/c', 'echo init stopTomcat!'
doLast {
commandLine 'cmd', '/c', 'echo doLast stopTomcat!'
}
}
当我跑步时gradlew stopTomcat
,输出如下所示:
Parallel execution with configuration on demand is an incubating feature.
:stopTomcat
init stopTomcat!
我没看到那条线doLast stopTomcat!
为什么我不能执行命令doLast
?
您的任务属于 Exec 类型。这commandLine
方法调用通过传递来配置任务cmd
, /c
and echo init stopTomcat!
到它。这发生在配置阶段。
然后任务在执行阶段运行并打印:
init stopTomcat!
然后doLast
块启动并配置任务,传递cmd
, /c
and echo doLast stopTomcat!
到它。此配置无效,因为任务已经运行。
要获得第二次打印,您可以执行以下操作:
task stopTomcat(type:Exec) {
// on windows:
commandLine 'cmd', '/c', 'echo init stopTomcat!'
doLast {
exec {
commandLine 'cmd', '/c', 'echo doLast stopTomcat!'
}
}
}
这是调用 exec 任务的另一种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)