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?

JBoss AS7部署插件(jboss-as-maven-plugin)

maven 创建后报错

jboss-common-core maven 依赖项