读取pom文件的rivision数

时间:2014-08-28 11:31:56

标签: maven svn pom.xml osgi-bundle properties-file

我想使用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> 

所以,它没有用。

1 个答案:

答案 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的角度创建一个版本。