Maven的发布插件 - 准备创建的快照版本标签,而不是发行版本

问题描述 投票:16回答:12

我有以下项目结构:

  • 骨架 框架父母-POM 框架出头 ...

在框架父母-POM的pom.xml中我已经定义了以下插件:

<plugin>
    <artifactId>maven-release-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
        <branchBase>http://.../svn/REPO/branches/framework</branchBase>
        <tagBase>http://.../svn/REPO/tags/releases/framework</tagBase>
        <tagNameFormat>release-@{project.version}</tagNameFormat>
        <releaseProfiles>release</releaseProfiles>
    </configuration>
</plugin>

而继SCM:

<scm>
    <developerConnection>scm:svn:http://.../svn/REPO/trunk/framework/framework-parent-pom</developerConnection>
</scm>

当我运行下面的命令......

mvn release:prepare -DautoVersionSubmodules=true -Darguments="-DskipTests" -Dresume=false

......一切似乎进展顺利。

本地JAR与发行版本中创建和POM的是很好的更新到下一个快照版本。此外,在SVN,乍一看似乎确定。标签已经与它里面的所有框架项目创建。

然而,看着POM的标签,当我看到他们仍然有初始快照版本版本。然后,这当然会导致执行步骤建立快照版本,而不是发行版本。

我究竟做错了什么?

maven maven-release-plugin
12个回答
9
投票

我发现在Maven释放小插件的问题跟踪MRELEASE-812的解决方法:

在我的情况的变化是:

       <plugin>
         <artifactId>maven-release-plugin</artifactId>
-        <version>2.2.2</version>
+        <version>2.4.1</version>
         <configuration>
           <releaseProfiles>release</releaseProfiles>
           <goals>install animal-sniffer:check deploy site</goals>
         </configuration>
+        <dependencies>
+          <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-api</artifactId>
+            <version>1.8.1</version>
+          </dependency>
+          <dependency>
+            <groupId>org.apache.maven.scm</groupId>
+            <artifactId>maven-scm-provider-gitexe</artifactId>
+            <version>1.8.1</version>
+          </dependency>
+        </dependencies>
       </plugin>

1
投票

只是记录,只是为我工作的解决方法是安德烈亚斯Dangel的加入混帐配置设置解析本地化的git输出的旧行为的解决办法,该命令是这个

git config --add status.displayCommentPrefix true

这里是解决办法的解释:http://jira.codehaus.org/browse/SCM-740?focusedCommentId=341325&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-341325

最后一个提示,这种解决方法仅适用于2.4.2版本,我用2.5测试,这是行不通的


0
投票

这个问题与Maven 3.2.2和Maven插件版本2.5的组合解决。


0
投票

这是我所管理的发布插件来为我工作。我写了下面的脚本。希望这会帮助别人。

# Reads release.properties and extracts properties by key
function prop {
    grep -E "${1}=" ./release.properties|cut -d'=' -f2
}

echo "Performing a release [Dry run]..."    
mvn release:clean release:prepare -DautoVersionSubmodules=true --offline -DdryRun=true

TAG_NAME=$(prop 'scm.tag')

echo "Tagging a release $TAG_NAME..."   
find .. -maxdepth 2 -mindepth 2 -name "*pom.xml.tag" -exec rename -f 's/\.tag$//' {} ";"
find .. -maxdepth 2 -mindepth 2 -name "*pom.xml" -exec git add {} ";"
git commit -m "Release $TAG_NAME"
git tag -a -m "Release $TAG_NAME" $TAG_NAME

DEV_VERSION=$(prop 'project.dev.cp\\:cp-builder')
echo "Creating next development version $TAG_NAME..."
find .. -maxdepth 2 -mindepth 2 -name "*pom.xml.next" -exec rename -f 's/\.next$//' {} ";"
find .. -maxdepth 2 -mindepth 2 -name "*pom.xml" -exec git add {} ";"
git commit -m "Development version $DEV_VERSION"

echo "Pushing changes to GitLab..."
git push --follow-tags
echo "Deploying a release $TAG_NAME..."
mvn release:perform
echo "Cleaning release..."
mvn release:clean

4
投票

我也面临着同样的问题。在我来了,这是因为错误的SCM developerConnection字符串。

<scm>
<developerConnection>scm:svn:http://.../../trunk</developerConnection>
</scm>

我结帐从分行代码和正在执行的释放:准备。

您可以检查您developerConnection路径,它应该与您的代码库的路径。


4
投票

我有一个类似的问题这一点。它被标记快照版本,因为它没有标记之前提交的POM变化。

我发现,如果我用下面的配置选项,它只会工作:

<remoteTagging>false</remoteTagging>
<suppressCommitBeforeTag>false</suppressCommitBeforeTag>

2
投票

如果你正在运行到这个问题,你最有可能遇到https://jira.codehaus.org/browse/MRELEASE-812,将需要改变释放插件(或GIT)的版本,您使用。

HTH,扬


2
投票

这个问题仍然没有得到解决复杂的项目结构。

看到这里的补丁预览:http://jira.codehaus.org/browse/SCM-740


2
投票

如果您看到这个错误使用Maven插件发布的2.5版本,那么你可能会遇到这个错误:http://jira.codehaus.org/browse/MRELEASE-875

如果您的顶层的pom.xml并不在git的根,然后release:prepare不标注前提交POM。

唯一的解决办法似乎是重新安排你的项目结构,饭桶。


1
投票

切割我的第一个版本(这是真的很乱),当我有完全相同的问题。这个问题消失了,第二次 - 所以只是做一个第二(清洁/新鲜)的释放。


1
投票

我有同样的问题。我通过手动编辑标签的POM将其设置为已发布版本规避的问题。然后释放:至少执行工作。

但是,这是我没有什么地方它是从未来的线索一个奇怪的问题。


1
投票

作为一种变通方法,您也可以git config --global status.displayCommentPrefix true输出旧格式,以便Maven可以解析git status命令。

© www.soinside.com 2019 - 2024. All rights reserved.