背景

有时候项目里需要使用一些没有源码的三方jar包,通过在pom里添加systemPath来指明jar包的位置,在本地调试的时候一切ok,但是同样的代码通过mvn package发到线上运行就提示依赖的jar包找不到。

原因

当引用第三方包,且没有源代码时候,可以使用systemPath

<dependency><groupId>ctec</groupId><artifactId>xxx-core</artifactId><version>1.0</version><scope>system</scope><systemPath>${project.basedir}/src/main/resources/libs/xxxxxx.jar</systemPath>
</dependency>

划重点!!!敲黑板!!!下面的一步配置也是最重要的一步,缺少这一步,就会导致虽然本地可以运行,但是只要使用mvn打包就不行,因为scope为system的maven默认是不打包进去的。

需要使用true

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

原理讲解

pom中的scope类型

dependency的scope有五种:

  1. compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去

  2. test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如junit

  3. runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段

  4. provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作

  5. system:从参与度来说,和provided相同,不过被依赖项不会从maven仓库下载,而是从本地文件系统拿。需要添加systemPath的属性来定义路径

由此可见,scope为system的依赖,maven默认是不打包进去的,这也是导致线上提示jar缺失的原因。如果需要将scope为system的依赖也打包进来,需要添加true。

常见内置变量

  • ${project.basedir} 项目根目录
  • ${project.build.directory} 构建目录,缺省为target
  • ${project.build.outputDirectory} 构建过程输出目录,缺省为target/classes
  • ${project.build.finalName}产出物名称,缺省为${project.artifactId}-${project.version}
  • ${project.packaging} 打包类型,缺省为jar
  • ${project.xxx} 当前pom文件的任意节点的内容

springboot应用上线后,提示找不到本地jar包的原因相关推荐

  1. Maven引入本地jar包,解决打包时找不到本地jar包

    springboot,maven引入本地jar,生成pdf使用,找不到类问题 参考:Maven引入本地jar包,解决打包时找不到本地jar包 日志 Caused by: java.lang.NoCla ...

  2. codeblocks安装后提示找不到编译器,也找不到MinGW目录

    codeblocks安装后提示找不到编译器,网上一搜全是更改编译器目录: 可是我试了半天,一直找不到MinGW目录,原来我安装的是不带编译器的版本: 如上图,红框内才是带编译器的.

  3. Springboot中引入本地jar包,并通过maven打包(解决maven丢包的问题)

    如何引入本地jar包 新建一个dependency标签,在标签中填写groupId,artifactId,version,scope,systemPath 例: <dependency>& ...

  4. 运行tomcat 时报错,提示无法找到相关的jar包 Publishing failed with multiple errors Error reading file

    1.问题描述:运行tomcat 时报错,提示无法找到相关的jar包,如下 Publishing failed with multiple errors Error reading file C:\Us ...

  5. SpringBoot项目依赖本地jar包

    1.问题来源 我们在搭建项目时,常常需要用到本地jar包,相信大家在网上找到很多maven依赖本地jar包的写法,也很成功的启动了.但是,我们将项目打成jar包或者war包部署到服务器上启动时可能就会 ...

  6. SpringBoot前后端分离项目中如何制作前端jar包(类似swaggerUI前端jar包制作方法)

    SpringBoot前后端分离项目中如何制作前端jar包(类似swaggerUI前端jar包制作方法) 可用于SpringBoot引用的前端UI的Jar包,类似于SwaggerUI包 WABJAR介绍 ...

  7. 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法

    使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法 参考文章: (1)使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没 ...

  8. Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署

    最近尝试引入阿里云的短信验证码,阿里云的core sdk是maven就有的,但是短信相关的jar包却不是放在maven的,所以得引入本地的下载回来的jar包.本地开发直接引入,idea是可以直接跑调用 ...

  9. SpringBoot项目开发(十):引用本地jar包与打包本地jar

    标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...

最新文章

  1. 暴雪战斗公式——除法公式的精髓
  2. linux -- ./configure --prefix 命令
  3. javascript实现tab切换的方法(2)
  4. C# 调用人脸识别 虹软ArcFace2.0实例
  5. react取消捕获_react 异常捕获
  6. OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)
  7. spring整合CXF
  8. 基于Adobe LCDS产品的数据访问解决方案Part4
  9. 深入理解JVM虚拟机(一):JVM运行时数据区
  10. PDF控件Aspose.Pdf 18年新版18.1发布 | 附下载
  11. 算法竞赛入门经典 aabb
  12. android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
  13. wine装通达信_通过wine使用通达信、钱龙、同花顺、大智慧软件
  14. html微信字体大小布局,微信小程序界面设计入门课程样式wxss中使用css课程字体fontsize字体大小...
  15. ‘latin-1‘ codec can‘t encode characters in position 5-17: ordinal not in range(256) 在请求数据的时候提示报错
  16. HTML播放器快进不显示进度条,MediaSource播放视频,快进(直接点击进度条)的时候怎么知道range范围呢...
  17. 三个角度细谈:如何发挥朋友圈广告的威力
  18. 网站权重是什么意思?
  19. 部分ADSL猫的默认密码
  20. 一个爬虫练习游戏:黑板课爬虫闯关

热门文章

  1. HTML与CSS实战
  2. mysql.sock 误删_MySQL sock 文件丢失被删除解决方法 雪剑无影
  3. DOKUWIKI的安装以及DOKUWIKI与WORDPRESS共存
  4. SharePoint 命令 安装、部署、回收、删除、更新 wsp包 (Solution)
  5. 推荐 6 个 GitHub 开源项目
  6. 如何将图片的宽度改为800?图片的尺寸怎么修改?
  7. STM32使用EMWin实现中文字体显示
  8. cheerio 中文文档
  9. 【数据库】数据库系统概念
  10. oracle-增删查改