当前位置: 首页 > 知识库问答 >
问题:

将log4j maven依赖添加到war,而不在编译时使用它

叶翰林
2023-03-14

我们的应用程序使用slf4j,但依赖于

  1. slf4j api

问题是IDE经常从log4j而不是slf4j导入类。理想情况下,我只希望将slf4j api作为我的应用程序的maven依赖项,并仅在构建war时使用log4j打包slf4j绑定。

到目前为止,我找到了几个解决方案:

  1. 将库添加到WEB-INF/库文件夹。这很糟糕,因为我没有maven依赖控制,必须在我的回购中存储二进制文件,这不是最好的选择。
  2. 使用maven-war插件与覆盖。但据我所知,添加依赖到覆盖将需要声明依赖(至少作为编译)

只依赖slf4j api可以吗?如何将其他依赖项打包到war,而不将它们声明为项目依赖项?

谢谢

共有1个答案

罗晨
2023-03-14

请在运行时范围内简单地指定对slf4j-log4j的依赖关系。

所以在编译和测试期间,运行时范围中的类将不可用。在IDE中它也不应该是可见的——我在IntelliJ中检查了它。

当然,所有具有运行时范围的工件都将放在WEB-INF/lib目录中。

示例:

    ...
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.7.5</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.5</version>
        <scope>runtime</scope>
    </dependency>
    ...
 类似资料:
  • 我正在尝试将protobuf依赖项添加到我的maven项目中。我已经使用mvn install安装了protobuf jar文件:install-file-Dpackaging = jar \-DgeneratePom = true \ < br >-DgroupId = com . Google . proto buf \-DartifactId = proto buf-Java \-Dfile

  • 问题内容: 我在Tomcat中部署了WAR文件。另外我还有一个JAR文件。 是否可以使JAR文件中的类可用于WAR文件中的服务而无需更改WAR文件,或者是否已将其添加到WAR的WEB-INF / lib中? 我尝试将JAR添加到中,但不起作用。启动时,Spring会出现org.springframework.beans.factory.BeanCreationException»java.lang

  • 我在gradle构建过程中出现以下错误: 注意:我使用命令'gradle tasks'来找到任务的名称:'YLI SharedLibrary'。

  • 我正在使用JBOSS EAP 6.1和JDK 1.6。我已将所有依赖项注册为静态模块。我对JDK API有依赖性 在部署期间,我面临以下问题: java。lang.NoClassDefFoundError:javax/crypto/CipherInputStream java。lang.NoClassDefFoundError:org/omg/CORBA/portable/IDLEntity ja

  • 添加依赖 在 pom.xml 中引入 网聚宝监控客户端 的依赖。 <!--网聚宝 监控客户端--> <dependency> <groupId>wangjubao.monitoring</groupId> <artifactId>monitor-client</artifactId> <version>1.4-SNAPSHOT</version> </dependency>