我想使用pom文件的svn修订号作为它的版本。
在pom.xml中,如果我们使用buildnumber maven插件,我们需要定义scm存储库url,这样它就可以检查到存储库并使用buildnumber。
但我想问的是,当我们的系统有签出代码时,没有任何方法可以在不使用scm-url的情况下获得构建号吗。修订号作为subversion存储在每个文件的属性中。如果我们右键单击文件并转到属性,我们可以看到它。
我想在pom的版本标签中使用buildnumber,在依赖关系中在其版本标签中用其他模块的buildnumber。
所以,如果我最初可以存储所有的subversion编号,实际上早于解析依赖项,那么这些子版本可以放在依赖项中模块的版本中,也可以放在每个pom文件的版本中。
问题是,依赖关系在插件读取版本号之前就被解决了(这就是我所认为的),所以它无法解决表达式。
我尝试使用属性maven插件在文件中写入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>
所以,它不起作用。
从Maven 3.2.1开始,您可以定义一个属性${revision}
,可以在以下版本中使用:
<project...>
<groupId>..</groupId>
<artifactId>...</artifactId>
<version>1.0-${revision}</version>
...
这样做的结果是,你需要在调用Maven时给出一个属性,如下所示:
mvn -Drevision=123456 clean package
这也适用于依赖关系等。目前的一个缺点是,您总是从maven的角度创建发布。