java - 在 gradle 中完成任务后添加消息或下一行

标签 java ant groovy gradle task

我有一个项目 子项目 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 lol

BUILD SUCCESSFUL

Total time: 2.866 secs



编辑

这很容易解释。既然你申请了commonClosures致所有 build.gradle脚本实际上应用了三遍。所以闭包被执行了 3 次。此类关闭应仅适用于 rootProjectbuild.gradle .看看here .

关于java - 在 gradle 中完成任务后添加消息或下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480280/

相关文章:

java - ANT - 无法加载依赖类 com/jcraft/jsch/Logger

list - 将列表划分为groovy中的子列表

json - Groovy 调用/循环遍历 JSON 对象

groovy - IntelliJ 的 Groovy 控制台有什么问题?

java - notify() 和 notifyAll() 的区别

java - java中for循环的作用域规则

ant - 如果没有命令行参数,Ant 构建会失败

java - 无法使用 swtjar 制作 ant 脚本

java - 在 Youtube HTTP 请求中指定空格字符

java - Android 在尝试从 YouTube 获取数据时崩溃?