我想使用pv文件的svn修订版号作为其版本。
在pom.xml中,如果我们使用 buildnumber-maven-plugin ,我们需要定义scm存储库url,以便它可以检查存储库并使用buildnumber。
但是我想问一下,当我们将代码签出到我们的系统时,如果不使用scm urls,就没有办法获得buildnumber。由于修订号作为subversion存储在每个文件的属性中。如果我们右键单击文件并转到属性,我们就可以看到它。
我想在pom的版本标记中使用buildnumber,并在其vaersion标记中使用其他模块的buildnumber依赖于它们。
因此,如果我最初可以存储所有的subversion数字,比解析依赖项更早,那么这些颠覆可以放在依赖的模块版本中,也可以放在每个pom文件的版本中。
问题是在插件读取版本号之前解析了依赖关系(这是我认为的),因此它无法解析表达式。
我尝试使用 properties-maven-plugin 在一个文件中编写pom的版本号,然后在依赖于它的其他模块的pom中读取它。但是在开始执行任何插件之前要解决依赖关系。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>properties-maven-plugin</artifactId>
<version>1.0-alpha-2</version>
<executions>
<execution>
<id>pre-clean-config</id>
<phase>validate</phase>
<goals>
<goal>read-project-properties</goal>
</goals>
<configuration>
<files>
<file>${project.basedir}/../app.properties</file>
</files>
</configuration>
</execution>
</executions>
</plugin>
所以,它没有用。
答案 0 :(得分:1)
从Maven 3.2.1开始,您可以定义property ${revision}
which you can use in your versions like this:
<project...>
<groupId>..</groupId>
<artifactId>...</artifactId>
<version>1.0-${revision}</version>
...
结果你需要在调用Maven时给出一个属性,如下所示:
mvn -Drevision=123456 clean package
这也适用于依赖等。目前的一个缺点是你总是从maven的角度创建一个版本。