2012-11-13 54 views
1

我们使用Maven构建一个包含WAR的EAR删除重复的坛子,坛子里被复制在两个EAR的根和WAR的lib文件夹中,我读到了瘦罐子从战争中取出瓶子,但我不要这样做,因为我想保持WAR作为独立单元,
有没有办法以相反的方式去除它并从EAR的根文件夹中删除JARs?
连接是EAR POMMaven的:从EAR

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <version>2.6</version> 
      <configuration> 
       <modules> 
        <webModule> 
         <groupId>com.csv.xyz</groupId> 
         <artifactId>web</artifactId> 
        </webModule> 
       </modules> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
<dependencies> 
    <dependency> 
     <groupId>com.csv.xyz</groupId> 
     <artifactId>web</artifactId> 
     <version>0.0.1-SNAPSHOT</version> 
     <type>war</type> 
     <scope>compile</scope> 
    </dependency> 
</dependencies> 
+0

这有什么特别的理由吗?这是否给你带来麻烦? – maba

+0

唯一的原因,我想保留WAR独立实体,并且能够随时部署它 – Mira

回答

1

我不认为这是因为类加载器架构的一个好主意。如果JAR是WAR的一部分,则它由Web应用程序类加载器定义,这可能会导致多个实例。如果它是EAR的一部分,它由企业应用类加载器定义,这是一个不同的类加载器。

0

要从EAR lib文件夹的依赖,声明依赖作为EAR POM提供,例如去除公地郎咸平:

<dependencies> 
    <dependency> 
     <groupId>commons-lang</groupId> 
     <artifactId>commons-lang</artifactId> 
     <version>2.6</version> 
     <scope>provided</scope> 
    </dependency>  
</dependencies> 

只要确保,如果你有EJB模块他们不不需要依赖!此外webModules不会贡献EAR的根lib文件夹,你有更多的依赖在你的耳朵吗?

+0

我没有EJB,除了上面POM中指定的Web模块外,没有任何其他依赖项! – Mira

+0

mvn依赖关系的输出是什么:tree? –