带有不必要的jar的Spring Boot War文件

时间:2019-03-20 13:36:02

标签: spring maven spring-boot

我正在为春季靴子做战争包装。制作了提供的spring boot starter tomcat,删除了spring boot maven插件。

但是我仍然可以看到tomcat jdbc和tomcat juli,仅举几例(甚至是junit,但是它可能来自其他自定义依赖项,因此在这个问题上不加赘述)。我正在使用logback,但从入门网站上看到的是slf4j上的log4j。

我可以问一下如何跳过不需要的罐子并使我的包裹保持整洁

1 个答案:

答案 0 :(得分:0)

Maven具有依赖项“范围”的概念。您可能知道范围test,该范围用于单元测试的依赖关系,不应将其纳入最终产品中。将此范围用于junit

您需要的是Tomcat依赖项的范围provided。这告诉Maven:“不包括它;运行代码时,其他人将确保此依赖关系在类路径上。”

当您的一个依存关系仍使用log4j进行记录时,依存关系log4j-over-slf4j是必需的。 log4j-over-slf4j包含将这些调用重定向到logback的代码。

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

正确的解决方案是在 POM的dependencyManagement元素中定义具有正确范围(和版本)的依赖项。当任何POM要求此group + artifactId时,将使用此定义。因此,即使Spring Boot具有某种深层次的依赖性,您的WAR仍将使用dependencyManagement元素中的版本和范围来构建。

另请参阅: