【问题标题】:In gradle, how can I generate the ivy.xml and pom.xml files?在 gradle 中,如何生成 ivy.xml 和 pom.xml 文件?
【发布时间】:2012-04-24 23:13:57
【问题描述】:

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

【问题讨论】:

    标签: maven ivy gradle


    【解决方案1】:

    这里是gradle docs,它告诉您如何生成 pom。此外,如果您希望将该文件安装到本地存储库,您可以使用blog entry 中描述的机制。基本上你所要做的就是

    configure(install.repositories.mavenInstaller) {
        pom.project {
            version '1.0'
            artifactId 'your.artifact.id'
            groupId 'your.group.id'
        }
    }
    

    目前似乎无法通过 gradle 生成 ivy.xml,但是一旦你有了 pom 文件,你就可以使用 ivy 本身来生成 ivy 文件described here

    【讨论】:

      【解决方案2】:

      http://www.gradle.org/docs/current/userguide/publishing_ivy.html 的第 64.5 节介绍了“在不发布的情况下生成 Ivy 模块描述符文件”。

      文档有些破损(例如不一致的命名约定)。以下对我有用:

      apply plugin: 'ivy-publish'
      
      publishing {
          publications {
              aoeu(IvyPublication)
          }
      }
      

      这将生成一个目标generateDescriptorFileForAoeuPublication

      【讨论】:

        猜你喜欢
        • 2019-10-13
        • 2018-03-20
        • 2013-07-08
        • 2015-05-23
        • 2012-03-14
        • 1970-01-01
        • 2010-12-18
        • 1970-01-01
        • 2020-12-01
        相关资源
        最近更新 更多