我的春季战靴太大了,我想进行一些优化。 SPring boot可以选择与java -jar
进行战争,这就是为什么lib-provided
(所有provided
依赖)仍然在战争中,即使那里不需要依赖(我永远不会以独立方式运行它。我可以以某种方式禁用这个聪明的功能,以便我可以节省一些空间吗?
更新:我正在使用Maven和spring boot maven插件。
答案 0 :(得分:10)
默认情况下,Spring Boot Maven插件将重新打包您的应用程序到可执行的WAR / JAR中。
默认情况下,原始(即不可执行)工件重命名为 .original ,但也可以使用自定义分类器保留原始工件。参考Spring Documentation
例如:
如果您的应用程序名为MyApplication,并且您尝试将其打包为WAR,则会执行以下步骤:
MyApplication-0.0.1-SNAPSHOT.war.original
MyApplication-0.0.1-SNAPSHOT.war
。MyApplication-0.0.1-SNAPSHOT.war.original
(Spring启动可执行文件)do: block
(非可执行申请)您可以一起删除Spring Boot Maven插件,也可以使用Non-Executable版本。
答案 1 :(得分:1)
请勿使用Spring-Boot重新打包插件,如果您永远不会将其独立运行。 使用您的常规maven war插件(不包括提供的依赖项),这对于已部署的工件就足够了。
答案 2 :(得分:0)
您可以根据以下文档更新您的pom文件:
https://docs.spring.io/spring-boot/docs/current/maven-plugin/examples/exclude-dependency.html
唯一的问题是你不能做"排除所有"
例如:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludeGroupIds>com.packagename,com.secondpackage</excludeGroupIds>
<excludeArtifactIds>myartifact,artifactname2</excludeArtifactIds>
</configuration>
</plugin>
</plugins>
</build>
答案 3 :(得分:0)
我有类似的问题。
下面是我添加的用于删除lib提供的jars的解决方案
Please comment all the tomcat dependencies in the pom.xml or in build.gradle which eventually removes the jars in the lib-provided folder.
如果在本地运行应用程序时遇到任何问题,则将tomcat / jboss或任何其他服务器lib文件夹添加到类路径中。