目前,我們的gradle設置適合於在構建完成時發佈到某些maven倉庫。對於特定的客戶,我需要壓縮JAR,許可證文件,pom.xml和ivy.xml文件,然後以zip形式發送。要做到這一點,我只需要定義一個替代位置來發布它。 Gradle站點上的所有文檔似乎都是爲了編寫一套發佈規則,而不是一套替代方案。在gradle中,如何生成ivy.xml和pom.xml文件?
我一直希望簡單地寫一個不同的任務,重點是構建這個客戶特定的zip文件。到目前爲止,我已經收集了所有包含源代碼和可運行代碼的jar文件以及許可證和通知文件。但是我還沒有破解定義本地常青藤資源庫和本地maven資源庫的問題,這只是這個alt任務的一部分。
task alt {
dependsOn subprojects*.tasks*.matching { task -> task.name == 'assemble' }
subprojects.each{project ->
if (project.hasProperty('sourceJar')) {
evaluationDependsOn(project.name)
}
}
File altDir = mkdir("$buildDir/alt")
subprojects.each { project ->
if (project.hasProperty('sourceJar')) {
// Extra the module name from the path of the sub-project
String submodule = project.projectDir.absolutePath.split(File.separator).last()
File subfolder = mkdir(altDir.absolutePath + "/${project.group}/${group}.${submodule}/$version")
project.tasks.withType(Jar).each {archiveTask ->
copy {
from archiveTask.archivePath
from("$rootDir") {
include 'license.txt'
include 'notice.txt'
}
into subfolder
}
}
}
}
}