2010-08-10 108 views
14

我正在使用maven發行版插件。問題很簡單:我不想在發佈時進行部署:執行。我實際上想要執行一個shell腳本來爲我執行部署。所以,我有兩兩件事要完成:Maven發行版:在不部署的情況下執行並調用外部shell腳本

  1. 不知何故禁用默認的「部署」自發布目標:執行

  2. 某種方式使發行:執行調用的exec:Exec插件執行shell腳本

這裏是我的POM:

<plugin> 
    <artifactId>maven-release-plugin</artifactId> 
    <version>2.0</version> 
    <configuration> 
     <tagBase>svn://saoj-la.dyndns.org/webapp-test/tags</tagBase> 
     <connectionUrl>scm:svn:svn://saoj-la.dyndns.org/webapp-test/trunk</connectionUrl> 
    </configuration> 
</plugin> 

<plugin> 
    <groupId>org.codehaus.mojo</groupId> 
    <artifactId>exec-maven-plugin</artifactId> 
    <executions> 
     <execution> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
     </execution> 
    </executions> 
    <configuration> 
     <executable>/bin/sh</executable> 
     <arguments> 
      <argument>run.sh</argument> 
     </arguments> 
    </configuration> 
</plugin> 

回答

8

我正在使用maven release插件。問題很簡單:我不想在發佈時進行部署:執行。我實際上想要執行一個shell腳本來爲我執行部署。

我必須缺少一些東西,因爲當我讀到這個時,我沒有看到腳本的要點......但是讓我們說我不明白它。

不知從發佈禁用默認的「部署」的目標:進行

release:perform的文檔,您可以使用可選的goals參數指定:

一個空格隔開在部署中執行的目標列表。如果項目具有<distributionManagement>/<site>元素,則默認值爲deploydeploy site-deploy

你也許可以用install而不是deploy

某種方式使發行:執行調用的exec:Exec插件在釋放過程中激活一個配置文件來執行shell腳本

綁定它install。這裏有一種方法可以做到這一點:

<profile> 
    <!-- Profile used when the release plugin executes. --> 
    <id>release</id> 
    <activation> 
    <property> 
     <!-- This property is automatically defined by the Maven release plugin when executing 
      a release. Thus this profile will be automatically enabled when releasing --> 
     <name>performRelease</name> 
     <value>true</value> 
    </property> 
    </activation> 
    <build> 
    ... 
    </build> 
</profile> 

但老實說,你的要求有些不可思議。也許提供更多細節會有所幫助。

+1

使用安裝開關「部署」到「安裝」的任務。謝謝。它應該是足夠的只是要做: 安裝exec:exec​​但釋放:執行不喜歡exec:exec:http://stackoverflow.com/questions/3445396/performrelease-calling-execexec-does-not-work -bug – TraderJoeChicago 2010-08-10 01:29:20

+0

@Sergio好吧,那不是我建議的,我不確定這可以工作。 – 2010-08-10 10:11:20

+0

嘿帕斯卡爾。你的建議也行不通。因爲釋放:執行分叉另一個進程,不知何故配置文件未被激活。另一個問題是標籤,因爲版本:執行是一個目標,而不是一個階段。無論如何:我的解決方案是強制用戶在release:perform後手動調用exec:exec。發佈之後沒有簡單的級聯exec:exec的方法:執行。我不喜歡Maven是這樣的。簡單的事情變得非常困難。用螞蟻你可以完成任何你想要的。並不是說ANT更好,而是尊重KISS原則。 – TraderJoeChicago 2010-08-10 14:39:48

27

有點晚了,但供參考:

爲了您的第1步,您可以禁用行家部署階段被「跳過」選項。點擊here以供參考。

在你可以調用類似的命令行:

mvn release:perform -Darguments="-Dmaven.deploy.skip=true" 
+0

我的用例:將SVN回購遷移到Git,並希望驗證我的pom.xml中的SCM URL。運行'mvn發佈:準備; mvn release:執行-Darguments =「 - Dmaven.deploy.skip = true」'允許我在我的fork中釋放假版本,而不是將僞造品推送到artifactory – 2016-07-19 10:29:48

相關問題