java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > maven打包排除类不生效maven-compiler-plugin

解决maven打包排除类不生效maven-compiler-plugin问题

作者: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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文