解决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中无参构造方法的一些核心作用总结

    Java中无参构造方法的一些核心作用总结

    构造方法是一个特殊的方法,用于创建类的实例,构造方法的名称必须与类名相同,并且没有返回类型,这篇文章主要介绍了Java中无参构造方法的一些核心作用,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2026-06-06
  • java、js中实现无限层级的树形结构方法(类似递归)

    java、js中实现无限层级的树形结构方法(类似递归)

    下面小编就为大家带来一篇java、js中实现无限层级的树形结构方法(类似递归)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • mybatis使用foreach标签进行嵌套插入

    mybatis使用foreach标签进行嵌套插入

    数据库插入操作常见于多层架构设计中,本文提供了一个具体的实现方案,涉及三层实体类结构,第一层实体类负责基本数据结构的定义,第二层和第三层实体类则提供更详细的业务逻辑处理,同时,文章还介绍了相应的mapper接口和配置文件设置
    2024-09-09
  • 详解Java单例模式的实现与原理剖析

    详解Java单例模式的实现与原理剖析

    单例模式是Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。本文将详解单例模式的实现及原理剖析,需要的可以参考一下
    2022-05-05
  • JAVA String转化成java.sql.date和java.sql.time方法示例

    JAVA String转化成java.sql.date和java.sql.time方法示例

    这篇文章主要给大家分享了关于JAVA String转化成java.sql.date和java.sql.time的方法,文中给出了详细的示例代码,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。
    2017-03-03
  • SpringMVC的源码解析

    SpringMVC的源码解析

    本文主要介绍了SpringMVC的源码解析。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 简单了解java ORM框架JOOQ

    简单了解java ORM框架JOOQ

    这篇文章主要介绍了简单了解java ORM框架JOOQ,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12
  • spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题

    spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题

    这篇文章主要介绍了spring依赖注入成功但在调用接口的时候拿到的依赖却是null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Spring MVC 响应机制综合实践之页面、数据、JSON 与响应配置处理方法

    Spring MVC 响应机制综合实践之页面、数据、JSON 与响应配置处理方法

    SpringMVC的响应机制包括返回视图、纯文本/HTML、JSON、响应头与状态码控制、重定向与转发、全局响应配置、CORS跨域配置、异常处理与错误响应,这篇文章给大家介绍Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置,感兴趣的朋友跟随小编一起看看吧
    2026-01-01
  • 浅谈spring使用策略模式实现多种场景登录方式

    浅谈spring使用策略模式实现多种场景登录方式

    本文主要介绍了spring使用策略模式实现多种场景登录方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-12-12

最新评论