maven、springboot项目编译打包本地jar、第三方jar包

0. 引言

一般我们在maven项目中都是通过引入pom坐标的形式来引入第三方jar包,但某些场景下,第三方是直接提供的jar包文件,这就需要我们从本地引入第三方包并进行打包。所以我们今天来看下如何进行本地引入第三方包操作

1. 步骤

1、在项目下创建lib文件夹,或者其他文件夹,将第三方包放入该文件夹下

2、IDEA中执行快捷键F4,或手动进入Project Settings,在Libraries中点击添加jar包,选择我们刚刚引入的jar包

3、修改pom文件,指定第三方jar包文件,

这里注意要添加<includeSystemScope> true </includeSystemScope>配置,这样才会在打包时加载本地的jar,否则会出现本地运行没问题,但编译打包出来就会报错找不到类

同时注意把<mainClass>中的<skip>调整成false, 否则引入的包不会一起打包出来

xml 复制代码
<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <!--配置本地jar包在项目的存放路径jar包-->
                    <compilerArguments>
                        <extdirs>${project.basedir}/src/main/webapp/WEB-INF/lib</extdirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <webResources>
                        <resource>
                            <!--配置本地jar包在项目中的存放路径-war包-->
                            <directory>src/main/webapp/WEB-INF/lib/</directory>
                            <!--配置打包时jar包的存放路径-->
                            <targetPath>WEB-INF/lib</targetPath>
                            <includes>
                                <include>**/*.jar</include>
                            </includes>
                        </resource>
                    </webResources>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>${spring-boot.version}</version>
                <configuration>
                    <mainClass>com.example.security_demo.SecurityDemoApplication</mainClass>
                    <skip>false</skip>
                    <!-- 加入此配置,才会把本地的jar包也引进去 -->
                    <includeSystemScope> true </includeSystemScope>

                </configuration>

                <executions>
                    <execution>
                        <id>repackage</id>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

4、pom里添加刚刚引入的jar包,这里的systemPath路径就选择jar包所在的路径

xml 复制代码
 <dependency>
            <groupId>com.cdp.product</groupId>
            <artifactId>cdp-common-security</artifactId>
            <version>11.0.0-SNAPSHOT</version>
            <scope>system</scope>
            <systemPath>${pom.basedir}/lib/cdp-common-security-java.jar</systemPath>
</dependency>

5、选择编译打包

6、查看打包出来的jar包,只要不是几十K的大小,这种10M+的,说明第三方包已经包含进去了

7、项目正常启动

8、调用测试接口也正常(这里test接口的作用是将入参做加密输出)

2. 总结

如上,我们就完成了本地引入第三方jar并实现编译打包的操作。如果你打包出来的文件运行有误,仔细检查下配置与我上述的是否一致

相关推荐
汤姆yu13 分钟前
基于springboot+vue的企业OA办公系统
java·spring boot·后端·oa办公
java1234_小锋37 分钟前
Spring Boot 4.0 官宣:弃用 Undertow
java·spring boot·后端
wangbing11252 小时前
springboot应用关闭时触发动作
java·spring boot·后端
paopaokaka_luck9 小时前
基于springboot+vue的智慧家政管理系统(AI问答、 WebSocket实时沟通、ECharts运营分析、订单规则与服务追踪)
java·javascript·spring boot·数据分析·echarts·mybatis
阿森_dev9 小时前
2027 届毕设选题怎么选:30 个 Java 方向选题的实现难度排序
java·开发语言·spring boot·毕业设计·课程设计
计算机毕业设计杰瑞9 小时前
【计算机毕设精品】基于SpringBoot的一体化教务与学业质量管理系统的设计与实现,附源码_增删改查_java项目_可完美运行部署_网站项目
java·spring boot·课程设计
大侠归来12 小时前
Spring Boot 2.1 → 3.5 迁移推演:从实战出发的完整路线图
java·spring boot·后端
Sweet锦12 小时前
jDCS 开源项目:面向工业现场的 Modbus RTU 数据采集基础框架
java·spring boot·物联网·开源
海马12 小时前
Spring Boot 开发知识整理
java·spring boot·后端
谢亮_vipxieliang12 小时前
Spring Boot 3.x 从零开始——环境搭建与第一个 REST 项目
java·spring boot·后端