Maven:javaee-api vs jboss-javaee-6.0

时间:2013-03-20 07:59:06

标签: java maven jboss dependencies java-ee-6

我想要一个用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

是不是更可取

谢谢!

2 个答案:

答案 0 :(得分:21)

标准api瘫痪了,i。即方法体丢失了。测试结果证明了这一点。我曾经遇到过这个陷阱,对此并不满意。

因此建议使用另一个包作为参考。

您可以仔细查看Adam Biens Blog

如果确实需要,您还可以为不同的部署环境创建配置文件。但是,基本上我同意,遗憾的是这不是一个非常令人愉快的情况。

如果遇到测试问题,可以查看this thread

编辑:
顺便说一下,从现在开始这可能是非常有意义的。对于 Java EE 7 source

的javaee-(web-)api,这个问题已经消失了。

答案 1 :(得分:2)

第一个使用java-api依赖的解决方案是正确的方法:在理想情况下,您的应用程序不应该关注服务器环境。对于单元测试,您可以使用Arquillian,这可以帮助您在“家”测试企业bean而不会头疼。如果你正在使用jboss-javaee,你确定你的应用程序将在jboss上部署并在另一台服务器上正常工作吗?