maven依赖本地jar包
条评论项目情况
没有搭建私仓,多模块依赖的父子模块(工程),需要依赖提供商提供的jar包。期望:
- 在需要依赖该模块的模块下依赖,不将该jar影响其他模块
- 打包简单,在其他同事启动项目是不要手动处理这个jar包。
本文介绍三种方式:
- 打包时,将jar移至BOOT-INF
- 打包时,将jar安装至本地仓库
- 创建一个不同的本地仓库
将jar移至BOOT-INF
实现方案
将jar放置需要依赖的模块下面。
然后直接依赖就好了,groupId、artifactId、version,随意写,方便你认识就好。
1 | <dependencies> |
这是在你代码中已经可以i使用该jar了,但是启动会找不到类。还需要在打包时将该jar包放置BOOT-INF目录下。
1 | <build> |
弊端
这种方案之所以推荐,是因为存在弊端,springboot的main提供没有问题,但是打成war使用tomcat启动会找不到类。要解决这个问题,需要在springboot的启动模块中,再引入该jar包,然后将其放置WEB-INF下。
将jar安装至本地仓库(推荐)
在 pom 文件中使用 maven-install-plugin 插件的方式,这种方式会在 maven initialize 阶段将相应的 jar 包安装到本地仓库,后续使用只需正常maven依赖即可。但是这个动作得在你所需要依赖的模块打包之前,我是新建一个模块用来完成这个动作,然后在所需要依赖模块中依赖新建的模块。
将jar包放置新建的模块的lib目录下,然后在pom中添加
1 | <build> |
接着在所需要依赖jar包的模块中,直接依赖即可
1 | <dependency> |
创建一个不同的本地仓库
不同在于 jar 包安装的仓库位置。假如我们有一个本地仓库,名称为 maven-repository,位置在 ${basedir}(pom.xml所在的根路径)。第一步要做的就是将 jar 包部署到本地仓库,如下所示:
1 | mvn deploy:deploy-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=jar -Durl=file:./maven-repository/ -DrepositoryId=maven-repository -DupdateReleaseInfo=true |
通常 Maven 命令 deploy:deploy-file 会将 artificial 安装在远端仓库中,但是在本例子中仓库地址在本地。 添加完 jar 包后需要在对应的 pom 文件添加对应的仓库:
1 | <repositories> |
然后添加对应的依赖:
1 | <dependency> |
- 本文链接:https://www.ofcoder.com/2020/03/14/java/maven%E4%BE%9D%E8%B5%96%E6%9C%AC%E5%9C%B0jar%E5%8C%85/
- 版权声明:Copyright © 并发笔记 - ofcoder.com. Author by far.
分享