Maven:javaee-api 与 jboss-javaee-6.0
Posted
技术标签:
【中文标题】Maven:javaee-api 与 jboss-javaee-6.0【英文标题】:Maven: javaee-api vs jboss-javaee-6.0 【发布时间】:2013-03-09 05:29:23 【问题描述】:我想要一个用 maven 构建的 Java JEE6 项目,我想要它标准
所以,我把它放在我的 pom.xml 中:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
像这样的项目,它应该在每个兼容的 JEE6 容器(jboss、geronimo、glashfish 等)中运行
那么,为什么存在这个jboss依赖呢?
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>3.0.2.Final</version>
<scope>provided</scope>
</dependency>
如果我使用它,我是否与 jboss 绑定,所以我只能将这个服务器与这个应用程序一起使用?
总是使用标准的 javaee-api 不是更好吗?
谢谢!
【问题讨论】:
【参考方案1】:标准 api 已失效,即。 e.缺少方法主体。测试时会出现这种情况。我曾经遇到过这个陷阱,并对此不太满意。
因此建议使用另一个包作为参考。
您可以仔细查看Adam Biens Blog
如果您确实需要,您还可以为不同的部署环境制作配置文件。但是,基本上我同意,遗憾的是,这不是一个非常愉快的情况。
对于测试方面的问题,您可以查看this thread。
编辑: 顺便说一句,因为现在这可能很有趣。对于 Java EE 7 (source)
的 javaee-(web-)api,此问题已解决【讨论】:
请注意,org.jboss.spec
依赖项只是 API 依赖项。它们不会以任何方式将您与 JBoss 平台联系起来。
供以后参考 - 这个悖论经常出现以下错误。 java.lang.ClassFormatError: Absent Code attribute in method that is not native or abstract in class file
【参考方案2】:
第一个解决java-api依赖的方法是正确的:理想情况下你的应用程序不应该关心它工作的服务器环境。对于单元测试,您可以使用Arquillian,它可以帮助您在“家”中轻松测试企业 bean。如果您使用的是 jboss-javaee,您确定您的应用程序将在另一台服务器上部署并正常工作,而不是 jboss?
【讨论】:
以上是关于Maven:javaee-api 与 jboss-javaee-6.0的主要内容,如果未能解决你的问题,请参考以下文章
Spring+SpringMVC+MyBatis+Maven+js+Bootstrap+freemaker
如何在 maven 项目中使用 smartics-jboss-modules maven 插件
jboss-as-maven-plugin 无法部署到远程 JBoss AS7?