无法使用gradle在多个项目中发布单个jar

时间:2018-09-23 16:26:45

标签: java gradle

多项目的结构是

Root 
 +---ProjectA
     +---ProjectB
     +---ProjectC
     +    ...

我要在

中发布一个统一的jar文件
task allJar

build.gradle

buildscript {
  repositories {
    mavenLocal()
    maven {
      url "myurl"
      credentials {
        // Credentials needed to pull build dependencies from Nexus
        username "$username"
        password "$password"
      }
    }
  }

}


apply plugin: "maven-publish"
apply plugin: "maven"

allprojects {

  repositories {
      mavenLocal()
      maven {
        credentials {
          username "$username"
          password "$password"
        }
        url "url"
      }

    group 'com.myproject'
    version = '1.0.0-SNAPSHOT'

  }

  subprojects {
   apply plugin: 'java'

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    sourceSets.main.java.srcDir "src/main/java"
    sourceSets.main.resources.srcDirs "src/main/resources"
    sourceSets.test.java.srcDir "src/test/java"
    sourceSets.test.resources.srcDirs "src/test/resources"
    dependencies {

      // string utils
      compile "org.apache.commons:commons-lang3:3.4"
      testCompile "junit:junit"

    }
    compileJava.dependsOn(processResources)
  }

}

subprojects.each { subproject ->
  evaluationDependsOn(subproject.path)
}
task allJar(type: Jar, dependsOn: subprojects.assemble) {
  baseName = project.name
  subprojects.each { subproject ->
    from subproject.configurations.archives.artifacts.files.collect {
      zipTree(it)
    }
  }
}


publishing {
  publications {
    mavenJava(MavenPublication) {
      artifactId = project.name
      from components.java
      artifact allJar
      println "Project Group: " + project.group + "\nProject Name: " + project.name + "\nProject Version: " + project.version
    }
  }

  repositories {
    maven {
      credentials{

        username NEXUS_USER
        password NEXUS_PASS
      }

      url "myurl"

    }
  }
}

问题

发布为

时出现错误
Invalid publication 'mavenJava': multiple artifacts with the identical extension and classifier ('jar', 'null
').

在allJar任务中添加分类器:'all'解决了该问题,但它在根文件夹中创建了2个罐子

  1. build / libs / MyProject-1.0.0-SNAPSHOT.jar
  2. build / libs / MyProject-1.0.0-SNAPSHOT-all.jar

0 个答案:

没有答案