原文链接:https://blog.csdn.net/qq_42495847/article/details/119388579
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
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>
前一个resource的意思是打包的时候把lib下的jar包打包时放到/BOOT-INF/lib/这个目录下,这个目录也是SpringBoot的jar包存放之处,但配置了这个属性后,原本的默认打包方法被覆盖了,还需要把项目中src/main/resources下的各种配置文件打包到原默认位置,也就多了后一个resource