【问题标题】:How to use maven library not Jboss library如何使用 maven 库而不是 Jboss 库
【发布时间】:2014-10-15 14:53:06
【问题描述】:

如何使用 maven 依赖库而不是 Jboss 库?

我的 pom.xml 文件中有以下依赖项:

<properties>
    <jsf.version>2.2.8-02</jsf.version>
</properties>
...
<dependencies>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-api</artifactId>
        <version>${jsf.version}</version>
    </dependency>
    <dependency>
        <groupId>com.sun.faces</groupId>
        <artifactId>jsf-impl</artifactId>
        <version>${jsf.version}</version>
    </dependency>
</dependencies>

但是当我启动 Jboss AS 时,我收到以下消息:

09:49:57,000 INFO [javax.enterprise.resource.webcontainer.jsf.config](MSC 服务线程 1-4)为上下文“”初始化 Mojarra 2.2.6-jbossorg-4 20140501-1134

我认为 Jboss 正在使用它自己的 JSF 库而不是 maven 库

使用 Jboss AS 7.1.1 和 Wildfly 8.1.0 最终版本会发生同样的事情

【问题讨论】:

  • 没有 JSF maven 库。您所拥有的是您的容器(JBoss、Wildfly)确实已经提供了一个您通常不应该更改的 JSF 实现。所以你不应该在你的依赖中添加一个实现或者定义一个&lt;scope&gt;provided&lt;/scope&gt;
  • @khmarbaise 为什么我应该使用提供的?它有什么作用?
  • Provided 会将给定的依赖项打包到您的 war/ear 文件中,因为它是由目标环境提供的。

标签: maven jsf jboss wildfly-8


【解决方案1】:

或者,您可以在创建二进制包或在 Jboss 中配置时将类加载器策略从父优先更改为应用优先。

这将允许在使用 jboss 的 JSF 版本之前检测您的应用程序二进制文件。

对于 WAR 应用程序,您无法控制 Maven 中的类加载器检测,如 here 所述

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2019-06-06
    相关资源
    最近更新 更多