Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle maven发布插件不';不允许设置版本_Gradle_Maven Publish - Fatal编程技术网

Gradle maven发布插件不';不允许设置版本

Gradle maven发布插件不';不允许设置版本,gradle,maven-publish,Gradle,Maven Publish,我需要使用“maven publish”插件发布工件的帮助。我之所以使用它,是因为我的下一步是为项目发布几个工件,“maven”插件在这种情况下几乎不可用。所以请不要建议使用它。问题是,如果我使用变量来设置版本,那么gradle会错误地失败。如果我指定固定值,它可以正常工作,但是如果我使用变量,它就不起作用。如何将版本从变量传递到发布 相关代码: println "project.version = $project.version" ext.artifactVersion = String.v

我需要使用“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).

感谢大家关注这个问题。我发现了这个问题,并在这里发布了结果,希望它能帮助一些人。 问题的原因是版本不能包含空格。在我的例子中,版本包含我没有注意到的尾随空格。它看起来像是Gradle修剪从生成的pom读取的值,然后比较它以检查值是否更改。希望这能帮助别人节省时间

ext.artifactVersion = String.valueOf(project.version).trim();