2010-07-20 88 views
8

我正在使用兩個配置文件:開發和生產。maven發佈插件忽略發佈配置文件

默認情況下開發應該是活動的;生產應該在我釋放時使用。

在我的pom.xml我有:

[...] 
<plugin> 
<artifactId>maven-release-plugin</artifactId> 
<version>2.0-beta-9</version> 
<configuration> 
    <useReleaseProfile>false</useReleaseProfile> 
    <goals>deploy</goals> 
    <arguments>-Pproduction</arguments> 
</configuration> 
</plugin> 
[...] 
<profiles> 
    <profile> 
    <id>production</id> 
    <properties> 
     <profile.name>production</profile.name> 
    </properties> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <activeByDefault>true</activeByDefault> 
    </activation> 
    <properties> 
    <profile.name>development</profile.name> 
    </properties> 
     [...] 
    </profile> 
[...] 

這是行不通的。
useReleaseProfiles無法正常工作或: http://jira.codehaus.org/browse/MRELEASE-459

的發展概況應始終處於活動狀態,但沒有運行mvn release:perform時。 你如何做到這一點?

[更新]: 我已經看到調試標誌,我的生產配置文件被使用,但也使用開發配置文件,因爲它是activeByDefault。這不能被releaseProfile參數覆蓋。如果強制釋放插件僅使用「生產」配置文件將會很好。

回答

13

maven-release-plugindocumentation

這是一種比從命令行手動調用發佈配置文件更好的方法。原因之一是,因爲發行版中使用的配置文件將記錄在pom.xml中,並與標記的代碼一起存儲。這使得構建過程更容易理解,並且更容易重複,這與項目最初發布的方式完全相同。

如果使用maven-release-plugin舊於2.4請參閱bug阻止使用上述參數。

請注意,如果是多模塊項目,您必須將「releaseProfiles」配置放入根目錄中!有關更多信息,另請參閱this issue

+1

@editor,它更好地寫出bug已經修復,在這裏,作爲一個評論。 – Arun 2013-01-29 20:30:59

+0

@Leif感謝有關此錯誤修復的更新! – devdanke 2014-02-07 07:13:41

+0

即使使用2.5.1,我仍然必須在CLI上手動指定我的配置文件「-Prelease」。 – 2015-03-26 19:46:08

2

我想你應該簡單地通過屬性激活你的配置文件。

<profiles> 
    <profile> 
    <id>production</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>release</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
    <profile> 
    <id>development</id> 
    <activation> 
     <property> 
     <name>build</name> 
     <value>develop</value> 
     </property> 
    </activation> 
    [...] 
    </profile> 
<profiles> 

做你建立使用releaseProfiles配置參數在釋放過程中自動調用配置文件鼓勵執行這樣的事情

mvn -Dbuild=develop package 
mvn -Dbuild=develop test 

mvn -Dbuild=release release:prepare 
mvn -Dbuild=release release:perform 
+0

是的,我也已經知道,它可以設置這樣的配置文件。但這種方式可以被忘記。如果您忘記了它,發佈的軟件包將包含錯誤的配置文件,並且部署將失敗。我想強制發佈插件只使用給定的配置文件。 – Janning 2010-07-25 15:14:06

+0

如果您在發佈插件需要和使用的配置文件中定義一些屬性,則不能忘記它。 – splash 2010-07-26 12:36:16

+0

我不明白你最後的評論。你能向我解釋一下嗎? – Janning 2010-07-30 21:50:08

0

這是一個很舊的帖子,但我最近碰到這個問題。當我將releaseProfiles設置爲稱爲版本的配置文件時,releaseProfile僅適用於我。任何其他配置文件都會產生相同的錯

示例代碼:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-release-plugin</artifactId> 
      <version>2.5.3</version> 
      <configuration> 
       <tagNameFormat>@{project.artifactId}[email protected]{project.version}</tagNameFormat> 
       <autoVersionSubmodules>true</autoVersionSubmodules> 
       <releaseProfiles>release</releaseProfiles> 
       <allowTimestampedSnapshots>true</allowTimestampedSnapshots> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<profiles> 
    <profile> 
     <id>release</id> 
     <properties> 
      <connectionUrl>${scm-base}/tags/${project.artifactId}-${project.version}</connectionUrl> 
     </properties> 
    </profile> 
</profiles>