我有一个版本为0.0.1-SNAPSHOT的项目,当我们通过TeamCity构建它时,我们还得到一个build.vcs.number属性,它是触发构建的Subversion修订版。
在我们的程序集中,我们创建一个名为foo-distribution-0.0.1-SNAPSHOT.zip的zip文件,但我想知道是否有一种方法可以将build.vcs.number属性插入到工件名称中给foo-distribution-0.0.1.12345-SNAPSHOT.zip?
内置属性是否只是版本号的数字部分,还是其他一些分割-SNAPSHOT部分的方法?
编辑:我已经尝试将pom.xml版本设置为$ {my.version} -SNAPSHOT,然后在属性中定义my.version - 除了Maven Release Plugin之外,这个版本适用于所有情况,它抱怨它无法解析版本(可以理解的是,它无法自动猜测下一个开发版本)。
答案 0 :(得分:37)
我意识到这个问题有点过时,但我遇到了类似的情况,这就是我解决问题的方法:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
</execution>
</executions>
</plugin>
这个build-helper插件的“解析版”mojo将会为您提供以下属性,您可以根据需要使用这些属性:
parsedVersion.majorVersion
parsedVersion.minorVersion
parsedVersion.incrementalVersion
parsedVersion.qualifier
parsedVersion.buildNumber
这应涵盖所有您想要的版本“部件”。我目前正在使用它来构建chrome扩展,其中清单版本不能包含“-SNAPSHOT”,并且必须最多4个以点分隔的数字。在我的用例中,我使用这种组合来产生所需的结果:
"version":"${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}"
所以,我基本上剥离了“-SNAPSHOT”,所以我的扩展的本地开发副本将正确安装进行测试。你可以用这些作品构建你想要的任何东西。 =)
答案 1 :(得分:1)
对于那些希望做更多事情或想要从内部版本号中删除SNAPSHOT的人来说,这个插件非常有帮助 http://dev.sphere.io/http-api-projects-carts.html#set-line-item-custom-type
我特别发现这个有用
通过将正则表达式替换应用于值
来设置属性<project>
...
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>human.version</name>
<value>$\{project.version}</value>
<regex>-SNAPSHOT</regex>
<replacement> pre-release development version</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
...
</project>
答案 2 :(得分:0)
对于那些希望在其版本中使用4个数字(x.y.z.a)的用户,以下是配置Build Helper Maven Plugin的方法。
想法是将x.y.z.a-SNAPSHOT
替换为x.y.z-a
,这将允许构建助手插件解析buildNumber
。
antrun
插件仅在此处用于调试目的。
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>regex-property</id>
<goals>
<goal>regex-property</goal>
</goals>
<configuration>
<name>modified.version</name>
<value>${project.version}</value>
<regex>\.([0-9]+)-SNAPSHOT</regex>
<replacement>-$1</replacement>
<failIfNoMatch>false</failIfNoMatch>
</configuration>
</execution>
<execution>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
<configuration>
<versionString>${modified.version}</versionString>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.1</version>
<executions>
<execution>
<phase>validate</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<echo>Major: ${parsedVersion.majorVersion}</echo>
<echo>Minor: ${parsedVersion.minorVersion}</echo>
<echo>Incremental: ${parsedVersion.incrementalVersion}</echo>
<echo>Qualifier: ${parsedVersion.qualifier}</echo>
<echo>BuildNumber: ${parsedVersion.buildNumber}</echo>
<echo>----------------</echo>
<echo>Next Major: ${parsedVersion.nextMajorVersion}</echo>
<echo>Next Minor: ${parsedVersion.nextMinorVersion}</echo>
<echo>Next Incremental: ${parsedVersion.nextIncrementalVersion}</echo>
<echo>Next BuildNumber: ${parsedVersion.nextBuildNumber}</echo>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
在版本为7.0.0.29-SNAPSHOT的项目上运行mvn validate
:
[INFO] --- build-helper-maven-plugin:3.0.0:regex-property (regex-property) @
[INFO] --- build-helper-maven-plugin:3.0.0:parse-version (parse-version) @
[INFO] --- maven-antrun-plugin:1.1:run (default) @
[INFO] Executing tasks
[echo] Major: 7
[echo] Minor: 0
[echo] Incremental: 0
[echo] Qualifier:
[echo] BuildNumber: 29
[echo] ----------------
[echo] Next Major: 8
[echo] Next Minor: 1
[echo] Next Incremental: 1
[echo] Next BuildNumber: 30