[版权申明]非商业目的注明出处可自由转载
出自:shusheng007
概述
有时我们需要将本地的jar文件添加到maven项目中,如果直接通过IDEA添加本地库引用的话,打包时候会丢失。网上中文教程的解决方法非常复杂,自己调查并实践,希望有此问题的同行不用再走弯路。
第一种方案:将jar安装到本地Maven仓库
第一种方案就是将jar包安装在你机器的本地 maven
仓库中,这种方案也有两种方式,手动和自动:
手动
手动运行maven
命令将jar
文件安装到本地maven库
第一步
首先确定你的电脑已经安装了Maven。在命令行中键入mvn -v
命令,如果出现类似如下图所示,说明你的电脑已经安装了Maven,可进行第二步,如果没有请安装Maven。
第二步
安装jar到本地仓库
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
<path-to-file>
: 要安装的JAR的本地路径 ./libs/json-simple-1.1.1.jar
<group-id>
:要安装的JAR的Group Id
<artifact-id>
: 要安装的JAR的 Artificial Id
<version>
: JAR 版本
<packaging>
: 打包类型,例如JAR
NOTE:最好在
pom.xml
文件所在的目录运行上述命令,个人经验不在根目录运行有时会安装不成功
第三步
使用,例如我安装了百度推送JAR到本地,我就可以在pom.xml
文件中这样引用它了
<dependency>
<groupId>com.baidu.app</groupId>
<artifactId>bdpush</artifactId>
<version>3.0.1</version>
</dependency>
这种方法弊端较大,程序的可维护性以及移植性较低。例如当你改变本地Maven仓库时需要重新安装。如果引用此JAR
的项目是多人协调工作的项目,则每个人都要手动将其安装在自己的本地仓库。
自动
第二种方法是对第一种方法的改进。我们可以将此JAR
文件放在工程里,然后使用maven
插件自动将其安装到本地maven
库。
例如我在项目根目录下新建一个libs
的目录,里面存放我要安装的jar
包 , 在pom.xml
文件中使用maven-install-plugin在Maven初始化阶段完成安装。
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
<executions>
<execution>
<phase>initialize</phase>
<goals>
<goal>install-file</goal>
</goals>
<configuration>
<file>${basedir}/libs/json-simple-1.1.1.jar</file>
<groupId>com.sng.app</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
<packaging>jar</packaging>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
${basedir}
表示pom.xml
文件所在的目录
第二种方案(不推荐)
第二种方法比较粗暴简单,具体为将依赖设置为系统域,通过完全路径引用。例如要引用的JAR
文件在 <PROJECT_ROOT_FOLDER>/lib
下,那么使用如下方法添加依赖
<dependency>
<groupId>com.baidu.app</groupId>
<artifactId>bdpush</artifactId>
<version>3.0.1</version>
<scope>system</scope>
<systemPath>${basedir}/lib/bdpush-3.0.1.ja</systemPath>
</dependency>
${basedir}
表示pom.xml
文件所在的目录,例如你的JAR
文件在D盘下的jarLibs
里面,就将${basedir}
替换为“D:/jarLibs”即可。
note: 这种方法我自己在SpringBoot
项目中打包成war
文件时,没有成功打包到里面,不推荐使用
第三种方案(推荐)
第三种方案是将JAR
文件安装在你项目中一个单独的maven
仓库里,这个仓库随着项目走。
1:我们在${basedir}(pom.xml
文件所在路径)目录下建立一个叫maven-repository的本地仓库(就是建立一个叫这个名字的文件夹)。
2:使用如下命令安装我们要引用的JAR
到此仓库中
mvn deploy:deploy-file
-Dfile=<path-to-file>
-DgroupId=<group-id>
-DartifactId=<artifact-id>
-Dversion=<version>
-Dpackaging=jar
-Durl=file:./maven-repository/
-DrepositoryId=maven-repository
-DupdateReleaseInfo=true
我们来举个例子
mvn deploy:deploy-file
-Dfile=./libs/json-simple-1.1.1.jar
-DgroupId=com.sng.app
-DartifactId=json-simple
-Dversion=1.1.1
-Dpackaging=jar
-Durl=file:./maven-repository/
-DrepositoryId=maven-repository
-DupdateReleaseInfo=true
安装成功后控制台会显示如下类似结果:
你项目中的本地maven
库也会出现相应的文件,类似下面这样
3:在pom.xml
中如下使用
申明仓库
<repositories>
<repository>
<id>maven-repository</id>
<url>file:///${project.basedir}/maven-repository</url>
</repository>
</repositories>
然后添加引用
<dependency>
<groupId>com.sng.app</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
总结
推荐使用第三种方式,第三种方式比较灵活。例如等jar
被发布到了远程仓库的话,直接将其从本地库删除即可。多个人协作的话也不需要各自维护。
文章评论