带有不必要的罐子的Spring Boot战争文件



我正在制作春季靴子的战争包装。按照提供的弹簧启动启动器Tomcat,删除了Spring Boot Maven插件。

但我仍然看到Tomcat JDBC和Tomcat Juli仅举几例(甚至是Junit,但这可能是来自其他自定义依赖性,因此为此问题打折)。我正在使用logback,但是我从启动Web中看到了log4j。

我可以问一下,如何跳过不必要的罐子,让我的包裹保持整洁

maven具有依赖项的"范围"的概念。您可能知道用于单位测试依赖项的范围test,该依赖项不应进入最终产品。将此范围用于junit

您需要的是tomcat依赖项的范围provided。这告诉Maven:"不要包括它;当代码运行时,其他人将确保这种依赖性在classPath上。

当您的一个依赖项仍然使用log4j进行日志时,依赖关系log4j-over-slf4j是必要的。log4j-over-slf4j包含将这些调用重定向到logback的代码。

现在,您将面临无法更改范围的情况

此处的正确解决方案是用>您的 pom中的dependencyManagement元素中的正确范围(和版本)定义依赖关系。当任何POM要求此组 Artifactid时,将使用此定义。因此,即使在春季靴的某些深度依赖性中,您的战争也将与dependencyManagement元素的版本和范围进行构建。

另请参见:

  • 依赖范围
  • 依赖管理

最新更新