【问题标题】:JBOSS dependencies for project using maven使用 maven 的项目的 JBOSS 依赖项
【发布时间】:2012-09-06 10:08:49
【问题描述】:

这应该很简单,但无法弄清楚。我有一个使用 Maven 构建的 Web 项目,将部署在 JBOSS-EAP 5.1 服务器上。我应该在我的 pom.xml 中添加什么,以便 Maven 在构建时可以访问 JBOSS EAP 库?

我可以使用特定的依赖项或插件吗?

【问题讨论】:

    标签: jakarta-ee maven jboss jboss5.x


    【解决方案1】:

    Jboss 软件包现在(并且已经有好几年了)在

            <repository>
                <id>jboss-repository</id>
                <name>JBoss Repository</name>
                <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url>
            </repository>
    

    【讨论】:

      【解决方案2】:

      (以下是 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)提供的。

      【讨论】:

        【解决方案3】:

        考虑到JBoss是一个EE容器,添加JavaEE依赖就足够了。

        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-api</artifactId>
            <version>6.0</version>
            <scope>provided</scope>
        </dependency>
        

        提供的范围可确保在将应用程序部署到服务器后使用 JBoss 自己的库。

        【讨论】:

          【解决方案4】:

          AFAIK 这是 EAP 6 的一项功能,即使在那时也是实验性的。查看来自here 和here 的更多信息:

          对之前版本的一个重大改进是,EAP 6 附带一个 Maven 存储库,其中包括所有与 EAP 相关的 Maven 文物。缺少的 Maven 存储库是一个很大的缺点 以前的 EAP 版本。所需的 Maven 工件必须手动进行 从 EAP 发行版部署到您自己的本地 Maven 存储库或进入您的企业 Maven 存储库,如 Nexus 或 神器。

          所以不,我认为 Jboss EAP 5.X 不存在这样的存储库。

          这意味着实际上您有以下选择,从最推荐到最不推荐:

          • 拥有一个 Intranet 存储库,例如 Nexus 或 Artifactory,并在那里安装这些项目。然后,您可以将它们称为 pom.xml 中的依赖项。建议使用此选项。
          • 仅将它们本地安装到每个开发人员本地 maven 存储库中。您将为此使用 mvn install-file,每个开发人员都需要自己执行此操作。之后,每个依赖项都可以像其他依赖项一样从 pom 中引用。
          • 在 pom 上使用系统范围,直接指向存储在硬盘驱动器上某处的库。这将是一个脆弱的设置,很容易破坏。

          将库存储在您的 Intranet 存储库中并使用它应该不会太难。为开发人员提供 Intranet 存储库是您无论如何都应该使用的最佳实践。

          【讨论】:

          • 看看我上面做了什么。只是使用了一个通用的 Java EE 依赖项,而不是一个特定的 JBOSS 依赖项。您的答案最接近我的要求,因此已将其标记为已接受的答案。
          • 是的,仅使用通用 JEE 依赖项是推荐的方式,并且仅在绝对必要时使用 JBoss-specifics。我在回答中提出了相同的建议,但由于不符合所要求的内容而对其进行了更改。很高兴结果是这样:)
          【解决方案5】:

          您必须首先确定您的项目依赖项到底是什么,并将它们作为依赖项添加到您的pom.xml 中。现在确定 jboss 可用的所有内容,并将这些依赖项的范围设为&lt;scope&gt;provided&lt;/scope&gt;,这样它就不会与war 捆绑在一起。在构建期间,maven 必须从 maven 存储库中获取 jar。

          【讨论】:

          • 这是一种好的(手动)方式,但是将所有 JBoss 依赖项定义为提供的范围可能更容易,只需一个依赖项,例如 org.jboss.as:jboss-eap:5.1.0.GA :pom(及其相关依赖项)在提供的范围内:所以没有人做过这项工作?
          猜你喜欢
          • 1970-01-01
          • 2012-04-21
          • 2013-04-24
          • 1970-01-01
          • 1970-01-01
          • 2018-10-20
          • 2014-05-25
          • 2011-12-01
          • 1970-01-01
          相关资源
          最近更新 更多