2013-01-12 63 views
15

Heyho釋放或特定模塊,如何跳過在Maven回購

我有一個Maven項目與此scructure:

父:

  • 列表項
  • API模塊
  • module2
  • ...
  • module5
  • 測試
  • 分佈/組件

因此,首先我運行父模塊,然後我運行它建立的API,那麼依賴於該API模塊,則一個測試模塊,其中包含工具模塊進行測試,最後我運行一個程序集/發行版,將一些模塊打包到歸檔中。 由於一些問題,我不能真正改變方式,它迄今爲止完美。

隨着jenkins我發佈到maven回購,但我只想釋放例如API和幾個模塊,而不是測試模塊和分配模塊。 有沒有辦法跳過它們? 不要發佈我真的不需要的東西:/

+0

這是一個多模塊構建?你父母pom.xml有模塊條目嗎?讓像API模塊這樣的模塊成爲父級(父級)? – khmarbaise

+0

是的,多模塊設置完美工作我只是想從Maven回購模塊中排除模塊:P – maxammann

回答

20

爲了正確理解你,你仍然想運行測試模塊,但是你不想部署/釋放它們。 maven-deploy-plugin來救援!神器將仍然建立,但沒有部署。

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-deploy-plugin</artifactId> 
    <version>2.7</version> 
    <configuration> 
     <skip>true</skip> 
    </configuration> 
    </plugin> 

但是,詹金斯發佈插件仍然會釋放所有工件。而不是使用詹金斯發佈插件,想想與maven-release-plugin,這是很容易做到釋放:

mvn release:prepare 
mvn release:perform 

由於default goalsdeploysite,都應該沒問題。

只要確保你在你的根POM有scm標籤:

<scm> 
    <connection>scm:svn|git:https://...</connection> 
    <developerConnection>scm:svn|git:https://...</developerConnection> 
</scm> 

和你的版本控制工具命令(GIT,SVN,...)可上的路徑。

+0

我已經試過這個,但我認爲這是一個問題與詹金斯釋放所有模塊:/ – maxammann

+0

K它可能與部署插件的「正常」部署,但可能不會與jenkins插件:/ – maxammann

+0

我認爲你應該研究一下。詹金斯可能只是使用maven。 Jenkins怎麼可能繞過pom中的設置? –

2

您可以添加一個maven命令行選項來指定要在jenkins中構建的模塊。

-pl,--projects <arg>     Comma-delimited list of specified 
             reactor projects to build instead 
             of all projects. A project can be 
             specified by [groupId]:artifactId 
             or by its relative path. 
+0

這將完全排除這些項目,但我只想跳過maven repo中的部署 – maxammann

+0

在Jenkins中,您可以多次運行maven。在所有的項目上編譯,只發佈一個你想要的版本 –

+0

@DanielKaplan hm jenkins發佈插件只運行一次和所有模塊 – maxammann

0

聚合項目的目的是結合簡單項目的建設需求。如果您的基礎項目具有不同的建築要求,請考慮添加新的聚合器項目。

在您當前的聚合器項目中禁用部署到您的Maven存儲庫,並創建一個僅包含您希望部署的模塊的新聚合器項目。

將這個新項目添加到Jenkins,使其取決於您的原始項目並將其配置爲部署到您的存儲庫。

+0

你的術語似乎是關閉的,你似乎描述的是父項目。項目用於配置,Aggregator項目定義要建立的項目組,有時父項和彙總項目是同一個項目 –

+1

建設需求=需要構建,而不是配置要求/共同性不幸的是,一些文獻未能區分聚合和父母身份,它們服務於不同的目的,最好保持獨立人們認爲他們的項目最多隻能包含一個聚合器。 OP的情況似乎如此。 –