Плагин 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();
Другие вопросы по тегам