目前,我们的gradle设置适合在构建完成时发布到某些maven存储库。对于特定客户,我需要压缩jar,许可文件,pom.xml和ivy.xml文件,并以zip格式发送。为此,我只需要定义一个备用位置来发布它。 gradle网站上的所有文档似乎都旨在编写一套发布规则,而不是另一套发布规则。
我希望简单地编写一个不同的任务,专注于构建这个客户特定的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
}
}
}
}
}
答案 0 :(得分:3)
这是告诉你如何生成pom的gradle docs。此外,如果您要将该文件安装到本地存储库,则可以使用此blog entry中描述的机制。基本上你所要做的就是
configure(install.repositories.mavenInstaller) {
pom.project {
version '1.0'
artifactId 'your.artifact.id'
groupId 'your.group.id'
}
}
目前看起来不太可能通过gradle生成ivy.xml,但是一旦你有了你的pom文件,就可以使用常春藤本身来生成常春藤文件described here。
答案 1 :(得分:0)
http://www.gradle.org/docs/current/userguide/publishing_ivy.html的第64.5节涵盖“生成常春藤模块描述符文件而不发布”。
文档有点破碎(例如不一致的命名约定)。以下适用于我:
apply plugin: 'ivy-publish'
publishing {
publications {
aoeu(IvyPublication)
}
}
这将生成目标generateDescriptorFileForAoeuPublication
。