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

作者:怪?咖@ 时间:2023-11-15 04:23:17 

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

  • 如何将jar引用到项目,并且能够让项目正常调用该jar包的方法

  • 外部引用的jar如何打包进项目?

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

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

目录

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

利用maven引入第三方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包可以用,但是特别大。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

来源:https://blog.csdn.net/weixin_43888891/article/details/130611728

标签:maven,jar包,打包
0
投稿

猜你喜欢

  • 基于springboot 长轮询的实现操作

    2022-02-06 09:46:22
  • Java的Spring框架中AOP项目的一般配置和部署教程

    2021-07-26 16:49:25
  • Springboot WebJar打包及使用实现流程解析

    2023-06-21 22:08:00
  • java实现mp3合并的方法

    2023-11-09 03:47:08
  • C# 如何规范的写 DEBUG 输出

    2023-04-27 03:12:37
  • Android应用UI开发中Fragment的常见用法小结

    2021-06-16 19:35:54
  • Spring Cloud微服务架构Sentinel数据双向同步

    2021-07-16 04:17:04
  • Android中Socket大文件断点上传示例

    2022-07-11 02:33:32
  • 误将.idea文件提交至git后删除的操作方法

    2022-09-03 09:32:57
  • 如何使用C语言将数字、字符等数据写入、输出到文本文件中

    2023-09-07 12:09:07
  • Java解析DICOM图之如何获得16进制数据详解

    2023-06-15 17:37:29
  • Android自定义View实现圆弧进度效果

    2021-08-20 02:26:21
  • Java Stopwatch类,性能与时间计时器案例详解

    2023-07-24 04:08:50
  • 使用注解@Validated和BindingResult对入参进行非空校验方式

    2022-09-16 11:30:44
  • Java实现动态数字时钟

    2022-05-07 08:56:56
  • 超详细的Spring Boot入门笔记(总结)

    2022-10-26 18:44:21
  • SWT(JFace)体验之ApplicationWindow

    2023-01-02 09:59:43
  • UE4 Unlua 调用异步蓝图节点AIMoveTo函数示例详解

    2022-04-12 05:35:41
  • 官方详解HDFS Balancer工具主要调优参数

    2023-07-24 04:43:47
  • java之CSV大批量数据入库的实现

    2021-06-30 15:53:49
  • asp之家 软件编程 m.aspxhome.com