我有一个项目 子项目 projA 和 projB .
如何在 之后添加新行从根项目执行任何任务 ?
我尝试的是:
我写了一个任务来打印 commonClosures.gradle 文件中的下一行并将其包含在模块 gradle 文件中(申请自:)。我面临的问题是,从根项目运行时任务会运行多次。
目录结构:
testPro/
├── build.gradle
├── gradle
│ ├── commonClosures.gradle
│ └── wrapper..
├── gradlew
├── projA
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper..
│ ├── gradlew
│ └── settings.gradle
├── projB
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper..
│ ├── gradlew
└── settings.gradle
猫设置.gradle
rootProject.name = 'testPro'
include 'projA','projB'
cat build.gradle
apply plugin: 'java'
apply from: 'gradle/commonClosures.gradle'
cat projA/build.gradle
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
cat projB/build.gradle
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
猫 gradle/commonClosures.gradle
gradle.taskGraph.afterTask {
println "task completed"
}
输出:
~/workspace/ROOT_PROJECT
]$ ./gradlew clean
projA
:clean UP-TO-DATE
task completed
task completed
task completed
:projA:clean UP-TO-DATE
task completed
task completed
task completed
:projB:clean UP-TO-DATE
task completed
task completed
task completed
BUILD SUCCESSFUL
有什么简单的方法来处理这个吗?
最佳答案
如 docs afterTask
将在添加到图中的每个任务之后执行。可以通过操作来完成:
project.tasks.clean.doLast {
println '\n'
}
你想达到什么目的?
它运作良好:
gradle.taskGraph.afterTask {
println "lol"
}
task lol
[opal@opal-mac]/tmp % gradle lol
:lol UP-TO-DATE lolBUILD SUCCESSFUL
Total time: 2.866 secs
编辑
这很容易解释。既然你申请了
commonClosures
致所有 build.gradle
脚本实际上应用了三遍。所以闭包被执行了 3 次。此类关闭应仅适用于 rootProject
的build.gradle
.看看here .
关于java - 在 gradle 中完成任务后添加消息或下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480280/