我正在尝试在 EAR 中构建 EJB。我的 EJB 依赖于 SNAPSHOTS。因此,当我构建 EAR 时,我的结构如下所示:
my-ear-1.0.0-SNAPSHOT.ear
+ META-INF
- application.xml
- MANIFEST.MF
- my-ejb-1.0.0-SNAPSHOT.jar
- third-party-lib-1.0.0-SNAPSHOT.jar
但是,当使用 maven-ejb-plugin 生成其 MANIFEST.MF 时:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ejb-plugin</artifactId>
<version>2.3</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
</manifest>
</archive>
</configuration>
</plugin>
我遇到的问题是 MANIFEST.MF 将 SNAPSHOT 列为它在 Nexus 中的显示方式,而不是 maven-ear-plugin 在构建耳朵时对其命名的方式。
Manifest-Version: 1.0
Build-Jdk: 1.6.0_25
Class-Path: third-party-lib-1.0.0-20121026.140152-21.jar
所以我当然会得到ClassNotFoundException,因为 EJB 类路径正在寻找一个不存在的 jar 文件。
基本上我需要知道:
- 在没有 -SNAPSHOT 格式的情况下,如何让 maven-ear-plugin 将罐子拉入耳朵?
- 如何让 maven-ejb-plugin 在 MANIFEST.MF 中使用 -SNAPSHOT 格式?