解决maven打包排除类不生效maven-compiler-plugin问题
更新时间:2024年11月30日 14:25:50 作者:HetFrame
总结:在Spring Boot项目B中作为项目A的依赖时,排除启动类不生效的原因是被其他类引用或父POM引入,解决方法是跳过test编译或注释掉@SpringBootTest(classes={BApplication.class})
问题
有个springboot项目B作为另一个项目A的依赖,在B打包的时候需要排除它的启动类。
按照百度的说法,只需要添加以下配置就可以排除掉。
<build>
<!--打包项目包名-->
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<excludes>
<exclude>**/BApplication.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>但是实际打包后发现排除并不生效。
原因
1.排除的类在某个类C中import了,类C要编译就必须编译排除的类,所以要同时排除掉C。
2.parent pom引入了这个类,导致exclude不生效
解决办法
在项目B中写了单元测试,使用了注解
@SpringBootTest(classes={BApplication.class})所以编译test的时候强行编译了启动类。
因此只需要跳过编译test或者注释掉
@SpringBootTest(classes={BApplication.class})<properties>
<!--跳过编译test-->
<maven.test.skip>true</maven.test.skip>
<!--跳过执行单元测试-->
<skipTests>true</skipTests>
</properties><build>
<!--打包项目包名-->
<finalName>${project.artifactId}</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<!--覆盖parent pom的配置-->
<configuration combine.self="override">
<excludes>
<exclude>**/BApplication.java</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
JAVA String转化成java.sql.date和java.sql.time方法示例
这篇文章主要给大家分享了关于JAVA String转化成java.sql.date和java.sql.time的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。2017-03-03
spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题
这篇文章主要介绍了spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-12-12
Spring MVC 响应机制综合实践之页面、数据、JSON 与响应配置处理方法
SpringMVC的响应机制包括返回视图、纯文本/HTML、JSON、响应头与状态码控制、重定向与转发、全局响应配置、CORS跨域配置、异常处理与错误响应,这篇文章给大家介绍Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置,感兴趣的朋友跟随小编一起看看吧2026-01-01


最新评论