Maven中jar包导入项目的两种方法

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。

如果对你有所帮助,不要吝啬手中的赞~

    原文作者:此成非彼诚
    原文地址: https://blog.csdn.net/qq_42495847/article/details/119388579
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞