2012-02-21 103 views
2

我們當前工作的Maven結構構建一個EAR是如下構建多個EAR罐子

工作區

>parent proj (containing root pom.xml) 
    >ear proj 
    >web proj 
    >jar1 
    >jar2 
    >jarN 

現在我們需要來定製這個使得我們建立多個EAR(針對不同需求的選擇集)使用瓶子的組合。

所以建議工作區現在看起來就像這樣:

工作區

>parent proj (containing root pom.xml) 

    >ear projects 
     >ear1 
     >ear2 
    >web projects 
     >web1 
     >web2 

    >component jars 
     >jar1 
     >jar2 
     >jarN 

和我們要挑選的web項目和jar的項目,我們需要ear1項目的pom.xml。

的問題是:

a)是本以上結構可能 - 自命名爲「耳項目」,「網絡工程」,「組件罐子」的文件夾,實際上沒有一個POM和建立什麼

b)ear1 pom.xml是否可以使用相同文件夾以外的工件來構建?

早期的項目ear1與jar1和jar2並行,都是根pom.xml的子模塊。但是在提出的結構中,ear1是使用不是並行的模塊構建的,但是../web projects/web1 ../component jars/jar1等等。

c)有沒有更好的方法來實現這一目標?

+0

a)是的,沒問題b)您是否可以更具體一點,並添加一個您的意思是什麼?c)可能:) – 2012-02-24 08:28:20

+0

@AndrewLogvinov:更新 – shinynewbike 2012-02-24 12:14:20

回答

3

提供的工作區看起來不錯。爲了清楚起見,我會把它放在這裏(注意,耳朵,網絡組件都是空目錄)。

parent (contains root pom.xml) 
|--- ear 
    |--- ear1 (contains ear1 pom.xml) 
    |--- ear2 (contains ear2 pom.xml) 
|--- web 
    |--- web1 (contains web1 pom.xml) 
    |--- web2 (contains web2 pom.xml) 
|--- components 
    |--- jar1 (contains jar1 pom.xml) 
    |--- jar2 (contains jar2 pom.xml) 
    |--- jarN (contains jarN pom.xml) 

由於項目依賴關係取自倉庫(本地或遠程),所以模塊不會位於同一級別。你應該像往常一樣聲明他們的依賴關係。例如,在ear1您可以指定:

<dependencies> 
    <dependency> 
    <groupId>_your_groupId_</groupID> 
    <artifactId>_jar1_artifactId_</artifactId> 
    <version>_jar1_version_</version> 
    <dependency> 
    <dependency> 
    <groupId>_your_groupId_</groupID> 
    <artifactId>_web1_artifactId_</artifactId> 
    <version>_web1_version_</version> 
    <dependency> 
</dependencies> 

我不知道如果我完全理解你的需求,但我會盡力來形容我會做什麼。

您可以使用配置文件指定要構建的項目。例如,假設ear1項目依賴於jar1jar2jar4web2的項目。如果您運行mvn package -P ear1

<profiles> 
    <profile> 
    <id>ear1</id> 
    <modules> 
     <module>components/jar1</module> 
     <module>components/jar2</module> 
     <module>components/jar4</module> 
     <module>web/web2</module> 
     <module>ear/ear1</module> 
    </modules> 
    </profile> 
</profiles> 

,然後Maven會建立僅是在配置文件的<modules>區域中指定的模塊:在這種情況下,你的根的pom.xml文件,你可以指定一個像這樣的配置文件。

+0

我已經在使用配置文件,未知的位給我指定所需的模塊爲'component/jar1'而不是'jar1'。這看起來像我需要的,將測試它並讓你知道。謝謝。 – shinynewbike 2012-02-27 06:45:21

+0

你也可以添加依賴到配置文件。 – wemu 2012-02-27 09:17:22