百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 软件资讯 > 正文

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

ninehua 2024-12-11 16:21 29 浏览

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

  1. 如何将jar引用到项目,并且能够让项目正常调用该jar包的方法
  2. 外部引用的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 依然是可以运行起来的


相关推荐

VMware ESXI系统镜像定制

为什么要定制ESXi镜像呢?原因很简单,那就是H3C比较老的服务器,比如我用的UISR390XG2服务器,是没有适配的ESXi部署镜像的。而我要部署的H3CloudOS添加节点时只能选择H3C...

最新保姆级、超详细介绍VMware的使用(一)软件的安装

一、VMware简介VMWare虚拟机软件是一个“虚拟PC”软件,它使你可以在一台机器上同时运行二个或更多Windows、DOS、LINUX系统。与“多启动”系统相比,VMware采用了完全不同的概...

微软提供免费Windows 11 虚拟机下载

据ZDNet11月23日报道,微软(Microsoft)提供了免费的Windows11企业版虚拟机以供下载。针对开发人员,微软表示,“通过使用带有最新版本的Windows、开发工具、sdk和准备好的...

VMware Workstation Pro 17.5安装包下载安装教程

软件简介VMwareWorkstationPro17.5是一款专业功能最强大的虚拟机软件,用户可以在虚拟机同时运行各种操作系统,进行开发、测试、演示和部署软件,虚拟机中复制服务器、台式机和平板环...

VMware vCenter Server 8.0U3c 发布下载,修复 U3b 更新停止响应的问题

VMwarevCenterServer8.0U3c发布下载,修复U3b更新停止响应的问题VMwarevCenterServer8.0U3c发布下载-集中式管理vSphere...

最新整套VMware Workstation 15 Pro 官方简体中文版 + 永久密钥

VMwareWorkstation是深受全球用户信赖并屡获殊荣的虚拟机软件。它可以在单台PC上运行多个、多平台、多层面的操作系统与应用程序。并且支持快照和克隆,支持物理机与虚拟机间复制、移动,交...

VMware16虚拟机安装教程

系统装机教程也告一段落,接下来秋水给大家讲讲虚拟机的安装,这里呢虚拟机选择VMware。一、安装教程1、在软件官网下载VMware安装包,或者在后台回复获取秋水下载好的安装包。2、双击软件进行安装,并...

VMware虚拟机12.1下载:修复Win10镜像识别错误等问题

IT之家讯12月9日消息,虚拟机软件VMwareWorkstation迎来12.1更新版本,本次更新为维护性更新,修复了之前版本中存在的一些问题,比如将Win10首个重大更新ISO镜像错误识别为W...

VMware vCenter Server 8.0U3b 发布下载,新增功能概览

VMwarevCenterServer8.0U3b发布下载,新增功能概览ServerManagementSoftware|vCenter请访问原文链接:https://sysin.or...

下载VMware虚拟机:打造全能多系统桌面,让IT技术探索触手可及!

VMware虚拟机打造全能多系统桌面,助力IT技术探索在当今科技飞速发展的时代,IT技术正以前所未有的速度渗透到生活和工作的方方面面。无论是智能硬件、移动应用还是云计算服务,都离不开IT技术的支撑。掌...

如何在vmware workstation player虚拟机上安装VMware Tools工具

版本:vmwareworkstation16player&ubuntu64位。首先我们使用vmwareworkstation16player启动ubuntu64位虚拟机,然后点击虚...

VMware与CentOS安装配置指南

以下是一份详细的VMware虚拟机安装、配置及CentOS系统安装配置的指南,适合新手逐步操作:一、VMware虚拟机安装与配置下载并安装VMware下载地址:访问VMware官网,选...

VMware虚拟机与物理机文件交互,这8种方法送给你

上一期我们讲解过用VMWare虚拟机打造一个金刚不坏之身的操作系统,小伙伴们反应说方法不错,只是虚拟机与物理机文件交互方式不好操作,这期应小伙伴们的要求,给大家讲解下虚拟机与物理机文件交互的8种方式,...

VMware 17.0 Pro 版本正式发布,还有适配MacOS 的 Fusion 13 Pro下载

VMware17.0Pro官方下载地址:【点击获取】私聊VMware17.0Pro的新功能特性容器和Kubernetes支持使用vctlCLI构建/运行/拉/推容器映像。支持在Works...

VMware Tools安装失败?手把手教你本地安装

VMwareTools安装失败?作为虚拟机与物理机之间的"桥梁",VMwareTools能实现文件拖拽、剪贴板共享、分辨率自适应等关键功能。没有它,VMware虚拟机就变得非常不好...