构建帮助程序插件而不解析项目版本

时间:2013-02-15 16:30:31

标签: parsing maven build version helper

我有一个项目,我需要打破版本号并在构建清单文件时访问它的组件。在做了一些搜索之后,我发现了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认为的内部版本号。

关于为什么版本号似乎没有解析的任何想法?我是否错误地实现了此插件?

感谢 史蒂夫

1 个答案:

答案 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>