Maven:个人资料+模块

时间:2015-10-05 20:47:37

标签: java maven module

我有一个项目,根据我们的客户有一些特殊的源文件夹,我们现在要去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 个答案:

答案 0 :(得分: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>

要仅在目标包模块中包含必要的模块,即ear-module(或war),请创建具有相同ID的配置文件,类似于:

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

第二步更重要,但第一步将节省您构建未使用模块的时间。