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