概述
问题
包的依赖结构大体如下
- project-parent
- project-common-----依赖----->outer-api
- project-web
project-web
依赖project-common
,project-common
依赖一个外部包outer-api
,outer-api
是一个私有包,远程仓库并不存在,将它放到D盘下的本地仓库,打包时报Could not find artifact xxxx-xxx.jar
。
做过的尝试
- 怀疑本地文件有问题,
- 最开始怀疑打包时去远程仓库下载包,远程仓库不存在此包才报错;查了好多博客,都说删除
maven_repository/outer-api/_remote.repositories
,但不起作用。
- 最开始怀疑打包时去远程仓库下载包,远程仓库不存在此包才报错;查了好多博客,都说删除
- 只使用本地仓库
- 后来我就想,如果不与远程仓库通信不就没这错误了,maven命令添加参数
--legacy-local-repository
只使用本地仓库,也不起作用。
- 后来我就想,如果不与远程仓库通信不就没这错误了,maven命令添加参数
- 放弃本地仓库,改用设置build path/library的办法
- 不用本地仓库了,将
outer-api
添加到项目的lib
文件夹,依赖scope
改为system
,虽然编译、测试好用,但因为scope=system不能打进包里,所以也失败。
- 不用本地仓库了,将
思来想去,安装到本地仓库是最好的解决方案,兜兜转换又回到了起点,那么明明jar就在本地仓库为什么找不到呢?
转机
后来灵光一闪,在idea中的terminal中打包,不会使用idea的maven配置,这就跟直接启动一个terminal打包一样,跟idea没关系,所以idea配的maven仓库地址用不上,打包时,使用maven_home/conf/settings.xml
中指定的本地仓库位置,因为配置文件没指定,所以使用默认的仓库${user.home}/.m2/repository
也就是C盘的目录下,而outer-api
包安装到的就是D盘,所以才会出现找不到。
idea的maven配置
terminal中执行mvn clean package
不会使用idea的maven配置
在这打包,idea中的maven配置才会起作用
验证
添加-X
选项,打印详细信息,可以看到用得是默认仓库地址(C盘下)
global settings from D:apache-maven-3.6.3bin..confsettings.xml
[DEBUG] Reading user settings from C:UsersAdministrator.m2settings.xml
[DEBUG] Reading global toolchains from D:apache-maven-3.6.3bin..conftoolchains.xml
[DEBUG] Reading user toolchains from C:UsersAdministrator.m2toolchains.xml
[DEBUG] Using local repository at C:UsersAdministrator.m2repository
找到问题症结了,到maven_home/conf/settings.xml
中,指定本地仓库地址
<localRepository>D:apache-maven-repository</localRepository>
再执行命令就好了,已经使用D盘下的仓库了。
[DEBUG] Reading global settings from D:apache-maven-3.6.3bin..confsettings.xml
[DEBUG] Reading user settings from C:UsersAdministrator.m2settings.xml
[DEBUG] Reading global toolchains from D:apache-maven-3.6.3bin..conftoolchains.xml
[DEBUG] Reading user toolchains from C:UsersAdministrator.m2toolchains.xml
[DEBUG] Using local repository at D:apache-maven-repository
思考
如果都是用maven的默认配置,估计就没这么多问题,不过,这样把问题查清了,对maven理解的更深了。综合来看,使用默认的仓库位置即可,idea每次checkout代码,不用再重新配置maven。
最后
以上就是彩色荔枝为你收集整理的maven 本地仓库有指定包,仍然报Could not find artifact xxxx-xxx.jar问题做过的尝试转机验证思考的全部内容,希望文章能够帮你解决maven 本地仓库有指定包,仍然报Could not find artifact xxxx-xxx.jar问题做过的尝试转机验证思考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复