注意:本文非原创,原创见:Maven项目安装和引用本地jar包,本人至少怕原创某天删除该文章之后不太好找,用于记录,感谢原创的文章内容。
一般分为两种方式:
1、将jar包打入maven仓库,再通过pom引入jar
2、本地pom中引入
1、将jar包打入maven仓库,再通过pom引入jar
mvn命令参数说明(重点)
-Dfile=需要导入的jar包所放的位置
-DgroupId=导入到本地仓库jar包的父级目录
-DartifactId=jar包文件夹的名称
-Dversion=版本号
–-settings=是maven的setting.xml配置文件,会把jar包打包到xml文件中配置的本地仓库,未配置会打包到默认的本地仓库中(可以在idea的maven配置中找到该路径,配置文件中指定了maven仓库目录;如果路径中包含空格,则需要将文件全路径用引号引起来)
1)第一步,cmd命令行进入jar包所在的目录,执行命令后,本地仓库对应位置自动生成对应jar包和pom文件。执行如下命令:
// linux:
mvn install:install-file -Dfile=java-sdk-core-2.0.1.jar -DgroupId=com.huawei.apigateway -DartifactId=java-sdk-core -Dversion=2.0.1 -Dpackaging=jar
// windows:
mvn install:install-file "-Dfile=java-sdk-core-2.0.1.jar" "-DgroupId=com.huawei.apigateway" "-DartifactId=java-sdk-core" "-Dversion=2.0.1" "-Dpackaging=jar"
// idea和windows命令一致
mvn install:install-file -Dfile=D:\office\repository\org\apache\commons\codec\binary\commons-codec-1.10.jar -DgroupId=org.apache.commons.codec.binary -DartifactId=commons-codec -Dversion=1.10 -Dpackaging=jar --settings "D:\office\maven\apache-maven-3.5.0\conf\settings.xml"
或者,通过idea执行命令
2)第二步,项目里面直接配置依赖
<dependency>
<groupId>com.huawei.apigateway</groupId>
<artifactId>java-sdk-core</artifactId>
<version>2.0.1</version>
</dependency>
这里注意一下,命令行里面的 DgroupId 选项对应配置文件中的 groupId;命令行里面的 DartifactId 选项对应配置文件的 artifactId;命令行里面的 Dversion 选项对应配置文件的 version。
3)第三步,更新项目,并重新编译项目。可以执行 mvn clean compile 命令重新编译整个项目。
2、本地pom引入
1)这时候最简单的方法是,直接在project structure通过添加Add As Library,将其加入java项目
2)system,system依赖不是由maven仓库,而是本地的jar包,因此必须配合systemPath标签来指定本地的jar包所在全路径。这类jar包默认会参与编译、测试、运行,但是不会被参与打包阶段。
<!-- 引入本地lib包 -->
<dependency>
<systemPath>${project.basedir}/libs/java-sdk-core-3.2.4.jar</systemPath>
<groupId>com.huawei.apigateway</groupId>
<artifactId>java-sdk-core</artifactId>
<version>3.2.4</version>
<scope>system</scope>
</dependency>
如果也想打包进去的话,需要在插件里做配置true
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<!-- maven打包时会将外部引入的jar包(比如在根目录下或resource文件下新加外部jar包)打包到项目jar -->
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>