龙空技术网

使用maven引入第三方jar包以及打包

是蜃楼啊 232

前言:

目前兄弟们对“java引入包”大约比较注重,我们都需要学习一些“java引入包”的相关内容。那么小编在网络上网罗了一些有关“java引入包””的相关文章,希望兄弟们能喜欢,看官们快快来了解一下吧!

我们知道,Maven 是通过仓库对依赖进行管理的,当 Maven 项目需要某个依赖时,只要其 POM 中声明了依赖的坐标信息,Maven 就会自动从仓库中去下载该构件使用。但在实际的开发过程中,经常会遇到一种情况:对接第三方厂商,人家给了一个jar包,然后项目需要使用这个jar包,但是这个jar包并没有上传到远程仓库,这时候就不能使用简单的pom依赖引用了,因此存在两个问题:

如何将jar引用到项目,并且能够让项目正常调用该jar包的方法外部引用的jar如何打包进项目?

当然公司如果是有私服的,可以直接将jar包上传到私服。然后直接通过pom依赖简单的声明即可。

因此本篇文章重点针对于这两点进行讲解

目录

如下是个maven项目,java-demo.jar是我们要引入的jar包。

<!--外部依赖--><dependency>  <groupId>com.gzl.cn</groupId>  <artifactId>java-demo</artifactId>  <!--依赖范围-->  <scope>system</scope>  <version>1.0-SNAPSHOT</version>  <!--依赖所在位置-->  <systemPath>${project.basedir}/src/main/resources/lib/java-demo.jar</systemPath></dependency>

在以上配置中,除了依赖的坐标信息外,外部依赖还使用了 scope 和 systemPath 两个元素。

scope 表示依赖范围,这里取值必须是 system,即系统。systemPath 表示依赖的本地构件的位置。

打包插件:<includeSystemScope>true</includeSystemScope> 这个非常重要,是将外部依赖打包进来的,如果没有该配置,打出来的jar包是不包含外部jar包的,从而可能会导致运行异常!

<build>      <!-- 打出来的jar包名 -->    <finalName>maven-demo</finalName>    <plugins>        <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>            <version>2.4.2</version>            <configuration>                <!-- 主启动类全类名 -->                <mainClass>com.gzl.cn.App</mainClass>                <!-- 这个配置很重要,是将外部依赖打包进来的,如果没有该配置,打出来的jar包是不包含外部jar包的 -->                <includeSystemScope>true</includeSystemScope>            </configuration>            <executions>                <execution>                  <!--自定义 id -->                  <id>repackage</id>                    <!--插件目标 -->                  <goals>                    <goal>repackage</goal>                  </goals>            </execution>          </executions>        </plugin>    </plugins>  </build>

但是现在存在一个问题,打出来的jar包可以用,但是特别大。

如下是jar包解压后的目录:

我们可以将jar解压会发现BOOT-INF的lib目录下是有一个第三方引用的jar。

然后在BOOT-INF的classes/lib目录下也有个这个jar包,这个是源码当中的jar包,上面的是打出来的jar包运行的时候所要依赖的jar包。正常来说我们就可以将源码当中的jar包给去掉,这样就可以减小jar包的大小。

添加如下依赖,排除jar的打包

<build>	<resources>	  <resource>	    <directory>src/main/resources</directory>	    <filtering>true</filtering>	    <excludes>	        <exclude>**/lib/**</exclude>	    </excludes>	  </resource>	</resources>	...以下省略</build>

重新进行打包后会然后将jar解压观察源代码当中已经没有lib目录了。

java -jar 依然是可以运行起来的

标签: #java引入包 #javajar打包 #java引用外部jar #jar如何解压 #jar包如何解压