言成言成啊 | Kit Chen's Blog

Maven依赖问题

发布于2022-03-22 22:06:11,更新于2023-03-30 11:34:29,标签:java  转载随意,文章会持续修订,请注明来源地址:https://meethigher.top/blog

好多人使用idea安装maven依赖的时候,都会吐槽idea有bug、或者idea有bug。其实不然。

下面记录几个常见的问题。

镜像拉不到

像我们现在做三维地信的相关内容,java开发时,少不了使用geotools

可以下载源码自己打包后,自己进行依赖的安装,如:

mvn install:install-file -DgroupId=dom4j -DartifactId=dom4j -Dversion=2.1.3 -Dpackaging=jar -Dfile=dom4j-2.1.3.jar

但是geotools在阿里公共镜像上面是没有的,所以我们需要去找可以使用的镜像。

找镜像这种方式,一般就是要靠Google了。一般推荐StackOverFlow,上面的回答都比较有用。就比如我参考的这个。

接下来,就是拉依赖咯。拉依赖也是个技巧活,首先为了不去改本地的maven的conf下面的镜像配置文件,我们可以在pom中指定镜像拉取地址。

1
2
3
4
5
6
7
8
<repositories>
<repository>
<id>geotools</id>
<name>Geotools repository</name>
<!--<url>http://download.osgeo.org/webdav/geotools/</url>-->
<url>https://repo.osgeo.org/repository/geotools-releases/</url>
</repository>
</repositories>

之后,直接maven刷新就行。如果此处拉取不到并且镜像地址肯定可用的话,就是你得科学上网了。

科学上网推荐两种方式

  1. 本地机器的代理打开全局模式拉取
  2. 手机通过配置无线中继,共享热点。这样共享后也是全局的。

放一张手机无线中继的截图,这个app可以通过play商店下载,手机需要root。

镜像拉取到了,idea不识别

如果本地jar包依赖已经确认拉下来了,但是idea还是报错,cannot resolve xxxx的话。

此时,就是你配置的镜像仓库跟你之前拉取jar地址的镜像仓库不一致冲突了,导致idea不识别。

解决办法也很简单粗暴。找到对应的jar包仓库,会发现里面有_remote.repositories,直接将该文件干掉后,再次刷新即可!

因为这个配置文件一旦进行配置,就会优先去他指定的仓库里拉取。

参考maven本地仓库有相应的依赖,依旧会从远程仓库拉取问题解决_皮小白的博客-CSDN博客_maven本地有依赖还从远程下载

新版IDEA拉取不到依赖

前段时间升级了IDEA2021.03.03版本,但是拉取依赖一直存在问题。

排查了下,发现是maven3.8.1以上版本不再支持http拉取依赖了,默认支持https,官方说法更安全。

按照网上说法,修改配置即可。

但是我图方便直接降级3.6.3了。

创建Maven仓库软链接

由于默认存储C盘,导致过于臃肿,所以可以尝试使用软链接。

先理解硬链接与符号链接(软链接)的区别

  1. 硬链接时,文件重命名或文件移动不会改变链接指向,符号链接时文件重命名或文件移动则使链接断开。
  2. 硬链接只能链接文件,符号链接可以链接文件和文件夹
  3. 符号链接可以跨越不同的文件系统创建,硬链接则不可以。

下面是基于Windows的实现软链接。Windows可以直接mklink --help查看帮助命令

1
mklink /d C:\Users\meethigher\.m2 D:\Develop\apache-maven-3.6.3\repo

idea配置保持默认即可

IDEA已有类识别不到

尤其是多模块的项目,初次打开时,明明类已有,但是还是提示find jar on web

这种情况,可以通过删除类,再还原解决,这是针对单个类的。

针对整个项目

  1. 使用IDEA打开项目
  2. 使用文件夹打开项目,删除除git外所有内容
  3. 执行命令,回滚所有代码git checkout -- *
  4. 查看IDEA,右下角提示indexing。然后发现问题解决
发布:2022-03-22 22:06:11
修改:2023-03-30 11:34:29
链接:https://meethigher.top/blog/2022/maven-tips/
标签:java 
付款码 打赏 分享
shift+ctrl+1可控制目录显示