Maven pom.xml 添加本地jar包依赖以及打包方法

 更新时间:2020年09月07日 11:38:07   作者:Strugglion  
这篇文章主要介绍了Maven pom.xml 添加本地jar包依赖以及打包方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

Maven项目打包时,如果遇到需要添加本地jar包依赖的时候,可以选择两种方法:

1. 安装到本地仓库

第一种方法比较常规,适用于需要添加的jar包也是由maven项目导出,含有pom文件的时候。只需要将jar包安装到本地maven仓库下,然后添加依赖即可。

(1)安装到本地仓库,执行以下命令(其中的-Dfile/-DgroupId/-DartifactId/-Dversion项根据pom文件内容填写):

mvn install:install-file -Dfile=xxxxx.jar -DgroupId=xxx.xxx.xxx -DartifactId=xxxxx -Dversion=1.0.0 -Dpackaging=jar

(2)安装之后可以在本地仓库中找到对应的jar包。然后将对应的依赖信息插入到工程的pom文件即可:

<dependency>
  <groupId>xxx.xxx.xxx</groupId>
  <artifactId>xxxxx</artifactId>
  <version>1.0.0</version>
</dependency>

2. dependency中指定scope="system"和本地jar包路径

这种方法适用于其他方式导出的jar包,jar包中不含有pom信息,从而无法安装进本地仓库的情况。做法是:先配置本地jar包依赖,然后在build时将设置将jar包导出,同时配置manifest。

(1)配置本地jar包依赖(systemPath指向本地jar包路径):

<dependency>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-s3</artifactId>
  <version>1.11.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/xxx.jar</systemPath>
</dependency>

(2)在<build>的spring-boot-maven-plugin中设置将本地jar包导出到项目最终的依赖库中:

<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <configuration>
    <includeSystemScope>true</includeSystemScope>
  </configuration>
</plugin>

(3)如果项目使用maven-jar-plugin插件打包的话,还需要在manifectEntries中添加对应的jar包信息;否则虽然jar包导出了,但是项目生成的MANIFEST.MF文件中没有对应的依赖信息,也会导致运行时找不到对应的class。

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
        <classpathPrefix>lib/</classpathPrefix>
        <mainClass>XXXX</mainClass>
      </manifest>
      <manifestEntries>
        <Class-Path>./ lib/xxxxx.jar</Class-Path>
      </manifestEntries>
    </archive>
    <outputDirectory>
      ${project.build.directory}/XXXXX
    </outputDirectory>
  </configuration>
</plugin>

(4)最后附上一个项目完整的<build>配置(该配置可以将最终生成的jar包和依赖库、配置文件分开)。

<build>
  <finalName>XXXXX</finalName>
  <sourceDirectory>src/main/java</sourceDirectory>
  <resources>
    <resource>
      <directory>src/main/resources</directory>
      <targetPath>${project.build.directory}/XXXXX</targetPath>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </resource>
  </resources>

  <testSourceDirectory>src/test/java</testSourceDirectory>
  <testResources>
    <testResource>
      <directory>src/test/resources</directory>
      <filtering>true</filtering>
      <excludes>
        <exclude>**/*.java</exclude>
      </excludes>
    </testResource>
  </testResources>

  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <configuration>
        <includeSystemScope>true</includeSystemScope>
      </configuration>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-surefire-plugin</artifactId>
      <configuration>
        <skipTests>true</skipTests>
      </configuration>
    </plugin>

    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-dependency-plugin</artifactId>
      <executions>
        <execution>
          <id>copy-dependencies</id>
          <phase>package</phase>
          <goals>
            <goal>copy-dependencies</goal>
          </goals>
          <configuration>
            <outputDirectory>
              ${project.build.directory}XXXXX/lib
            </outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <classpathPrefix>lib/</classpathPrefix>
              <mainClass>xxx.xxx.XXXXX</mainClass>
            </manifest>
            <manifestEntries>
              <Class-Path>./ lib/xxxxx.jar</Class-Path>
            </manifestEntries>
          </archive>
          <outputDirectory>
            ${project.build.directory}/XXXXX
          </outputDirectory>
        </configuration>
      </plugin>
  </plugins>
</build>

到此这篇关于Maven pom.xml 添加本地jar包依赖以及打包方法的文章就介绍到这了,更多相关Maven pom.xml jar包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 浅析Java中的GC垃圾回收器的意义及与GC的交互

    浅析Java中的GC垃圾回收器的意义及与GC的交互

    这篇文章主要介绍了Java中的GC垃圾回收器的意义及与其的交互,GC是Java虚拟机JVM的一项重要特性,需要的朋友可以参考下
    2015-12-12
  • 关于SpringCloud的微服务以及组件详解

    关于SpringCloud的微服务以及组件详解

    这篇文章主要介绍了关于SpringCloud的微服务以及组件详解,是一个更高层次的、 架构视角的综合性大型项目, 他的目标是构建一套标准化的微服务解决方案,需要的朋友可以参考下
    2023-05-05
  • MyBatis的注解使用、ORM层优化方式(懒加载和缓存)

    MyBatis的注解使用、ORM层优化方式(懒加载和缓存)

    这篇文章主要介绍了MyBatis的注解使用、ORM层优化方式(懒加载和缓存),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10
  • java poi导出图片到excel示例代码

    java poi导出图片到excel示例代码

    这篇文章主要介绍java poi如何导出图片到excel,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • java将html转成图片代码实例(html2image)

    java将html转成图片代码实例(html2image)

    这篇文章主要介绍了java将html转成图片的相关资料,在Java开发中,将HTML转换为图片可以使用html2image库,文中通过代码及图文介绍的非常详细,需要的朋友可以参考下
    2024-09-09
  • Hibernate单表操作实例解析

    Hibernate单表操作实例解析

    这篇文章主要介绍了Hibernate单表操作实例解析,分享了相关代码示例,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-02-02
  • 基于SSM框架+Javamail发送邮件的代码实例

    基于SSM框架+Javamail发送邮件的代码实例

    本篇文章主要介绍了基于SSM框架+Javamail发送邮件的代码实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2016-12-12
  • idea中启动项目弹出 IDEA out of memory窗口的解决方案

    idea中启动项目弹出 IDEA out of memory窗口的解决方案

    这篇文章主要介绍了idea中启动项目弹出 IDEA out of memory窗口的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 简单阐述一下Java集合的概要

    简单阐述一下Java集合的概要

    今天给大家带来的文章是关于Java的相关知识,文章围绕着Java集合的概要展开,文中有非常详细的介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Java实现十秒向MySQL插入百万条数据

    Java实现十秒向MySQL插入百万条数据

    这篇文章主要为大家详细介绍了Java如何实现十秒向MySQL插入百万条数据,文中的示例代码讲解详细,对我们学习或工作有一定借鉴价值,需要的可以参考一下
    2022-11-11

最新评论