我正在为春季靴子做战争包装。制作了提供的spring boot starter tomcat,删除了spring boot maven插件。
但是我仍然可以看到tomcat jdbc和tomcat juli,仅举几例(甚至是junit,但是它可能来自其他自定义依赖项,因此在这个问题上不加赘述)。我正在使用logback,但从入门网站上看到的是slf4j上的log4j。
我可以问一下如何跳过不需要的罐子并使我的包裹保持整洁
答案 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
元素中的版本和范围来构建。
另请参阅: