我正在尝试为每个项目发布多个 Artifact 。

How to upload an existing collection of 3rd-party Jars to a Maven server in Gradle?

我试图应用此解决方案-

我的build.gradle看起来像:https://gist.github.com/anonymous/01b31c26eca7a507c14f

我试图按照文档进行操作:http://www.gradle.org/docs/current/us ...

我得到的是:

出了什么问题:任务':install'的执行失败。无法发布配置“归档”> POM不能有多个具有相同类型和分类器的 Artifact 。已经拥有MavenArtifact my:jar:jar:null,试图添加MavenArtifact my:jar:jar:null。

我的环境:Gradle 2.2.1

建立时间:2014-11-24 09:45:35 UTC内部版本号:无修订:6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a

Groovy:2.3.6 Ant:2013年12月23日编译的Apache Ant(TM)版本1.9.3 JVM:1.7.0_71(Oracle Corporation 24.71-b01)操作系统:Windows 8.1 6.3 amd64

谢谢你的帮助。

最佳答案

您好,目前我遇到了同样的问题,但背景不同。我在我的Java项目中使用了proguard,并且我想使用过时的gradle来创建两个不同的 Artifact 。
我做了一个Proguard任务,正在生成一个模糊的.jar:

    task proguard(type: proguard.gradle.ProGuardTask)
    {
         injars 'build/libs/foundation.jar'
         outjars 'build/libs/foundationObfuscated.jar'
    }

第二次,我们需要将新的 Artifact 添加到默认 Artifact :
artifacts
{
    archives(file: file("$projectDir/build/libs/foundationObfuscated.jar"),
    builtBy: proguard)
            {
                classifier = 'obfuscated'
            }
}

您需要添加与默认名称不同的新“分类器”,这是最重要的事情。在此配置中,我还指定我的存档取决于先前的任务(“proguard”)。
最后,我们可以上传两个 Artifact :
uploadArchives {
    repositories.mavenDeployer {

        pom.groupId = 'com.groupid'
        pom.artifactId = 'artifactid'
        pom.version = "${versionMajorDevelop}.${buildTime()}"

        repository(url: "file://${workingLocalDirArtifact()}")
    }
}

在这里,我明确地希望发布两种不同的 Artifact (通用的 Artifact 和'$ {versionMajorDevelop}。$ {buildTime()}-混淆的 Artifact ')
在本地存储库“workingLocalDirArifact”中,但是您可以使用其他配置。
默认情况下,Gradle将运行proguard任务,并且您将发布多个 Artifact 。

10-06 05:16
查看更多