Плагин Gradle Maven-Publish не позволяет установить версию
Мне нужна помощь с публикацией артефакта с помощью плагина maven-publish. Я использую его, поскольку мой следующий шаг - публикация нескольких артефактов для проектов и плагина 'maven', который вряд ли пригодится для этого случая. Поэтому, пожалуйста, не предлагайте его использовать. Проблема в том, что если я использую переменную для установки версии, Gradle завершается ошибкой. Это работает нормально, если я указываю фиксированное значение, однако, если я использую переменную, это не работает. Как я могу передать версию из переменной в публикацию?
Связанный код:
println "project.version = $project.version"
ext.artifactVersion = String.valueOf(project.version);
println "artifactVersion = $artifactVersion" // to check that value is correct
publishing {
publications {
//publishArtifact(project)
maven(MavenPublication) {
groupId project.group
artifactId project.ext.artifactId
println artifactVersion
String artifactVersion2 = artifactVersion
//version "1248" // works
//version artifactVersion // doesn't work
//version "$artifactVersion" // doesn't work
//version ''+artifactVersion // doesn't work
//version '1248' // works
//version
version "${artifactVersion}" // doesn't work
from project.components.java
}
}
}
Выход:
project.version = 1248
artifactVersion = 1248
1248
:prj:generatePomFileForMavenPublication
:prj:compileJava UP-TO-DATE
:prj:processResources UP-TO-DATE
:prj:classes UP-TO-DATE
:prj:jar UP-TO-DATE
:prj:publishMavenPublicationToMavenLocal FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':prj:publishMavenPublicationToMavenLocal'.
> Failed to publish publication 'maven' to repository 'MavenLocal'
> Invalid publication 'maven': supplied version does not match POM file (cannot edit version directly in the POM file).
1 ответ
Спасибо всем за рассмотрение вопроса. Я нашел проблему и опубликовал здесь результат, чтобы надеяться, что это кому-то поможет. Причина проблемы в том, что версия не может содержать пробелы. В моем случае версия содержала завершающий пробел, который я не заметил. Похоже, Gradle обрезает значение, читая его из сгенерированного pom, а затем сравнивает его, чтобы проверить, изменилось ли значение. Надеюсь, что это поможет кому-то сэкономить время.
ext.artifactVersion = String.valueOf(project.version).trim();