我正在尝试使用m2eclipse插件从头开始创建一个eclipse项目,以帮助解决依赖关系。
该项目包括以下模块:
测试耳 测试EJB 测试战
ear引用了其他两个项目,并且pom文件已准备好并在每个项目中工作。
我仍有一种情况:
我希望能够从eclipse导出耳朵并拥有一个有效的项目,而不仅仅是maven构建我的项目,因此我可以将其热部署在服务器中。
但我有一个问题...... ejb使用外部jar(jbpm),在pom中正确指定了依赖关系,它出现在“Maven Dependencies”用户lib定义中,并且我没有编译错误。< / p>
但是要成功导出EAR,我必须将jar(jbpm)添加到ejb清单文件中。转到项目属性“Java EE Module Dependencies”我只有条目“Maven Dependencies”lib,选择它不会向清单文件添加任何信息。
之后,导出EAR将在EAR根目录中显示依赖jar文件,但打开包含的EJB会显示清单根本没有类路径条目。
在依赖jar中的类上,部署EAR然后失败并显示有关EJB中的ClassNotFoundException的信息。
为了绕过这个,我可以将jar包含在EAR模块中(project-&gt; properties-&gt; Java EE Module Dependencies),然后我可以将它添加到EJB中,并相应地更新清单文件。
但是该项目将有大量的罐子,我不想将它们全部包含在EAR中,然后在每个项目中选择它们。
我知道这些条目位于.settings / org.eclipse.wst.common.component文件中,但不应该在EAR项目中自动更新它吗?至少在Java EE模块依赖项上,我可以检查每个子项目上的jar(ejb,war,...)
由于
答案 0 :(得分:0)
如果我理解正确,您希望在生成的EAR文件中打包EJB使用的所有第三方库。如果您的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中更新项目配置。