Maven中jar包导入项目的两种方法
在此整理一下私有jar包导入项目的两种方法
1.jar包打入本地仓库-mvn方式
适用场景:
公司的私包或者没有上传到公共仓库的jar包,于是Maven拿不到这个包,导致pom标红
解决思路:
1.首先需要拿到这个jar包,保存到自己的电脑上,记录存放的文件路径
2.电脑上必须安装了Maven环境,也就是配置了Maven的环境变量,可以使用mvn命令
(用mvn -v
查看是否配置,没有配置的同学移步百度进行安装配置)
3.使用如下命令:
mvn install:install-file -Dfile={ jar包所在地址} -DgroupId={ jar包的公司名} -DartifactId={ jar包项目名} -Dversion={ jar包版本} -Dpackaging=jar
- Dfile:jar包在本地中的路径
- DgroupId:jar包的groupid
- DartifactId:jar包的artifactId
- Dversion:jar包的version
- Dpackaging:包类型
示例:
比如我们有个jar包叫ojdbc6-11.2.0.3.jar
这个包远程仓库没有,pom文件标红,于是我们需要得到这个包的所在路径
、包的公司名
、包的项目名
以及包的版本
jar包的所在路径:存放该jar包的位置,比如放在了桌面上/Users/cheng/Desktop/ojdbc6-11.2.0.3.jar
jar包的公司名:这个可以自由发挥,为了不要混淆该包,可以解压jar包去看看文件夹结构,这里我选择用com.oracle
jar包的项目名:根据jar包名,用ojdbc6
jar包的版本:根据jar包名,用11.2.0.3
那么我需要在控制台输入如下命令:
mvn install:install-file -Dfile=/Users/chenghuang/Desktop/ojdbc6-11.2.0.3.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar
打包即可成功:
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 0.441 s
[INFO] Finished at: 2021-08-04T16:37:55+08:00
[INFO] ------------------------------------------------------------------------
2.jar包放到项目中,maven读取打包
适用场景:
项目上传git的时候不在意是否上传了jar包,这样可以省略每个人都去执行第一种方法,一劳永逸
解决思路:
1.在项目的根目录下(就是和.idea或者src同级的目录)建一个文件夹叫lib
(取名随意)
2.把jar包复制进去
3.在pom的中加入如下配置:(还是以ojdbc6-11.2.0.3.jar
举例)
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.3</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/ojdbc6-11.2.0.3.jar</systemPath>
</dependency>
- groupId:jar包公司名
- artifactId:jar包项目名
- version:jar包版本
- scope:jar包作用域,为system意思在本地找
- systemPath:jar包在本地的哪里,
${project.basedir}/lib/{jar包名称}
标识在项目根目录下的lib文件中
那么现在maven可以找到该jar包,但是打包的时候maven是不知道把lib下的jar包打进去的,还需要如下配置:
<dependencies>
//...
</dependencies>
<build>
<resources>
<!--将项目根目录下的lib文件中的jar包全部打入BOOT-INF/lib文件下-->
<resource>
<directory>lib</directory>
<targetPath>BOOT-INF/lib/</targetPath>
<includes>
<include>**/*.jar</include>
</includes>
<filtering>false</filtering>
</resource>
<!--将项目根目录下的src/main/resources文件中的配置文件全部打入默认文件下-->
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
<include>**/*.yml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
前一个resource的意思是打包的时候把lib下的jar包打包时放到/BOOT-INF/lib/
这个目录下,这个目录也是SpringBoot的jar包存放之处,但配置了这个属性后,原本的默认打包方法被覆盖了,还需要把项目中src/main/resources
下的各种配置文件打包到原默认位置,也就多了后一个resource。
如果对你有所帮助,不要吝啬手中的赞~