maven打包排除类不生效 maven-compiler-plugin
问题
有个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的时候强行编译了启动类。
因此直接跳过编译
<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>