在gradle中,如何生成ivy.xml和pom.xml文件?

时间:2012-04-12 15:10:47

标签: maven ivy gradle

目前,我们的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
                }
            }
        }
    }
}

2 个答案:

答案 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