目前,我们的 gradle 设置适合在构建完成后发布到某些 maven 存储库。对于特定客户,我需要压缩 jars、许可证文件、pom.xml 和 ivy.xml 文件,然后将其全部发送到 zip 中。为此,我只需要定义一个备用位置即可将其发布到。gradle 网站上的所有文档似乎都旨在编写一套发布规则,而不是另一套。
我希望简单地编写一个不同的任务,该任务将专注于构建这个客户特定的 zip 文件。到目前为止,我已经收集了所有 jars(包括源代码和可运行代码)以及许可证和通知文件。但是我还没有解决定义本地 ivy 存储库和本地 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
}
}
}
}
}