2

「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).
4

1 に答える 1

3

問題を調査していただきありがとうございます。私は問題を見つけ、ここに結果を投稿して、誰かの助けになることを願っています. バージョンにスペースを含めることができないという問題の理由。私の場合、バージョンには気付かなかった末尾のスペースが含まれていました。生成された pom から読み取った値を Gradle がトリムし、それを比較して値が変更されたかどうかを確認しているようです。これが誰かが時間を節約するのに役立つことを願っています.

ext.artifactVersion = String.valueOf(project.version).trim();
于 2014-11-26T15:44:02.067 に答える