【日常记录】SpringBoot打JAR包,作为其他项目依赖时

本文介绍了在公司产品研发和项目交付过程中遇到的一个问题,即SpringBoot项目打包成jar包后,作为依赖引入到其他项目时,类无法正常使用。问题的原因在于maven打包插件的配置。解决方案包括移除`spring-boot-maven-plugin`插件的`repackage`目标,以及使用`maven-jar-plugin`和`maven-dependency-plugin`将依赖单独打包到`lib`目录下,确保类路径正确。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目场景:

由于公司中产品研发和项目交付是不同部门,在产品打包后,对核心产品进行封装,提供给项目交付部二次开发。


问题描述

产品包:产品业务核心功能所在的jar包
交付包:基于产品包进行开发符合客户需求的交付包

SpringBoot 项目打包后,作为依赖提供给其他包,进行使用,由于maven插件原因,生成的jar包被引用后无法使用该jar包中的类。但是类是存在于产品包的,交付包引入idea飘红。


原因分析:

查询后发现是maven打包插件导致的

以下是之前打包项目的maven插件

  <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>2.1.4.RELEASE</version>
            <executions>
                <execution>
                    <goals>
                        <goal>repackage</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>

解决方案:

    <!-- 作为依赖给二开项目时 使用本打包方式-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

如果需要把产品包中依赖单独打一份,可以用以下插件,会把产品包的所有依赖,单独复制到项目的target/lib目录下。

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.2.0</version>
                <configuration>
                    <archive>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <useUniqueVersions>false</useUniqueVersions>
                            <classpathPrefix>lib/</classpathPrefix>
                        </manifest>
                    </archive>
                </configuration>
            </plugin>
            <plugin>  <!--在打包阶段将依赖的jar包导出到lib目录下-->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <type>jar</type>
                            <includeTypes>jar</includeTypes>
                            <outputDirectory>${project.build.directory}/lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值