1

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

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

谢谢史蒂夫

4

1 回答 1

5

更改{$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>
于 2013-02-15T16:44:24.270 回答