只发布JAR到Maven仓库

时间:2019-05-09 11:17:31

标签: java gradle maven-plugin

我想将生成的jar文件上传到packagecloud.io。

我缩短的build.gradle

jar {
  archiveName "$project.name-$project.version-SNAPSHOT.jar"
}

distTar {
  archiveName 'dist.tar'
}

//project.configurations.archives.artifacts.clear()
artifacts {
  archives( file( "$buildDir/libs/$project.name-$project.version-SNAPSHOT.jar" ) )
}

uploadArchives {
  repositories.mavenDeployer {
    pom.version = project.version + '-SNAPSHOT'
    configuration = configurations.deployerJars
    repository( url:'packagecloud+https://packagecloud.io/mycompany/central' ){
        authentication password:pw
    }
  }
}

jar.finalizedBy uploadArchives

当我运行gradlew distTar时,jar文件会与tar一起生成,并上传到存储库中,但是构建失败,但有以下例外:

> Task :compileJava NO-SOURCE
> Task :compileGroovy UP-TO-DATE
> Task :processResources UP-TO-DATE
> Task :classes UP-TO-DATE
> Task :jar
> Task :startScripts
> Task :distTar

> Task :uploadArchives
Could not transfer artifact io.mozaiq:feature-state-verticle:pom:0.1-20190509.110559-1 from/to remote (packagecloud+https://packagecloud.io/mozaiq/central): Upload failed: {"error":"Validation failed: Unknown Java::Version::UnsupportedPackaging"}
Could not transfer artifact io.mozaiq:feature-state-verticle:tar:0.1-20190509.110559-1 from/to remote (packagecloud+https://packagecloud.io/mozaiq/central): Upload failed: {"error":"Could not understand this request, please contact support@packagecloud.io"}

> Task :uploadArchives FAILED

因此,由于某种原因,它尝试不仅上传jar文件,而且还上传所有生成的人工制品。

如何限制仅发布到jar文件?

1 个答案:

答案 0 :(得分:1)

基于来自Gradle论坛的similar questionthis post的回答:一种解决方案是从archives配置中排除所有不是“ jar”的工件。这样,uploadArchives将仅上传Jar工件,而跳过所有其他产生的工件/

configurations.archives.artifacts.removeAll{
    it.extension != 'jar'
}

这类似于您自己的基于工件“类型”的解决方案。