2010-05-18 77 views
1

我想从头开始使用m2eclipse插件创建一个eclipse项目来帮助解决依赖关系。Eclipse + m2eclipse插件+ EAR模块依赖关系

该项目包括以下模块:

测试耳 测试EJB 测试战

耳朵同时引用其他项目,及POM文件已经准备就绪,在每个项目的工作。

不过我有一个情况:

而不是仅仅的Maven构建我的项目,我希望能够将耳朵从Eclipse导出,并有一个工作项目,所以我可以把它的热部署一台服务器。

但我有一个问题... ejb使用外部jar(jbpm),在pom中正确指定了依赖关系,它出现在“Maven Dependencies”用户库定义中,而且我没有编译错误。

但是为了成功导出EAR,我必须将jar(jbpm)添加到ejb清单文件中。转到项目属性“Java EE Module Dependencies”我只有条目“Maven Dependencies”lib,选择它不会将任何信息添加到清单文件中。

之后,导出EAR将显示EAR根中的依赖jar文件,但打开包含的EJB会显示该清单根本没有类路径条目。

如果部署EAR,则在EJB中的ClassNotFoundException上的信息失败,该信息位于依赖关系jar中的类中。

为了避免这种情况,我可以将jar包括到EAR模块(project-> properties-> Java EE Module Dependencies)中,然后我可以将它添加到EJB中,并且相应地更新清单文件。

但是该项目将会有大量的罐子,我不想将它们全部手工包含在EAR中,然后在每个项目中选择它们。

我知道那些条目在.settings/org.eclipse.wst.common.component文件中,但不应该maven插件在EAR项目中自动更新它?至少在Java EE的模块依赖关系,所以我可以检查每个子项目的罐子(EJB,战争,...)

感谢

回答

0

如果我理解正确,你要打包所有3这些库在您的EJB中用于生成的EAR文件中。如果您的EAR项目的包装类型为ear并且您的EJB模块的依赖关系已正确指定,并且类型为ejb那些第三方库应该自动包含在生成的EAR文件中。您也可以在EAR中指定一个自定义lib目录。

例子:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 

    <modelVersion>4.0.0</modelVersion> 

    <groupId>yourGroup</groupId> 
    <artifactId>test-ear</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <!-- We want the resulting artifact to be an .ear file --> 
    <packaging>ear</packaging> 

    <dependencies> 
     <!-- Internal dependencies --> 
     <dependency> 
      <groupId>yourGrup</groupId> 
      <artifactId>test-ejb</artifactId> 
      <version>1.0.0-SNAPSHOT</version> 
      <!-- We have an ejb dependency here - take care of it! --> 
      <type>ejb</type> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <configuration> 
        <version>5</version> 
        <!-- put all 3rd party libs into the lib directory --> 
        <defaultLibBundleDir>lib</defaultLibBundleDir> 
       </configuration> 
      </plugin> 
     </plugins> 
    </build> 

</project> 

所以这不应该有什么M2E IMO。您可能必须在Eclipse中更新项目配置。