解决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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
解决springboot接入springfox-swagger2遇到的一些问题
这篇文章主要介绍了解决springboot接入springfox-swagger2遇到的一些问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2024-07-07SpringBoot+Mybatis-plus+shardingsphere实现分库分表的方案
实现亿级数据量分库分表的项目是一个挑战性很高的任务,下面是一个基于Spring Boot的简单实现方案,感兴趣的朋友一起看看吧2024-03-03Java编写时间工具类ZTDateTimeUtil的示例代码
这篇文章主要为大家详细介绍了如何利用Java编写时间工具类ZTDateTimeUtil,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下2023-11-11
最新评论