2013-02-15 38 views
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認爲的內部版本號,所以我可以看到構建號爲零的位置是正確的。

關於爲什麼版本號似乎不解析的任何想法?我是否錯誤地實現了這個插件?

感謝 史蒂夫

回答

3

變化{$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 

[email protected]:~/dev/so-example$ grep "<version>" pom.xml | head -1 
    <version>1.0.0-SNAPSHOT</version> 
+1

這對在小版本醒目的錯字,我一直在尋找合適的過去那種。現在我得到了所有棋子的零值,主要的,次要的,增量的,這是不正確的,但我至少得到了一些值,所以這是一個步驟 – 2013-02-15 18:09:09

+0

我添加了一個關於檢查屬性值的註釋,希望它有幫助。 – Anew 2013-02-15 18:53:29

+0

在裝配步驟中正在進行版本信息的過濾或使用。這是一個帶有過濾功能的文件集。 – 2013-02-15 19:55:40

相關問題