Maven项目引入三方jar包
前提:
在项目开发过程中,难免会用到第三方jar的时候,比如:sdk、或者特定的jar包(不在maven仓库中),这种情况下,我们怎么在项目中直接使用,并且使用maven打包时也将三方包放进最后生成的文件中呢?
在多次资料查询、实验的过程中终于找到了一种方式,如有需要,可参考以下步骤:
举例:
外部引入commons-io-2.8.0.jar(不使用maven仓库下载)
一、项目中引入使用
1、项目路径下创建lib目录
2、copy commons-io-2.8.0.jar至lib目录下,如下图所示:
3、pom.xml文件中本地引入三方jar(commons-io-2.8.0.jar),如所示:
<dependency>
//这三个值可自定义,如不重复,建议和使用原名称
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.8.0</version>
//必有,且值必须为:system
<scope>system</scope>
//jar包所在位置,${pom.basedir}表示当前项目路径(必须使用pom,后面打包会用到),后面是三方jar包所在路径
<systemPath>${pom.basedir}/lib/commons-io-2.8.0.jar</systemPath>
</dependency>
4、在项目中使用commons-io相关工具类,例如:FileUtils的readFileToString方法,读取文件内容:
@GetMapping("/getIndexControllerCode")
public String getIndexControllerCode() throws IOException {
ClassPathResource resource = new ClassPathResource("application.yaml");
File file = resource.getFile();
String applicationStr = FileUtils.readFileToString(file, StandardCharsets.UTF_8);
return applicationStr;
}
使用测试通过。
二、maven打包将三方Jar一同放进最后的项目Jar文件中
1、确认以上pom.xml中引入的三方jar本地路径取得项目路径必须为:pom.basedir
,如果是${project.basedir}
打包可能会失败
2、在pom.xml的build标签中添加如下:
<resources>
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib</targetPath>
</resource>
<resource>
<directory>src/main/resources</directory>
<targetPath>BOOT-INF/classes</targetPath>
</resource>
</resources>
3、正常使用maven打包
4、查看打包的项目jar文件中是否有三方jar
查看jar中,BOOT-INF下,lib中是否有commons-io-2.8.0.jar
打包测试通过