2011-08-26 62 views
0

我有一個包含多個模塊的Maven Java EE項目。模塊中的Maven配置文件

PROJECT 
--EJB 
--WEB1 
--WEB2 
--EAR 

現在我想創造出編譯輪廓和包括WEB1和一個配置文件,其中包括兩個

要排除/包括從構建模塊,包括我在主POM想要的子模塊.xml根據選定的配置文件。這工作正常。

問題是EAR模塊中的依賴關係。

如何排除模塊WEB1或WEB2。重新定義配置文件部分不起作用。

的問題是:有沒有辦法來控制項目的模塊中的依賴關係,根據所選配置文件

編輯:

是我的錯,我在,而不是作爲創建標籤直接在根

回答

-1

有一個已經被問過這樣的問題在下面的鏈接。也許它可以幫助:

Different dependencies for different build profiles in maven

+0

我不認爲這真的是我的問題的解決方案。當我在主pom中包含依賴關係WEB2時,我得到循環引用(在將模塊僅包含在EAR pom中之前)。兩個Web項目都引用了EJB項目(我的真實項目更復雜,JPA,DAO,FACADE,TO,2xWEB,EAR等模塊更多)我不想在主項目中包含依賴關係,但僅限於根據選定的配置文件在EAR中感謝您的幫助 – Yves

4

排除基於配置文件的模塊是不可能的,但包含有特殊功能「combine.children」的使用工作,因爲行家3.0.2,在http://www.sonatype.com/people/2011/01/maven-how-to-merging-plugin-configuration-in-complex-projects/

如此描述你必須定義EAR的最低含量爲默認值,並與輪廓你的耳朵模塊中添加依賴/模塊方式如下:

<project ....> 
    ... 
    <name>EAR</name> 
    ... 
    <dependencies> 
     <dependency>EJB</dependency> // specify groupId, artifactId, version, type ... 
     <dependency>WEB1</dependency> 
    </dependencies> 
    <profiles> 
     <profile> 
      <id>build-with-WEB2</id> 
      <dependencies> 
       <dependency>WEB2</dependency> // specify groupId, artifactId, version, type ... 
      </dependencies> 
      <build> 
       <plugins> 
        <groupId>org.apache.maven.plugins</groupId> 
        <artifactId>maven-ear-plugin</artifactId> 
        <version>${maven-ear-plugin.version}</version> 
        <configuration> 
         <modules combine.children="append"> 
          <webModule> 
           <groupId>...</groupId> 
           <artifactId>WEB2</artifactId> 
           <bundleFileName>WEB2.war</bundleFileName> 
           ... 
          </webModule> 
         </modules> 
        </configuration> 
       </plugins> 
      </build> 
     </profile> 
    </profiles> 
    <build> 
     ... 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>${maven-ear-plugin.version}</version> 
       <configuration> 
        ... 
        <modules> 
         <ejbModule> 
          <groupId>...</groupId> 
          <artifactId>EJB</artifactId> 
          <bundleFileName>EJB.jar</bundleFileName> 
          ... 
         </ejbModule> 
         <webModule> 
          <groupId>...</groupId> 
          <artifactId>WEB1</artifactId> 
          <bundleFileName>WEB1.war</bundleFileName> 
          ... 
         </webModule> 
        </modules> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 
</project>