我是靠谱客的博主 彩色荔枝,最近开发中收集的这篇文章主要介绍maven 本地仓库有指定包,仍然报Could not find artifact xxxx-xxx.jar问题做过的尝试转机验证思考,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

问题

包的依赖结构大体如下

  • project-parent
    • project-common-----依赖----->outer-api
    • project-web

project-web依赖project-common,project-common依赖一个外部包outer-apiouter-api 是一个私有包,远程仓库并不存在,将它放到D盘下的本地仓库,打包时报Could not find artifact xxxx-xxx.jar

做过的尝试

  • 怀疑本地文件有问题,
    • 最开始怀疑打包时去远程仓库下载包,远程仓库不存在此包才报错;查了好多博客,都说删除maven_repository/outer-api/_remote.repositories,但不起作用。
  • 只使用本地仓库
    • 后来我就想,如果不与远程仓库通信不就没这错误了,maven命令添加参数--legacy-local-repository只使用本地仓库,也不起作用。
  • 放弃本地仓库,改用设置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问题做过的尝试转机验证思考所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(61)

评论列表共有 0 条评论

立即
投稿
返回
顶部