读取pom文件的rivision编号



我想使用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的角度创建发布。

最新更新