现如今,使用spring-boot和maven开发项目已经越来越普遍了,同时大多时候我们也是通过maven以及公共的repo和私服repo来管理自己的jar包依赖,但难免会碰到有些jar包需要放在本地,通过本地jar包的形式加载到自己的项目里。

本文主要阐述这种情况下怎么处理,项目中虽然使用的spring-boot,但是还是打包成了war包,项目结构如下

project-A  //父工程module-a //启动类模块同时也是打包模块module-a-pom.xml //packaging为warmodule-b //需要使用本地lib的模块module-b-pom.xmlpom.xml //packaging为pomlib //存放本地lib的目录

为了能够在部署war包后项目能够正常运行,需要做下面几件事

1. 如何在需要的模块中引用本地的包?

这里也即如何在 module-b 中引用lib目录中的jar包,如下配置

<dependency><groupId>your.package.groupId</groupId><artifactId>your.package.artifactId</artifactId><version>your.package.artifactId</version><scope>system</scope><systemPath>${basedir}/../libs/your-package.jar</systemPath>
</dependency>

上述中,前三个和我们正常的maven配置一样,这需要注意的就是<systemPath>配置了,需要使用绝对路径,指向你的本地jar包路径${basedir}表示项目根目录,但是这里的根目录并不是我所想的父模块的目录(即project-A目录路径)而是该pom所在的模块的目录(即module-b目录)${basedir}代表的应该是本pom所在的模块对应的目录,所以我们需要使用 ../ 来找到对应的jar包。为了解决这个问题,自己google了下:

how to get the super pom basedir in a child module pom?​stackoverflow.com

有几种方案,比如使用${project.parent.basedir}或者在父pom中定义<rootPath> ${basedir} </rootPath>然后在子pom中使用${rooPath}本人实践均无效。

2. 如何将本地的jar包打包进项目的war包?

按照1中配置完后编译没有问题,但是运行则报错,发现本地的lib并没有打包到war包中 WEB-INF/lib目录里,我们还需要在启动模块进行配置,这里即 module-a模块,如下配置:

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><configuration><includeSystemScope>true</includeSystemScope></configuration></plugin><!-- 下面是为了将本地jar包打入WEB-INF/lib下而增加的配置--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><configuration><webResources><resource><!-- 指向的是包含所有要用jar包的目录 --><directory>${basedir}/../libs</directory><!-- 编译后要把这些jar包复制到的位置 --><targetPath>WEB-INF/lib</targetPath></resource></webResources></configuration></plugin></plugins>
</build>

这里需要配置两个地方

  • spring-boot-maven-plugin插件配置<includeSystemScope>true</includeSystemScope>
  • 增加 maven-war-plugin插件,这里的<directory>也需要按照1中方法正确指向你的本地jar包所在的目录

至此,便可以在spring-boot的war包中将本地的jar包打包进去从而顺利运行。

androidstudio引用本地maven_Maven多模块如何打包本地的jar包到war中相关推荐

  1. 打包部署时jar包和war包的区别

    springboot打成jar包时,pom文件里有一些tomcat的jar包引用,就是spring boot内置的tomcat, 打war包时,需要注释掉这些tomcat的引用 maven的三种项目打 ...

  2. jar打包 剔除第三方依赖以及它的依赖_maven打包成第三方jar包且把pom依赖包打入进来的方法...

    添加此PLUGIN到项目的POM.XML中 maven-assembly-plugin com.allen.capturewebdata.Main jar-with-dependencies 如果出现 ...

  3. no main manifest attribute maven package 运行打包后的jar包报错:xxx.jar中没有主清单属性 通过配置 maven plugin 解决

    文章目录 命令行运行生成的jar包,报错 解决 手动修复 修改打包规则 一劳永逸 MANIFEST.MF demo Others IDEA 中关于 main class 的配置 命令行运行生成的jar ...

  4. Maven 打包成第三方jar包且把pom依赖包打入进来的方法

    <Maven 打包成第三方jar包且把pom依赖包打入进来的方法> 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! <Maven 打包成第三方jar包且把po ...

  5. Intellij IDEA开发环境搭建,scala配置及打包,jar包在spark中的运行

    1. Intellij IDEA 开发环境搭建 最近在学习scala,除需要编写scala程序外,同时还需要创建maven工程,打成Jar包,而Eclipse在这方面显得使用的不是那么方面,同时由于I ...

  6. 【收藏】Maven 生成打包可执行jar包

    Maven 生成打包可执行jar包 https://blog.csdn.net/daerzei/article/details/82883472

  7. pom 的第三方jar报错_01_maven-将第三方jar包一起打包到项目 jar 包中

    前言:maven-将依赖的 jar包一起打包到项目 jar 包中 有时候在项目开发中,需要很多依赖的 jar 包,其中依赖的 jar 包也会依赖其他的 jar 包,导致jar 包的管理很容易不全. 如 ...

  8. IDEA 打包可执行 jar 包

    Idea 打包可执行 jar 包 1.参考资料 idea打包java可执行jar包 Intellij Idea 将java项目打包成jar,cmd运行该jar 2.操作步骤 在项目上右击,选择[Ope ...

  9. 使用IDEA打包项目(jar包和war包)

    介绍 jar包 假设将整个项目视为一堵墙,那么jar包就是砖块,将写好的类进行打包的过程就是烧制砖块的过程.jar包是class文件和部署文件的归档,不包含静态文件,它不仅用于压缩和发布,还用于部署和 ...

最新文章

  1. 2.2. php://stdin php://stdout
  2. Grunt手表错误 - 等待...致命错误:观看ENOSPC
  3. oracle数据库可以存图片吗,如何往数据库(Oracle)里存储图片和文件
  4. spring教程极客学院,Mybatis-Plus学习总结(超详细整理
  5. 【转帖】dopod touch diamond 应用小常识:)
  6. Swift中的模式分类
  7. [ATF]-ATF文档和代码的深度解读
  8. JavaScript:向数组开头添加
  9. 2019年4月第四周_2012年4月最佳怪胎文章
  10. fastText初探
  11. [Python2] List-comprehensions 列表推导式
  12. OC 与 C++ 混编导致 ’string‘ not found
  13. xm文件转换为mp3_怎么才能将M4A转换为MP3?秘籍公开
  14. JDK环境变量正确设置之后还是不生效
  15. 用u盘装linux系统的操作全程图解,笔者教你用u盘装系统的操作全程图解
  16. 日志易使用系列四:日志采集 Agent 的配置
  17. Laravel文档梳理2、路由相关
  18. 打造高可用iOS进度条
  19. 协成 协成驱动方式 事件驱动
  20. AppLocker 简要实验笔记

热门文章

  1. uniapp 开发h5 优化加载速度
  2. 2019湖南职高计算机总分是多少,2019湖南高职单招一般多少分能过
  3. php如何数字转字符串,php如何实现数字转字符串
  4. android百度地图根据点路线规划,Android 百度地图路径规划一直都是搜索不到结果...
  5. 三维坐标 偏转_三维坐标变换原理-平移, 旋转, 缩放
  6. 液晶显示器的台式计算机耗电,电脑的显示器一开一关耗电量大么 注意 是显示器的开关...
  7. java print int_java – 在printin输入int
  8. css3 hover显示隐藏过渡,CSS3中 “hover” 样式 和 动画过渡 的问题。
  9. android自动路由,GitHub - greatzi/RouterKit: 又一个路由库;Android平台对页面、服务的路由框架。自动化且易用。...
  10. 线路板铜厚测试软件,厚铜线路板的铜厚是如何实现的