【Java】SpringBoot项目打包后的jar中为何没有devtools
整个SpringBoot项目在IDEA中通过Spring Initializer创建"spring-boot-devtools"的scope已经是compile(原始值是runtime,特地修改后来测试打完包后是否包含该依赖,结果改或不改都不包含)
"spring-boot-maven-plugin"也只是在打包时排除了lombok的依赖
可是打好的fat jar(可运行jar)的"BOOT-INF/lib"目录里并没有devtools的jar
POM.xml中"spring-boot-devtools"的依赖声明:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>compile</scope>
<optional>true</optional>
</dependency>
POM.xml中用于打fat jar(可运行jar)的"spring-boot-maven-plugin"插件声明:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
你使用的是spring-maven-plugin 对spring项目进行编译,插件在编译时期默认会自动排除spring-devtool包,你可以在pom.xml 中配置参数选择性不排除devtool
参考如下,留意excludeDevtools 参数
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<fork>true</fork>
<includeSystemScope>true</includeSystemScope>
<excludeDevtools>false</excludeDevtools>
</configuration>
</plugin>
你的依赖中已经写明了<scope>compile</scope> 表明了作用域,只在编译期起作用,打包后肯定是不会包括了,而且打包后也没有必要使用这个依赖,这个开发时期热更新使用的 这个打完包后还有用吗,不是在开发阶段热部署方便用的吗?{:17_1080:} devtools 是开发的时候使用的一些热部署/yml代码提示之类的插件,打包后用那玩意 没用啊 kolan9527 发表于 2021-11-24 16:36
你的依赖中已经写明了compile 表明了作用域,只在编译期起作用,打包后肯定是不会包括了,而且打包后也 ...
compile作用域是编译期起作用我知道,它还有个作用就是值为compile的依赖在打那种包含已声明依赖的jar包时会包含进去(打jar包时根据所使用maven插件的不同,打成的jar有的只包含项目本身的class,而有的除了项目本身的class还会将项目所依赖的jar也包含进来,spring-boot-maven-plugin这个maven插件所打的jar恰恰就属于后者,不然所打成的jar包中也不会有那一系列依赖);devtools作用是热更新(实际是自动重启不算完全意义的热更新)我也知道,打包后没必要包含它也是理所当然的,我只是奇怪在满足了会被包含进所打jar包的条件下为何它没有被打进jar包中,这只是一个学习过程中自己突然冒出的一个思考,不用考虑devtools的意义 a13005746827 发表于 2021-11-24 17:52
你使用的是spring-maven-plugin 对spring项目进行编译,插件在编译时期默认会自动排除spring-devtool包,你 ...
我说呢,之前就推测应该是spring-boot-maven-plugin默认排除了devtools,就是不知道是怎么排除的,原来还有个<excludeDevtools>标签,感谢大佬!
TristenC 发表于 2021-11-24 20:27
我说呢,之前就推测应该是spring-boot-maven-plugin默认排除了devtools,就是不知道是怎么排除的,原来还 ...
问题解决了悬赏记得给我啊 :Dweeqw <scope>compile</scope>
你这个域是不是指定了只能再编译时提供啊
页:
[1]