我正在尝试在EAR中构建一个EJB。我的EJB依赖于SNAPSHOT。因此,当我构建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文件中列出的版本号与在构建ear时maven-ear-plugin指定的版本号不同。这个版本号是从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文件。
基本上我需要知道以下两点:
- 如何让maven-ear-plugin在没有-SNAPSHOT格式的情况下将jar包打入ear中?
- 如何让maven-ejb-plugin在MANIFEST.MF中使用-SNAPSHOT格式?
maven-jar-plugin
相似的问题,同样地,<useUniqueVersions>false</useUniqueVersions>
是解决方法,干杯。 - tomasz_kusmierczyk