2012-12-31 102 views
2

我想將超過3個Maven項目(基於HTML,JavaScript和CSS)合併爲一個。我的主項目使用其他項目的依賴項。那麼,如何在不改變這些依賴關係的情況下構建單個項目呢?將不同的Maven Web項目合併到一個項目中

+0

所以你想重新安排你的目錄結構,或者添加Web項目的依賴到郵件項目?或者您想將Web項目作爲模塊添加到主項目中?請詳細說明 – Arpit

回答

4

假設你有一個多模塊項目:

  1. mysite:父POM模塊。
  2. mysite-core:一個ja​​va模塊
  3. mysite-web:一個web資源模塊(javascript,html,...)
  4. mysite-webapp:戰爭模塊

mysite具有packaging pom幷包括其他3 modules

<groupId>mysite</groupId> 
<artifactId>mysite</artifactId> 
<packaging>pom</packaging> 
<modules> 
    <module>../mysite-core</module> 
    <module>../mysite-web</module> 
    <module>../mysite-webapp</module> 
</modules> 

mysite-core使用標準jar packaging

<parent> 
    <artifactId>mysite</artifactId> 
    <groupId>mysite</groupId> 
    <relativePath>../mysite/</relativePath> 
</parent> 
<groupId>mysite</groupId> 
<artifactId>mysite-core</artifactId> 

mysite-web是相似的:

... 
<artifactId>mysite-web</artifactId> 

mysite-webapp包括Java和Web資源模塊的依賴性:

... 
<artifactId>mysite-webapp</artifactId> 
<packaging>war</packaging> 

<dependency> 
    <groupId>mysite</groupId> 
    <artifactId>mysite-core</artifactId> 
</dependency> 
<dependency> 
    <groupId>mysite</groupId> 
    <artifactId>mysite-web</artifactId> 
</dependency> 

隨着從maven-war-pluginoverlays屬性,您的資源添加到戰爭:

<overlays> 
    <overlay> 
     <groupId>mysite</groupId> 
     <artifactId>mysite-web</artifactId> 
     <type>jar</type> 
    </overlay> 
</overlays> 

注:最好有一個flat project layout,如:

    • 父POM模塊
    • 的java POM模塊
    • java的1罐模塊
    • java的2罐子模塊
    • web資源罐子模塊
    • 戰爭模塊

代替分層佈局:

    • 父POM模塊
      • 的java POM模塊
      • java的1罐模塊
      • java的2罐子模塊
      • web資源廣口瓶模塊
      • 戰爭模塊

我注意到,像Eclipse工具不喜歡分層結構(緩慢甚至無休止的版本)。

+0

您能否清楚這一點?起初,我已經低調了,然後我有道理。 也許試圖想出一個更具體的例子,例如mysite [:pom]' - >('mysite-core [:jar]','mysite-css [:war]','mysite-html [:war]','mysite-webapp [:war]')並概述特別是在'mysite [:pom]'和'mysite-webapp [:war]'之間的關係? – aldrinleal

+0

@aldrinleal:更新了我的答案。 – asgoth

+0

謝謝!但是... 不確定倒數第二個pom語義上是否正確。 mysite-core被重新定義爲戰爭文件,並取決於自身 – aldrinleal

相關問題