我正在尝试为每个项目发布多个 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 。