現在、私たちの gradle セットアップは、ビルドが完了したときに特定の Maven リポジトリに公開するように調整されています。特定の顧客のために、jar ファイル、ライセンス ファイル、pom.xml、および ivy.xml ファイルを圧縮して、すべてを zip で送信する必要があります。これを行うには、公開する別の場所を定義する必要があります。Gradle サイトのすべてのドキュメントは、代替セットではなく、一連の公開ルールを作成することを目的としているようです。
この顧客固有の zip ファイルの構築に焦点を当てた別のタスクを単純に書きたいと思っていました。これまでのところ、すべての jar (ソースと実行可能なコードを含む) をライセンスと通知ファイルと共に収集しています。しかし、この代替タスクの一部にすぎないローカルのアイビー リポジトリとローカルの Maven リポジトリの定義については、まだ完全に理解していません。
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
}
}
}
}
}