Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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
Java 如何防止在maven发布插件中推送快照版本?_Java_Maven_Maven Release Plugin - Fatal编程技术网

Java 如何防止在maven发布插件中推送快照版本?

Java 如何防止在maven发布插件中推送快照版本?,java,maven,maven-release-plugin,Java,Maven,Maven Release Plugin,我有一个maven项目,有很多模块(以及模块中的模块)。我正在使用maven release plugin来控制pom.xml文件中的版本 当运行命令mvn release:prepare时,插件将推送两个提交,并相应地发送消息:“[maven release plugin]prepare release v0.9.0.38”和“[maven release plugin]prepare for next development iteration”。这里的第二个只是快照版本 以下是maven发

我有一个maven项目,有很多模块(以及模块中的模块)。我正在使用maven release plugin来控制pom.xml文件中的版本

当运行命令
mvn release:prepare
时,插件将推送两个提交,并相应地发送消息:“[maven release plugin]prepare release v0.9.0.38”“[maven release plugin]prepare for next development iteration”。这里的第二个只是快照版本

以下是maven发布插件的设置:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-release-plugin</artifactId>
            <version>2.5.3</version>

            <configuration>
                <tagNameFormat>v@{project.version}</tagNameFormat>
                <autoVersionSubmodules>true</autoVersionSubmodules>
                <checkModificationExcludes>
                    <checkModificationExclude>pom.xml</checkModificationExclude>
                    <checkModificationExclude>*/pom.xml</checkModificationExclude>
                </checkModificationExcludes>
                <branchBase>master</branchBase>
            </configuration>
        </plugin>
    </plugins>
</build>

org.apache.maven.plugins
maven发布插件
2.5.3
v@{project.version}
真的
pom.xml
*/pom.xml
主人
推送时,我也将标记设置为远程git项目(您可以在
v@{project.version}
中看到它),因此我需要明确地推送提交,但我不希望它推送快照版本(例如0.9.0.38-snapshot)

编辑:

问题是: 因为我通过运行
mvn发布:准备

e、 g.提交如下所示:

[maven发布插件]为下一次开发迭代做准备
[maven发布插件]准备发布版本v0.9.0.38
(重构)清理代码
[maven发布插件]为下一次开发迭代做准备
[maven发布插件]准备发布版本v0.9.0.37
(功能)添加了I18N支持

这看起来非常难看,并且在每次更改时强制执行三次提交是一个非常糟糕的解决方案,仅用于不手动地增加pom文件的次要版本

我需要什么?
  • 每次提交增量项目版本前(包括所有模块)
  • 并将标记设置为远程git存储库
  • 它应该由一个带有自定义消息的提交来完成

如何实现这一点?

要仅更新版本,您可以使用
release:updateversions
,然后手动提交


还列出了
release:prepare
suppressCommitBeforeTag
选项,听起来它应该防止提交。

所描述的行为是有意的-插件在释放模块后增加模块的版本,这是正常的。因此,主要的建议是在定制之前三思而后行

如果您使用的是Git,可以设置为
false
,以避免推送。之后,您可以回滚上次提交并推送更改

git reset HEAD~ --hard
git push origin master
如果你解释了为什么你认为第二个提交是多余的,那么建议更实用。 此外,如果您对更改不确定,则始终可以使用switch

更新:

  • 做你的改变
  • mvn版本:set-DnewVersion=-DgenerateBackupPoms=false
  • git提交-m“您的评论”
  • git标签
  • 推送提交/标记
  • 这些步骤可以很容易地聚合到脚本文件中,以避免重复工作


    另一种选择是,您可以选择,这也可能很有用。

    即使您找到了一种方法,您的解决方案也不会是传统的,也不会让您的同事直接理解。如果这不是一个很好的理由,你不应该改变Maven发布插件的核心工作。这到底是什么问题?这是pom文件中的一个更改,应该提交,当然在git推送的情况下…?将pom.xml的版本更新到新版本。将其推送到git存储库,并设置标记。只推一次提交。
    发布:更新版本
    只更新快照版本
    suppressCommitBeforeTag
    导致错误:如果不先提交工作副本,则无法执行远程标记或分支。我认为可能是因为启用了“remoteTagging”。需要禁用它才能使
    suppressCommitBeforeTag
    正常工作。但您确定更新版本只更新快照版本吗?我很确定我以前用过它来更新任何版本。文档中说它是
    prepare
    使用的版本更新,只是没有提交任何内容是的,“远程标记”已启用,这就是我编辑问题的原因。@Fonnadema,请正确描述您想要实现的目标?您是否只需要发布并避免版本更改?或者你在一些构建自动化中使用它,比如竹子之类的东西。我编辑了我的问题,并写下了我需要实现的东西。请复习新版。