我正在尝试在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
Run Code Online (Sandbox Code Playgroud)
但是,在使用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>
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是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
Run Code Online (Sandbox Code Playgroud)
所以我当然得到ClassNotFoundException,因为EJB类路径正在寻找一个不存在的jar文件.
基本上我需要知道:
所以我最近有一些发型经验,因为我们正在使用一种技术(比如Tomcat 6)开发项目,但必须部署到另一项技术(比如Oracle 10g R3).抛开不同的应用程序服务器,多次我不得不降级Java EE规范,从Java EE 5降级到J2EE 1.4,并且在做,必须搜索网络以确定我的构建路径中应该存在哪些API版本以确保兼容性.我开始撰写一份清单,希望有人能够帮助填写或更正.看看这个:
WS,Web服务API,?,?,1.3
SAAJ,SOAP with Attach,1.2,?,?
JAXP,XML Processing,1.2,?,?
JAXB,XML绑定,?,
2.0,2.2 StAX,XML的流式API,?,?,?
JAX-WS,XML Web服务,?,2.1,2.2
JAX-RPC,XML远程过程,
1.1,1.1,1.1 JAX-RS,XML RESTful服务,x,x,1.1
JAXR,XML注册表,1.0,?,?
JSF,Java Server Faces,仅
JSP ,1.2,2.0 JSP,Java Server Pages,2.0,2.1,2.2
EL,Expression Lang,
2.0,2.1,2.2 JSTL,标准标记库,1.1,1.2,1.2
Servlet,Servlet API规范, 2.4,2.5,3.0
EJB,Enterprise Java Bean,2.1,3.0,3.0 JPA,Persistence API,x,x,2.0
JNDI,命名目录,1.2,?,?JDBC,数据库连接,3.0,?,?JavaMail,Email,1.3,1.4 ,?
Connector,J2EE Connector,1.5,1.5,1.6 JAF,Activation Framework,1.0,1.1,1.1