这应该很简单,但无法弄清楚。我有一个使用Maven构建的Web项目,并将部署在JBOSS-EAP 5.1服务器上。我将什么添加到我的pom.xml中,以便Maven在构建时可以访问JBOSS EAP库?使用maven的JBOSS项目依赖项
是否有我可以使用的特定的依赖项或插件?
这应该很简单,但无法弄清楚。我有一个使用Maven构建的Web项目,并将部署在JBOSS-EAP 5.1服务器上。我将什么添加到我的pom.xml中,以便Maven在构建时可以访问JBOSS EAP库?使用maven的JBOSS项目依赖项
是否有我可以使用的特定的依赖项或插件?
AFAIK这是EAP 6的一项功能,甚至在这方面也是实验性的。从here和here查看更多信息:
一个宏伟提高到以前的版本,即EAP 6个 附带一个Maven仓库,其中包括所有的EAP相关的Maven 文物。缺少的maven仓库是 以前的EAP版本的一大缺点。所需的Maven工件必须手动从EAP分发部署到您自己的本地Maven 存储库或您的企业Maven存储库,如Nexus或 Artifactory。
所以不,我不认为这样的存储库存在Jboss EAP 5.X.
这意味着,在实践中,你有以下选择,从最值得推荐到最低:
将库存储在您的Intranet存储库并使用它应该不会太难。无论如何,为开发者提供Intranet回购是最佳实践。
您必须首先确定您的项目依赖项到底是什么,并将它们作为依赖关系添加到您的pom.xml
中。现在确定jboss提供的所有东西,并将这些依赖的范围设为<scope>provided</scope>
,以便它不与war
捆绑在一起。在构建时,maven将不得不从maven仓库中取出瓶子。
这是很好的(手动)方式,但是可以更容易地将所有JBoss依赖性定义为只提供一个依赖项,如org.jboss.as:jboss-eap:5.1.0.GA:pom(和它的在所提供的范围内:所以没有人做过这样的工作? – Donatello
考虑到JBoss是一个EE容器,添加JavaEE依赖应该足够了。
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
提供的范围可确保在将应用程序部署到服务器后使用JBoss自己的库。
(下面就是OP erroneously included in the question答案)
我到底做了什么是添加以下的依赖,以我的POM:
<dependency>
<groupId>javax.j2ee</groupId>
<artifactId>j2ee</artifactId>
<version>1.5</version>
<scope>provided</scope>
</dependency>
没有直接回答我问(我特别提到了JBOSS),但它提供了我需要编译的所有Java EE API。因为它没有实现任何API,所以我无法运行任何东西 - 这是由我的Java EE应用服务器(本例中为JBOSS)提供的。
看看我上面做了什么。刚刚使用了一个通用的Java EE依赖项,而不是特定的JBOSS项。您的回答最接近回答我所问的问题,因此将其标记为已接受的答案。 – CodeClimber
是的,只使用通用的JEE依赖是推荐的方法,只有在绝对必要时才使用JBoss特定的方法。在我的回答中,我有同样的建议,但由于没有真正符合要求而改变了它。很高兴它的工作方式:) – eis