springboot应用上线后,提示找不到本地jar包的原因
背景
有时候项目里需要使用一些没有源码的三方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有五种:
compile:默认值 他表示被依赖项目需要参与当前项目的编译,还有后续的测试,运行周期也参与其中,是一个比较强的依赖。打包的时候通常需要包含进去
test:依赖项目仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包,例如junit
runtime:表示被依赖项目无需参与项目的编译,不过后期的测试和运行周期需要其参与。与compile相比,跳过了编译而已。例如JDBC驱动,适用运行和测试阶段
provided:打包的时候可以不用包进去,别的设施会提供。事实上该依赖理论上可以参与编译,测试,运行等周期。相当于compile,但是打包阶段做了exclude操作
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包的原因相关推荐
- Maven引入本地jar包,解决打包时找不到本地jar包
springboot,maven引入本地jar,生成pdf使用,找不到类问题 参考:Maven引入本地jar包,解决打包时找不到本地jar包 日志 Caused by: java.lang.NoCla ...
- codeblocks安装后提示找不到编译器,也找不到MinGW目录
codeblocks安装后提示找不到编译器,网上一搜全是更改编译器目录: 可是我试了半天,一直找不到MinGW目录,原来我安装的是不带编译器的版本: 如上图,红框内才是带编译器的.
- Springboot中引入本地jar包,并通过maven打包(解决maven丢包的问题)
如何引入本地jar包 新建一个dependency标签,在标签中填写groupId,artifactId,version,scope,systemPath 例: <dependency>& ...
- 运行tomcat 时报错,提示无法找到相关的jar包 Publishing failed with multiple errors Error reading file
1.问题描述:运行tomcat 时报错,提示无法找到相关的jar包,如下 Publishing failed with multiple errors Error reading file C:\Us ...
- SpringBoot项目依赖本地jar包
1.问题来源 我们在搭建项目时,常常需要用到本地jar包,相信大家在网上找到很多maven依赖本地jar包的写法,也很成功的启动了.但是,我们将项目打成jar包或者war包部署到服务器上启动时可能就会 ...
- SpringBoot前后端分离项目中如何制作前端jar包(类似swaggerUI前端jar包制作方法)
SpringBoot前后端分离项目中如何制作前端jar包(类似swaggerUI前端jar包制作方法) 可用于SpringBoot引用的前端UI的Jar包,类似于SwaggerUI包 WABJAR介绍 ...
- 使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法
使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没有包含的解决方法 参考文章: (1)使用idea 在springboot添加本地jar包的方法 部署的时候本地jar没 ...
- Springboot中如何引入本地jar包,并通过maven把项目成功打包成jar包部署
最近尝试引入阿里云的短信验证码,阿里云的core sdk是maven就有的,但是短信相关的jar包却不是放在maven的,所以得引入本地的下载回来的jar包.本地开发直接引入,idea是可以直接跑调用 ...
- SpringBoot项目开发(十):引用本地jar包与打包本地jar
标题可能有点绕口,在实际开发中,有时所引用的jar架包无法在 maven 中央仓库里找到,那么j就要引用本地jar包,然而在项目开发完成后,需要打包部署时,引用的本地jar包没有打包进去部署包,就会导 ...
最新文章
- 暴雪战斗公式——除法公式的精髓
- linux -- ./configure --prefix 命令
- javascript实现tab切换的方法(2)
- C# 调用人脸识别 虹软ArcFace2.0实例
- react取消捕获_react 异常捕获
- OVS VxLAN Flow 分析 - 每天5分钟玩转 OpenStack(149)
- spring整合CXF
- 基于Adobe LCDS产品的数据访问解决方案Part4
- 深入理解JVM虚拟机(一):JVM运行时数据区
- PDF控件Aspose.Pdf 18年新版18.1发布 | 附下载
- 算法竞赛入门经典 aabb
- android webview 魅族,魅族 Flyme 系统出现大面积应用闪退问题,提供临时解决方法...
- wine装通达信_通过wine使用通达信、钱龙、同花顺、大智慧软件
- html微信字体大小布局,微信小程序界面设计入门课程样式wxss中使用css课程字体fontsize字体大小...
- ‘latin-1‘ codec can‘t encode characters in position 5-17: ordinal not in range(256) 在请求数据的时候提示报错
- HTML播放器快进不显示进度条,MediaSource播放视频,快进(直接点击进度条)的时候怎么知道range范围呢...
- 三个角度细谈:如何发挥朋友圈广告的威力
- 网站权重是什么意思?
- 部分ADSL猫的默认密码
- 一个爬虫练习游戏:黑板课爬虫闯关