4

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

2 回答 2

3

这是gradle 文档,它告诉您如何生成 pom。此外,如果您希望将该文件安装到本地存储库,您可以使用此博客条目中描述的机制。基本上所有你需要做的

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

目前看起来不可能通过 gradle 生成 ivy.xml,但是一旦你有了 pom 文件,你就可以使用 ivy 本身来生成这里描述的 ivy 文件。

于 2012-06-02T12:40:44.613 回答
0

http://www.gradle.org/docs/current/userguide/publishing_ivy.html的第 64.5 节涵盖“生成 Ivy 模块描述符文件而不发布”。

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

apply plugin: 'ivy-publish'

publishing {
    publications {
        aoeu(IvyPublication)
    }
}

这将生成一个目标generateDescriptorFileForAoeuPublication

于 2013-10-26T17:02:38.530 回答