Публиковать только JAR в Maven Repo - PullRequest
0 голосов
/ 09 мая 2019

Я хочу загрузить сгенерированный файл 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 Ответ

1 голос
/ 09 мая 2019

На основе ответов на аналогичный вопрос и в этом сообщении с форума Gradle: решение состоит в том, чтобы исключить все артефакты, которые не являются 'jar', из конфигурации archives.Таким образом, uploadArchives будет загружать только Jar-артефакты, пропуская все остальные созданные артефакты /

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

Это похоже на ваше собственное решение, основанное на артефакте 'type'.

...