2015-10-05 22 views
0

我已經有一些特殊的源文件夾取決於我們的客戶和我們現在就要到Maven,所以我有一些問題的一個項目...Maven的:型材+模塊

我在想,如果正確對待指定源將與每個版本被定義爲每一個客戶一個特殊的輪廓去,每個配置文件將在所有客戶特定的源將被定義的模塊:

<profiles> 
    <profile> 
     <id>client1</id> 
     <modules> 
      <module>modules/client1</module> 
     </modules> 
    </profile> 
</profiles> 

我需要一個可以描述的東西:「好的,如果客戶端是client1,附上這個源文件夾,如果客戶端是client2附加這個其他文件夾「。有沒有辦法將Maven配置爲「附加」源文件夾?因爲我們似乎可以覆蓋build-helper-maven-plugin。另外,如果我在模塊中添加所有源,我的路徑有問題,因爲我需要將我的源文件夾定義爲<source>../../WEB-INF/src</source,並且我的所有測試都陷入混亂,看起來這是一種解決方法。我需要一些線索來了解清潔方法來設計我的結構。

[編輯] 我的文件夾結構是這樣的:

myApp/plugin1/src 
myApp/plugin2/src 
myApp/pluginN/src 
myApp/WEB-INF/generalSrc 
myApp/pom.xml 
myApp/clients/myclient1/plugin1/src 
myApp/clients/myclient1/plugin2/src 
myApp/clients/myclient1/pom.xml 
myApp/clients/myclient2/plugin1/src 
myApp/clients/myclient2/pom.xml 

所以我想避免使用像<source>../../WEB-INF/generalSrc

回答

1

我建議創建一個子模塊父:

App 
    ear-module 
    pom.xml 
    module1  
    pom.xml 
    module2 
    pom.xml 
    module3 
    pom.xml 
    ... 
pom.xml 

然後選擇一個或多個要通過配置文件構建的模塊:

<profile> 
    <id>client1</id> 
    <modules> 
     <module>ear-module</module> 
     <module>module1</module> 
     ... 
    </modules> 
</profile> 

要包括在所述目標封裝模塊即耳模塊(或戰爭)僅必要的模塊,並顯示類似相同的id創建簡檔:

<profile> 
    <id>client1</id> 
    <dependencies> 
    <dependency> 
     <groupId>...</groupId> 
     <artifactId>module1</artifactId> 
     <version>...</version> 
     <type>ejb or jar</type> 
    </dependency>     
    </dependencies> 
    … 
<profile> 

第二步是更重要的,但第一將節省您構建未使用模塊的時間。

+0

感謝您的回覆。我有這個問題是我的源文件都放在這樣的: '對myApp/MyFolder中/ plugin1/src目錄 對myApp/MyFolder中/ plugin2/src目錄 對myApp/WEB-INF/generalSrc 對myApp /客戶端1/specialFolder/plugin1/src' 因此,如果我在myApp/client1下創建我的模塊,源文件夾將類似於../../WEB-INF/generalSrc,這是一個問題... – MarcosTonina

+0

我的意思是僅基於模塊。因此,每個有源文件夾的元素都是一個獨立的模塊,並帶有自己的pom.xml文件。當然,一個模塊(例如client1)可以有兩個源文件夾,但它可能會造成混淆,並且在包上工作會更容易。重要的一點是避免對源代碼目錄進行操作,而是將所有東西都放在Maven依賴關係上。但是,當然,我不知道你可以在多大程度上修改項目結構,從而使之成爲可能。 – puczo

+0

我想知道爲什麼你在WEB-INF目錄下有一個源代碼?如果我理解正確。或者只有配置文件? – puczo