Java 在gradle中完成任务后添加消息或下一行
我有一个包含子项目projA和projB的项目 如何在执行根项目中的任何任务后添加新行? 我尝试的是: 我编写了一个任务来打印commonClosures.gradle文件中的下一行,并将其包含在模块gradle文件中(apply from:)。我面临的问题是,当从根项目运行时,任务会运行多次 目录结构:Java 在gradle中完成任务后添加消息或下一行,java,ant,groovy,gradle,task,Java,Ant,Groovy,Gradle,Task,我有一个包含子项目projA和projB的项目 如何在执行根项目中的任何任务后添加新行? 我尝试的是: 我编写了一个任务来打印commonClosures.gradle文件中的下一行,并将其包含在模块gradle文件中(apply from:)。我面临的问题是,当从根项目运行时,任务会运行多次 目录结构: testPro/ ├── build.gradle ├── gradle │ ├── commonClosures.gradle │ └── wrapper.. ├── gradlew
testPro/
├── build.gradle
├── gradle
│ ├── commonClosures.gradle
│ └── wrapper..
├── gradlew
├── projA
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper..
│ ├── gradlew
│ └── settings.gradle
├── projB
│ ├── build.gradle
│ ├── gradle
│ │ └── wrapper..
│ ├── gradlew
└── settings.gradle
cat设置。渐变
rootProject.name = 'testPro'
include 'projA','projB'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
gradle.taskGraph.afterTask {
println "task completed"
}
cat build.gradle
apply plugin: 'java'
apply from: 'gradle/commonClosures.gradle'
cat projA/build.gradle
rootProject.name = 'testPro'
include 'projA','projB'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
gradle.taskGraph.afterTask {
println "task completed"
}
cat项目/build.gradle
rootProject.name = 'testPro'
include 'projA','projB'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
gradle.taskGraph.afterTask {
println "task completed"
}
cat gradle/CommonCloses.gradle
rootProject.name = 'testPro'
include 'projA','projB'
apply plugin: 'java'
apply from: '../gradle/commonClosures.gradle'
apply plugin: 'java'
apply from: '../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
有什么简单的方法来处理这个问题吗?就像在后任务中一样,将在添加到图表中的每个任务之后执行。这可以通过以下行动来实现:
project.tasks.clean.doLast {
println '\n'
}
你想达到什么目标
它运行良好:
gradle.taskGraph.afterTask {
println "lol"
}
task lol
[opal@opal-mac]/tmp%gradle lol
:lol最新
哈哈
建设成功
总时间:2.866秒
编辑
这很容易解释。由于将commonClosures
应用于所有build.gradle
脚本,因此实际上应用了三次。所以闭包执行了三次。这种闭包应该只应用于rootProject
的build.gradle
。看一看。你到底在执行任务吗?哦,很抱歉把我搞糊涂了。我是说所有的任务。不仅仅是为了清洁工作。它应该为所有任务提供下一行。是的,当我从子项目的“内部”执行它时,它会起作用。当我从中运行任务时,我希望这样rootProject@smilyface,您能提供一个重现问题的SSCCE吗?它可能位于GH上,例如添加了SSCCE。请检查。谢谢您的更新。它只在我从根项目运行任务时起作用。当试图从模块内部运行时(比如projA),它不会打印消息。