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

Spring引导战争文件与不必要的罐子

宋铭
2023-03-14

我正在为我的Spring靴做战争包装。按规定制作spring boot starter tomcat,移除spring boot maven插件。

但我仍然可以看到TomcatJDBC和TomcatJuli,仅举几个例子(即使是junit,但也可能来自其他自定义依赖项,所以在这个问题上不考虑这一点)。我使用的是logback,但我在starter web上看到了slf4j上的log4j。

我能问一下,如何跳过不需要的罐子,保持我的包裹整洁

共有1个答案

袁弘方
2023-03-14

Maven对依赖项有“范围”的概念。您可能知道范围test,该范围用于单元测试依赖项,不应包含在最终产品中。将此范围用于junit。

您需要的是为Tomcat依赖项提供的范围。这告诉Maven:“不要包含它;当代码运行时,其他人会确保这个依赖关系在类路径上”。

log4j-over-slf4j在您的依赖项之一仍然使用log4j日志时是必需的。log4j-over-slf4j包含将这些调用重定向到logback的代码。

现在您将面临无法更改范围的情况,因为它位于其他人的POM中。

这里的正确解决方案是在POM中的依赖管理元素中定义具有正确作用域(和版本)的依赖关系。当任何POM请求此组artifactId时,将使用此定义。因此,即使Spring Boot的某些深度依赖将其拉入,您的WAR也将使用依赖管理元素的版本和范围构建。

另见:

  • 依赖范围
  • 依赖关系管理

 类似资料:
  • 我正在使用Spring Boot(2.0.5.RELEASE)构建一个war文件以部署到weblogic 12c中。我遵循以下教程来做到这一点: https://o7 planning . org/en/11901/deploying-spring-boot-application-on-Oracle-WebLogic-server 但无法在 weblogic 中部署(通过 weblogic 控制

  • 我正在尝试使用Gradle构建一个ear。 我的项目树如下所示: 我注意到war插件的捆绑样例也有同样的问题...提前致谢

  • 有什么不同?我可以在联机主机上部署吗?

  • 我尝试使用Spring Boot 2.0.2从战争转移到罐子,并且在使用故障安全进行maven测试时遇到了问题。 我看到两种错误: > < li> < code > Java . lang . noclassdeffounderror ,其中列出了我的一个bean类 当我在 IntelliJ 中运行这些测试时,一切正常,但它们在 maven 中失败。与此同时,当我回到建立战争而不是罐子时,一切都有

  • 问题内容: 我试图从战争档案中读取文本文件,并在运行时将其内容显示在facelets页面中。我的文件夹结构如下 +战争档案> +资源> +电子邮件> + file.txt 我尝试使用以下代码读取resources / email / file.txt文件夹中的文件 但是问题是当我运行上面代码的方法时,会抛出A。我也尝试使用以下代码行获取文件,但未成功 我仍然得到。这是怎么引起的,我该如何解决? 问

  • 我使用gradle从一个构建了一个war文件,并且我能够使用“java-jar my”运行它。战争'。当我访问应用程序时,静态资产出现故障,日志中出现以下异常: JAVA木卫一。FileNotFoundException:Jar URL无法解析为绝对文件路径,因为它不位于文件系统:war:file:/BUILD\u DIR/BUILD/libs/my中。war*/assets/images/hom