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

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

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

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

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

目录

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

使用maven引入第三方jar包以及打包_第1张图片

<dependency>
  <groupId>com.gzl.cngroupId>
  <artifactId>java-demoartifactId>
  
  <scope>systemscope>
  <version>1.0-SNAPSHOTversion>
  
  <systemPath>${project.basedir}/src/main/resources/lib/java-demo.jarsystemPath>
dependency>

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

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

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

<build>
      
    <finalName>maven-demofinalName>
    <plugins>
        <plugin>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-maven-pluginartifactId>
            <version>2.4.2version>
            <configuration>
                
                <mainClass>com.gzl.cn.AppmainClass>
                
                <includeSystemScope>trueincludeSystemScope>
            configuration>
            <executions>
                <execution>
                  
                  <id>repackageid>
                    
                  <goals>
                    <goal>repackagegoal>
                  goals>
            execution>
          executions>
        plugin>
    plugins>
  build>

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

使用maven引入第三方jar包以及打包_第2张图片

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

使用maven引入第三方jar包以及打包_第3张图片

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

使用maven引入第三方jar包以及打包_第4张图片

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

使用maven引入第三方jar包以及打包_第5张图片

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

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

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

使用maven引入第三方jar包以及打包_第6张图片 使用maven引入第三方jar包以及打包_第7张图片

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

你可能感兴趣的:(#,Maven,jar,java,maven)