Maven EAR依赖结构

时间:2017-06-09 07:37:29

标签: java maven java-ee ear

我正在尝试使用最新的JBoss Tools通过Eclipse Neon将EAR部署到Wildfly 10。这是我第一次尝试使用EAR,所以我记录了自己,这就是我想出的结构:

Maven模块:

  • api(类型jar,没有deps):包含接口MyServicePerson
  • ejb(类型ejb,取决于api):包含@Stateless的{​​{1}}实施和MyService @Entity的实施1}}。
  • Person(类型war,取决于war):包含使用api的JAX-RS资源。
  • MyService(类型ear,取决于earejb):EAR模块。

(请参阅此处获取完整资料来源:https://github.com/heruan/maven-ear-example

问题是当我将它部署到Wildfly时,我得到:

war

完整堆栈跟踪:

java.lang.NoClassDefFoundError: Failed to link ejb/MyServiceImpl: api/MyService

我错过了什么?我的目标是让最基本的EAR与其模块共享一个共同的JPA持久性单元。

1 个答案:

答案 0 :(得分:0)

我发现了问题所在:重复.class个文件。看起来像Maven EAR插件不够聪明,以避免重复的依赖,所以你需要明确地将它们设置为provided

例如,示例项目中的解决方案是在api的{​​{1}}中将provided模块设置为war

pom.xml