我有一个项目,我需要打破版本号并在构建清单文件时访问它的组件。在做了一些搜索之后,我发现了build-helper-maven-plugin,并认为我的问题已经解决了。我将插件添加到主POM中,如下所示。
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<phase>validate</phase>
<id>parse-version</id>
<goals>
<goal>parse-version</goal>
</goals>
<configuration>
<propertyPrefix>parsedVersion</propertyPrefix>
</configuration>
</execution>
</executions>
</plugin>
此时的项目版本是3.0.0-SNAPSHOT。我想查看所有部分(虽然在最终版本中我可能不会全部使用它们)所以我将这些行添加到我的清单文件中。
<value name="majorVersion">${parsedVersion.majorVersion}</value>
<value name="minorVersion">{$parsedVersion.minorVersion}</value>
<value name="incrementalVersion">${parsedVersion.incrementalVersion}</value>
<value name="versionQualifier">${parsedVersion.qualifier}</value>
<value name="parsedBuildNumber">${parsedVersion.buildNumber}</value>
建成后,我得到了这个。
<value name="majorVersion">0</value>
<value name="minorVersion">{$parsedVersion.minorVersion}</value>
<value name="incrementalVersion">0</value>
<value name="versionQualifier">3.00.0-SNAPSHOT</value>
<value name="parsedBuildNumber">0</value>
值标记实际上是一个XML标记,清单文件中有一个结束值标记,我不得不删除它们,因为它们弄乱了显示。
所以增量版本似乎是正确的,虽然我不是那么自信,因为主要版本不正确,它没有找到次要版本,并且限定符作为整个版本号返回,而不仅仅是我预期的SNAPSHOT作品。我可以看到构建数为零的位置是正确的,因为我们没有Maven认为的内部版本号。
关于为什么版本号似乎没有解析的任何想法?我是否错误地实现了此插件?
感谢 史蒂夫
答案 0 :(得分:4)
将{$parsedVersion.minorVersion}
更改为${parsedVersion.minorVersion}
您何时检查属性值?确保您在示例中的validate
阶段之后执行此操作,或者如果您希望它处于同一阶段,请确保在您用于检查属性值的插件之前发生build-helper-maven-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>
</tasks>
</configuration>
</execution>
</executions>
</plugin>
在build-helper-maven-plugin
之后,我在mvn validate
的输出中看到了这一点:
[INFO] --- build-helper-maven-plugin:1.7:parse-version (parse-version) @ so-example ---
[INFO]
[INFO] --- maven-antrun-plugin:1.1:run (default) @ so-example ---
[INFO] Executing tasks
[echo] Major: 1
[echo] Minor: 0
[echo] Incremental: 0
[echo] Qualifier: SNAPSHOT
[echo] BuildNumber: 0
anew@buddha:~/dev/so-example$ grep "<version>" pom.xml | head -1
<version>1.0.0-SNAPSHOT</version>