2012-02-24 79 views
4

我想爲Maven的發佈插件的不同目標提供不同的配置選項。故事是這樣的:Maven:針對不同目標的不同配置

我使用Git的SCM。我想要發行版:準備插件在本地執行所有操作,釋放:執行將所有更改一次推送到遠程存儲庫。

我試着做這樣的事情:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.2</version> 
    <executions> 
     <execution> 
      <id>release-prepare</id> 
      <configuration> 
       <pushChanges>false</pushChanges> 
      </configuration> 
      <goals> 
       <goal>prepare</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>release-perform</id> 
      <configuration> 
       <localCheckout>true</localCheckout> 
       <pushChanges>true</pushChanges> 
      </configuration> 
      <goals> 
       <goal>perform</goal> 
      </goals> 
     </execution> 
    </executions> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin</artifactId> 
      <version>1.7-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</plugin> 

的1.7快照版本需要localCheckout =真在所有的工作(http://jira.codehaus.org/browse/SCM- 662)如果有人想知道這件事。

隨着上述所有配置選項中提到的設置被完全忽視,但是當我簡單地指定這樣的設置:

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.2.2</version> 
    <configuration> 
     <localCheckout>true</localCheckout> 
     <pushChanges>false</pushChanges> 
    </configuration> 
    <dependencies> 
     <dependency> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-scm-plugin</artifactId> 
      <version>1.7-SNAPSHOT</version> 
     </dependency> 
    </dependencies> 
</plugin> 

它們適用於這兩種版本:準備以及釋放:執行這是不期望的結果。

編輯

爲了把事情說清楚:當我們使用Git供應鏈管理,我們希望讓所有領導準備釋放本地的,如果你把它也不是沒有道理的操作考慮到本地Git存儲庫無論如何都是完整的repo。但是,當我們實際發佈時,我們希望將所有更改推送到上游存儲庫,以便正確設置所有內容。

任何人都可以幫助我嗎?

+0

你能解釋一下多一點的要求來理解你的願望嗎? – khmarbaise 2012-02-24 12:10:49

回答

-1

首先我必須說,在release:prepare目標期間,所有更改都將在SCM中完成,而不是在release:perform目標中完成。所以問題是爲什麼要以這樣複雜(非maven)的方式來做到這一點?

+1

只是爲了擴展 - maven的第一條規則是你*不*以非maven的方式做事。它永遠不值得。 – 2012-02-24 12:02:10

+0

此外,發佈:發佈是一個目標 - 不是按照Maven定義的階段... – 2012-02-24 12:05:39

+0

@andrewcooke:設置插件提供的配置選項是一種非maven的做事方式?我沒有完全掌握你所做的事情的意圖。 – 2012-02-24 12:17:56

0

如果您需要更改,您必須在發佈期間更改發佈插件原因:執行(goal!)發佈插件將檢出項目的標記狀態並調用其上的部署生命週期。所以這是行不通的。

編輯: 我已經檢查了一個Git項目,並做了一個發佈,它就像我解釋。在發佈期間:準備目標變更將被推送到遠程存儲庫。在發佈期間:執行目標不會將任何內容推送到遠程存儲庫,只會執​​行克隆來檢出標記的版本。

+0

你介意分享你使用的插件版本嗎?我在mvn發佈時正在觀察推送權:準備。另外我使用Maven版本2.2.1 - 這可能是一個Maven版本問題? – 2012-02-24 15:34:43

+0

Ah ..sorry沒有添加信息發佈插件版本2.2.2,如果您使用的是Maven 2.2.1,您應該在您的pom或您的父pom中添加一個pluginManagement區域並定義發佈版本。此外推出期間的推動:準備目標是好的。 – khmarbaise 2012-02-24 15:36:29

+0

呃..在發佈過程中推送:準備就是我想要不發生的事情 - 因此所有的配置模糊。 – 2012-02-26 11:16:52

相關問題