SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案

由于项目需要,在需要打包的时候,由于引入的外部jar在本地是可以使用的,但是当打包后启动时报错,找不到对应的类。

使用

1、引入外部jar包

项目中简历文件夹lib

可以在resultces包下简历一个lib文件夹,将jar包扔进去:

在配置文件中引用

<dependency>
   <groupId>com.xx.xxx</groupId> //组织,随便命名
   <artifactId>***</artifactId> //包的名字,随便命名
   <version>1.1.2</version> //版本,随便命名
   <scope>system</scope> //scope为system时,自动添加lib依赖包
   <systemPath>${basedir}/src/main/resources/lib/**.jar</systemPath> //路径,这里我jar在resources目录的lib文件夹下,也可以放在跟目标,路径按需修改
 </dependency>

2、项目打包

遇到问题

是由于项目打包时,不识别外部jar,又没有进行配置,继而导致出现问题。

解决方案

解决方式很简单,只需要在pom.xml里面配置下 includeSystemScope 就行。

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

PS:maven项目引入外部jar(打包是jar形式springboot项目)

1、在项目src同级目录建立一个lib目录,将jar包放入lib中

2、在pom.xml文件中引入依赖

<!-- 引入外部jar包 -->
<dependency>
  <groupId>com.hikvision.artemis</groupId>
  <artifactId>sdk</artifactId>
  <version>1.0</version>
  <scope>system</scope>
  <systemPath>${project.basedir}/lib/artemis-http-client-1.0-SNAPSHOT.jar</systemPath>
</dependency>

groupId、artifactId、version可以随意写

3、外部jar包可能与本地中jar起冲突,需要排除,常见的是日志冲突,外部jar也有引入日志的jar。在项目运行时会出现警告。

可以在pom所在目录,使用cmd命令:mvn dependency:tree查看jar依赖关系,然后使用exclusions排除冲突的jar包

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <!-- 排除jar冲突 -->
  <exclusions>
    <exclusion>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
    </exclusion>
  </exclusions>
</dependency>

这里是排除了日志,排除外部jar包中日志,若找不到依赖关系,再排除springboot自带的log。

总结

到此这篇关于SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案的文章就介绍到这了,更多相关SpringBoot打包异常引入外部jar内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • SpringBoot项目打包三方JAR的示例代码

    SpringBoot项目打包成可运行JAR包,但是不是所有JAR包都是MAVEN中央库或者是私有库里面有的,那么要如何把第三方的JAR包通过MAVEN的SpringBoot的打包组件打包进可运行JAR包里呢? 解决方法: 1.所第三方的JAR放到项目下如:/src/lib 2.加入maven依赖: <dependency> <groupId>com.seven</groupId> <artifactId>smssdk</artifactId> &

  • SpringBoot项目没有把依赖的jar包一起打包的问题解决

    这篇文章主要介绍了SpringBoot项目没有把依赖的jar包一起打包的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一般未一起打包是因为pom不是继承自spring-boot-starter-parent导致的需要在pom.xml文件写入以下配置 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId>

  • SpringBoot+Maven 多模块项目的构建、运行、打包实战

    本篇文章主要介绍了SpringBoot+Maven 多模块项目的构建.运行.打包,分享给大家,具体如下: 项目使用的工具: IntelliJ IDEA JDK 1.8 apache-maven-3.3.9 项目的目录: 主项目 springboot-multi 子模块 entity.dao.service.web 一.使用IDEA创建一个SpringBoot项目 : File -> new -> Project 项目名称为springboot-multi 二.删除项目中的src目录,把pom.

  • maven+springboot打成jar包的方法

    maven的命令: 1.mvn clean package -DskipTests:在项目目录下运行此命令,在target目录下生成jar包或war包. 2.mvn clean:清理项目生产的临时文件,一般是模块下的target目录 3.mvn compile -DskipTests:模块安装命令 将打包的的jar/war文件复制到你的本地仓库中,供其他模块使用 -Dmaven.test.skip=true 跳过测试(同时会跳过test compile). 4.mvn test:测试命令,或执行

  • SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案

    由于项目需要,在需要打包的时候,由于引入的外部jar在本地是可以使用的,但是当打包后启动时报错,找不到对应的类. 使用 1.引入外部jar包 项目中简历文件夹lib 可以在resultces包下简历一个lib文件夹,将jar包扔进去: 在配置文件中引用 <dependency> <groupId>com.xx.xxx</groupId> //组织,随便命名 <artifactId>***</artifactId> //包的名字,随便命名 <

  • Maven引入外部jar的几种方法(小结)

    方式1:dependency 本地jar包 <dependency> <groupId>com.jouypub</groupId> <!--自定义--> <artifactId>cloud</artifactId> <!--自定义--> <version>1.0</version> <!--自定义--> <scope>system</scope> <!--s

  • 详解spring boot引入外部jar包的坑

    前言:由于项目需求,短信验证码的接口需要换成阿里大于的,但是尴尬的发现阿里大于的jar包没有maven版本的,于是便开始了一上午的操蛋引包之路.按照套路来说,自然应该是百度一波,但是百度了好久,找了好多方案之后发现,没一个有用的,而且文章的抄袭.拷贝十分严重,试了N种方案,都是错的,都没有将外部jar包打包到BOOK-INF文件夹下.最终,在第N次尝试之后,终于在打的jar包里将外部的jar包导入进来.特此记录下,防止再犯!!! 首先在新建libs文件夹(根目录或者resource目录下都可以)

  • Springboot基于maven打包分离lib及resource

    之前在部署Spring Boot项目时,经常因为只修改了一小处代码.或者只更新了某个jar包,但是却需要将整个项目重新打包.上传.部署,整个包一般都会达到40-60M,每次都重复这个操作真的很耗费时间,因此就想是否能够将依赖lib与项目代码分离出来,每次部署只需要发布代码即可. 项目发版,为了应对更新多变的依赖jar包,实现增量或替换依赖jar包,越来越多的企业实现源代码和依赖jar包和依赖配置分离,更好的应对复杂多变的现场和生产环境,使用maven打包配置如下: <build> <pl

  • Spring Boot Maven Plugin打包异常解决方案

    [背景]spring-boot项目,打包成可执行jar,项目内有两个带有main方法的类并且都使用了@SpringBootApplication注解(或者另一种情形:你有两个main方法并且所在类都没有使用@SpringBootApplication注解),pom.xml如下 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin<

  • 利用Maven实现将代码打包成第三方公共jar包

    目录 一.摘要 二.方法实践 2.1.assembly插件 2.2.shade插件 2.3.Fatjar打包工具(eclipse插件) 三.小结 一.摘要 在项目开发过程中,我们经常需要将一些公共方法提取出来,然后单独封装成一个第三方公共jar包,采用普通的方式打包后的jar,依赖的工程执行编译时,却提示找不到对应的依赖包,那么如何将工程打包为可执行jar包呢? 下面向大家介绍三种通过maven将工程打包成可执行的打包方式. 二.方法实践 2.1.assembly插件 2.1.1.pom.xml

  • Spring Boot项目添加外部Jar包以及配置多数据源的完整步骤

    前言 最近项目需要和Oracle数据库进行交互,然后我从Maven中央仓库下载数据库驱动jar包,但怎么都下不下来,我到Oracle官网上一看,我去,居然不让用Maven直接下(大学时候用过Oracle,很久远的事情了0rz),没办法我还是直接下载jar包放到我的项目里面吧.SpringBoot项目引入外部jar包是非常方便的,包含打引入外部jar等操作. 我的做法如下: 首先在src同级目录建一个lib文件夹,将第三方jar包放到这个文件内,比如我将ojdbc6.jar 这个jar包放到这个地

  • 解决maven打包失败:程序包xxxx不存在问题

    目录 1.问题实质 2.问题原因 3.解决步骤 解决方案1 解决方案2 解决方案3 解决方案4 用Maven引入本地jar包这种做法非常不合理,很容易导致团队jar包混乱,最好尝试搭建私服解决. 1.问题实质 Maven仓库jar包下载失败或项目引入本地jar包Maven没有对应进行配置 2.问题原因 (1)因网络或其他原因导致Maven下载jar包到本地仓库失败 (2)项目引入本地jar包,只在编译器里进行了配置而没有在Maven中进行配置 3.解决步骤 (1)查看对应出错jar包的本地Mav

  • Maven引入本地Jar包并打包进War包中的方法

    1.概述 在平时的开发中,有一些Jar包因为种种原因,在Maven的中央仓库中没有收录,所以就要使用本地引入的方式加入进来. 2. 拷贝至项目根目录 项目根目录即pom.xml文件所在的同级目录,可以在项目根目录下创建文件夹lib,如下图所示: 这4个Jar包是识别网页编码所需的包. 3. 配置pom.xml,依赖本地Jar 配置Jar的dependency,包括groupId,artifactId,version三个属性,同时还要包含scope和systemPath属性,分别指定Jar包来源于

  • maven项目引用外部jar包的方法

    问题描述: 有一个java maven web项目,需要引入一个第三方包gdal.jar,但是这个包是自己打包的,在maven中央库里面找不到该包,因此我采用传统的方式,将这个包拷贝到:项目名称\src\main\webapp\WEB-INF\lib的目录下,然后通过config build path将该gdal.jar包引入到项目工程中.对于传统java web项目,这么做当然没有问题,但是对于maven项目,项目打包(mvn install)时就会报错,在项目调试时(debug on ser

随机推荐