如何在Maven中正确使用Wildfly的罐子?

Edw*_*inW 13 maven wildfly-8

我正在开发一个部署到Wildfly的项目,我正在使用Maven来构建它.这是一个包含多个war/jar/ear文件的复杂项目,因此有一个父pom.xml,其中包含以下内容:

...
<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.wildfly.bom</groupId>
      <artifactId>jboss-javaee-7.0-with-all</artifactId>
      <version>8.1.0.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
...
  </dependencies>
</dependencyManagement>
...
Run Code Online (Sandbox Code Playgroud)

不幸的是,上面的BOM不包括我知道的默认Wildfly 8.1.0.Final发行版中的各种jar文件.特别是,这个问题的原因是cxf-api jar文件.我知道它位于Wildfly的这个位置:

wildfly-8.1.0.Final/modules/system/layers/base/org/apache/cxf/main/cxf-api-2.7.11.jar
Run Code Online (Sandbox Code Playgroud)

但它不是由为Wildfly推荐的BOM管理的.

如何正确地将cxf-api和类似的jar文件添加到项目的pom.xml中,最好不必单独指定每个文件?当然,我可以这样做:

<dependency>
  <groupId>org.apache.cxf</groupId>
  <artifactId>cxf-api</artifactId>
  <version>2.7.11</version>
  <scope>provided</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

但我真的不必为每个已经属于Wildfly的jar文件执行此操作.

是否有我可以导入的BOM?

tma*_*wen 15

WildFly BOM(在其原始版本中称为JBoss Bill of Materials)是一组依赖项,用于增强依赖项目的部署并以某种方式自动化其测试.遗憾的是,它包含 WildFly核心中使用的依赖项,即Application Server.

您真正需要导入的pom.xml(项目描述符)就像您对BOMs pom文件所做的那样,是WildFly父pom.因此,只需将其导入您自己的项目pom中,您就可以通过transitevelly解决您的家属:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.wildfly</groupId>
      <artifactId>wildfly-parent</artifactId>
      <version>8.1.0.Final</version>
      <type>pom</type>
      <scope>import</scope>
    </dependency>
  </dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)

查看目标WildFly 版本中使用的Apache CXF版本,然后选择符合您需求的稳定标记.

  • 只要保持两者,就没有任何缺点.如果您对此表示满意,请不要忘记接受答案;) (2认同)