Maven:在路径中发布带有版本号的结帐

Maven: release checkout with version number in path

我有一个带有发布插件的简单 Maven 项目。我使用像这样的标准程序 mvn release:prepare release:perform -P 配置文件。 这是我对 Maven 发布插件的定义:

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.1</version>
   <configuration>
     <arguments>-f pom.xml</arguments>
     <baseDirectory>${basedir}</baseDirectory>
     <workingDirectory>${basedir}/releases/</workingDirectory>
   </configuration>
</plugin>

每次发布后,我都会在 /release/ 文件夹中获得新的发布版本。 但我不会在以下结构中存储已签出项目的历史记录: release/1.1/ release/1.2/ release/1.3/

etc - 例如在自己的目录中使用发布版本号在 release:perform 上进行结帐。它是一种简单的方法吗,并将发布版本(或标签名称)替换为结帐路径?

release:perform 完成的结帐过程中,变量 ${project.version} 仅保存项目快照版本。

一种方法是在调用 release:perform 时执行 add a goal。这可能是一个 ant 任务,将默认结帐文件夹的内容复制到您想要的位置

您可以这样配置 maven-release-plugin(这是未经测试的代码):

<plugin>
   <artifactId>maven-release-plugin</artifactId>
   <version>2.5.1</version>
   <configuration>
     <arguments>-f pom.xml</arguments>
     <baseDirectory>${basedir}</baseDirectory>
     <goals>antrun:run deploy</goals>
     <!-- use default workingDirectory -->
   </configuration>
</plugin>
<plugin>
    <artifactId>maven-antrun-plugin</artifactId>
    <version>1.7</version>
    <executions>
        <execution>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
    </executions>
    <configuration>
        <target>
            <copy todir="${basedir}/releases/${project.version}">
                <fileset dir="${project.build.directory}/checkout"/>
             </copy>
        </target>
    </configuration>
</plugin>