对我来说,这实际上是不太可能的,但是在网上似乎没有关于将JBoss提供的依赖项导入到Maven管理的Java EE应用程序中进行部署的直接答案。
AFAIK有两件事与这个问题有关,那就是外部(从JVM的意义上) JBoss客户端的jboss-as-client工件和带有巨大的<dependencyManagement>块的jboss-as-component-matrix工件,它定义了JBoss使用的库的版本。后一个工件非常有用,因为我可以使用Maven的导入范围来正确设置所有版本。缺少的(AFAIK)类似于jboss-as-client,但用于已部署的Java应用程序。一些东西,我可以依赖于provided作用域,并将所有东西放在类路径中,包括与平台相关的API(如EJB或JMS)和特定于AS的东西(如EJB-ext或jboss-messaging),以及可能来自lib、lib/endorsed和(主要) common/lib目录的一些其他东西。我知道更好的做法(与宗教兼容)可能是明确地说明模块中使用的依赖项,但我询问的方式对我来说更实用(对不起),至少对于真正使用许多标准API的Java EE应用程序是这样。
我真的很好奇你处理这种挑战的方式。我使用的是AS的5.1.0.GA版本。
发布于 2012-04-13 19:04:24
您必须提供您自己的(基础架构) maven项目,它只是打包了所有提到的依赖项,并且您的所有JBoss项目都依赖于这个具有provided作用域的基础架构项目。
但是,您不应该只针对规范jars而不是具体的实现进行编译吗?
喜欢
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>跳到在http://arquillian.org/guides/getting_started/上第一次出现“JavaEE6API”。
发布于 2012-04-15 21:56:33
您不会喜欢这个答案,但是除了使用provided作用域之外,由于这些库都是由JBoss在运行时提供的,所以这并不是您的事。任何未声明的传递依赖的类将由不同的类加载器加载(假设),并与应用程序类很好地共存。
对于不太好的耦合类,@MichalKalinowski说的是真的。
https://stackoverflow.com/questions/9839689
复制相似问题