我有一個基於java的gradle插件,它爲我們的gradle項目執行一些常見配置。現在,我想添加喜歡的任務(目前存在於我們的build.gradle每個項目)在基於java的插件中創建gradle任務
task javadocJar(type: Jar) {
classifier = "javadoc"
from javadoc
}
我需要的是如何做到這一點在Java的Gradle基於插件的提示。
在另一個插件我使用project.getTasks().create("myTask", MyTask.class);
其中MyTask
延伸AbstractTask
並具有@TaskAction
方法來履行職責已註冊的任務。但是我發現沒有辦法使它適應我想要處理上面的示例。
我試圖谷歌的解決方案,但直到現在我沒有找到一個有益的soution,因爲我發現的一切都是使用groovy或類似的東西,直接在build.gradle中剪切。
提前致謝!
看起來像我找到了解決辦法,至少對Javadoc任務...
Task javadocTask = project.getTasks().getByName("javadoc");
project.getTasks().create("javadocJar", Jar.class, task -> {
task.dependsOn(javadocTask);
task.setClassifier("javadoc");
task.from(javadocTask);
});
這似乎工作......但現在我有下一個任務的gradle問題:
task sourcesJar(type: Jar, dependsOn: classes) {
classifier = 'sources'
from sourceSets.main.allSource
}
到現在爲止我還沒有找到一種方式來獲得一隻手在Java中的sourceSets
varialbe。
提前致謝! :)
迴應asettoufs評論:
你鏈接都需要與子項目項目的文檔。我所擁有的是多個不相關的單個項目。對於那些我們有一個已經應用了一些插件並配置它們的插件。所以這些項目只需應用我們的插件即可擁有通用配置。
我們的插件是用java編寫的。而且應該繼續是java。現在我們想將一些更常見的構建配置的東西移動到插件 - 例如上面的一些基本任務。
您看過https://docs.gradle.org/current/userguide/multi_project_builds.html#sec:defining_common_behavior您能否更詳細地解釋一下您想要做的事情,因爲它不清楚。也許顯示一些代碼? – Adonis
更新了問題 – Dodge