前言
虽说在开发中用 Maven 的 pom.xml 文件确实提升了效率,但是有时候还是出现各种各样的错误,这里说一下我平时经常遇到的几个问题
关于Maven的配置文件settings.xml
settings.xml 中包含了一些Maven配置的内容,比如资源的下载位置、配置镜像等。
如何找到settings.xml?
- ① 去路径
xxxUser/apache-maven-3.6.3/conf/settings.xml
下找 - ② 如果你用的是IDEA,可以鼠标右键 -> Maven -> Open ‘settings.xml’,如下:
Maven下载包存放位置
从maven中心仓库下载到本地的jar包的默认存放在当前登录系统的用户目录下如xxxUser/.m2/repository
,如果想修改这个位置,可以在 settings.xml 的 <localRepository>
标签下进行修改,如:
<localRepository>/Users/superfarr/mavenRepository</localRepository>
添加Maven镜像
当你在pom.xml文件中添加依赖时,Maven是默认从maven官网上下载的,由于是国外的网站,下载速度比较慢,如果想提升下载速度,可以在 settings.xml 中设置阿里云或华为云的镜像,找到 <mirrors>
标签
添加阿里云/华为云镜像:
<mirrors>
<!--阿里云镜像-->
<mirror>-->
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/repositories/snapshots/</url>
</mirror>
<!--华为云镜像-->
<mirror>
<id>huaweicloud</id>
<mirrorOf>central</mirrorOf>
<name>huaweicloud maven</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
</mirrors>
此外,当出现包处理不了,很可能是因为镜像的问题,因为本机上用的是阿里或华为的镜像,两者资源不同,有些资源也是这两个镜像没有的,有时候切换一下或许可以(切换就是把一个注释掉即可),或者把两个都注释掉,这样就会默认从官网上下载。
Maven是如何搜索pom中的依赖的?
Maven项目的 pom.xml 文件中的依赖,都是先从本地的Maven仓库搜寻,如果找不到,再去寻址下载。这里讲一下,它是如何搜索本地仓库的。
默认是在您当前用户名下的.m2的repository文件夹下,依据pom.xml提供的信息进行搜寻。
例如:
<dependency>
<groupId>com.sina</groupId>
<artifactId>java-bloomfilter</artifactId>
<version>1.0</version>
</dependency>
- 最终认定路径是:
xxxUser/.m2/repository/com/sina/java-bloomfilter/1.0
pom 引入二方包的问题
什么是二方包可以自己去搜一下,简单来说就是自己的一个项目依赖另一个项目,然后比如将另一个项目打包,然后在这个项目中引入另一个包的依赖。这里讲一下当导入自己编译的 jar 包时出现的问题…
自己的项目打包的时候会默认将其放在对应的文件夹下,比如名为mango-common的项目,该项目的包结构为com.hory.mango-common
,则打包后在本地的路径为:
mavenRepository/com/hory/mango-common/0.0.1-SNAPSHOT
这时候在 pom 中引入依赖的时候应该如下:
<dependency>
<groupId>com.hory</groupId>
<artifactId>mango-common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
如果在pom中导入了依赖还是报错,就自己手动导吧:
File–>Project Stracture–>Modules–>Dependencies–> + -->JARs or Directories–> superfarr/mavenRepository/com/hory/mango-common
导入mango-common整个文件夹即可!
如果还不行,试着将本地的包删除重新编译一下,然后重新在pom导入一下应该就可以了。