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, 否则引入的包不会一起打包出来
<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包所在的路径
<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并实现编译打包的操作。如果你打包出来的文件运行有误,仔细检查下配置与我上述的是否一致