Gradle - 从单个项目生成和安装多个jar

时间:2015-01-31 12:20:47

标签: maven gradle

我能够构建我需要的罐子 - 但是使用gradle install我得到了错误

  

POM不能有多个具有相同类型的工件   分类。 Alr eady有MavenArtifact a:jar:jar:null,试图添加   MavenArtifact a:jar:jar:null。

根据文档,为每个存档设置不同的 baseName 可以解决此问题,但不会解决此问题。

如果重要的话,我已经尝试过Gradle 2.2.1。

相关的build.gradle

task package1 (type: Jar) {
    baseName = "a1"
    include "**/packageA/**"
}

task package2 (type: Jar) {
    baseName "a2"
    include "**/packageB/**"
}

task package3 (type: Jar) {
    baseName "a3"
    include "**/packageC/**"
}
artifacts{
    archives package1,package2,package3

}

我不想为Maven POM设置不同的分类器或类型。这是唯一的选择吗?

其他参考: http://forums.gradle.org/gradle/topics/how_to_publish_multiple_artifacts_w_sources_per_project

1 个答案:

答案 0 :(得分:1)

我根据https://gradle.org/docs/current/userguide/publishing_maven.html

中描述的方法使用gradle publish工作了
task package1 (type: Jar) {
    baseName "a1"
    version "0.1"
    from (sourceSets.main.output){
    include "com/packagea/**"
    }
}

task package2 (type: Jar) {
    baseName "a2"
    from (sourceSets.main.output){
    include "com/packageb/**"
    }
}

// We use the publishing task instead of gradle install to deploy the jar into the local MAVENREPO
publishing {
    publications {
        publisha1(MavenPublication) {
            groupId 'com.my'
            artifactId 'a1'
            version '0.1'
            artifact package1 
        }
        publishb1(MavenPublication) {
            groupId 'com.my'
            artifactId 'b1'
            version '0.1'
            artifact package2 
        }
}