本章非常简单 只是帮你了解一下你的依赖到底从哪里来,到那里去
Maven 中的仓库包含各种类型的构建产物和依赖包。仓库有两种类型:本地仓库和远端仓库
本地和远端仓库的结构相同,因此脚本可以在任意一侧运行,也同步以供脱机使用(即本地与远端仓库同步)。因此,存储库的分布对 Maven 用户来说是完全透明的。
一般来说,您不需要定期对本地仓库进行任何操作,除非在磁盘空间不足时将其清除(或者在愿意再次下载所有内容时将其完全删除)。对于远端仓库,它们可用于下载和上传(如果您有权限的话)。
当本地的项目声明了一个本地仓库不存在的依赖时会触发 maven 的下载操作(或者声明的是一个 SNAPSHOT (快照版本),远端的仓库会包含最新的版本)。在默认情况下,maven 会从 中央仓库( repo.maven.apache 组织网/maven2/) 获取这个依赖,如果您想优先从其他的地方下载,就需要指定一下 mirror (镜像) 地址。
你可以在 setting.xml 指定全局的镜像地址,你也可以通过 pom.xml 指定当前项目使用的地址。
当我们希望有个仓库从地理位置上比较近可以节约传输的时间,或者我们所需要的包只有私有的仓库存在时,我们就可以配置一下镜像地址来帮助我们更快更好地获取到依赖。
首先找到 ${user.home}/.m2/settings.xml 这个配置文件 若你是 windows 应该是 C:\Users\{用户名}\.m2\setting.xml
这里我用 ali 的举个例子
<settings>
...
<mirrors>
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<name>aliyun</name>
<url> http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>aliyun</id>
<mirrorOf>*</mirrorOf>
<name>aliyun</name>
<url> http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
</mirrors>
...
</settings>
虽然我们可以通过指定多个 mirror 的标签来填入多个镜像 但是 mirrorOf 相同的情况下,仅会选择靠前的镜像,当 jar 包下载失败后,是不会去第 2 个镜像下载的。
正确解法应该是 setting.xml 配置一个,需要特殊指定的仓库在 pom.xml 指定即可
你可以在你的项目中的 pom.xml 中加一条这个
<project>
...
<repositories>
<repository> <!-- id 可以随便取,只要不重名即可 -->
<id>my-internal-site</id>
<url> https://myserver/repo</url>
</repository>
</repositories>
...
</project>
如果你链接的仓库需要认证信息,就在 id 标签内设置登录信息即可
一般是你想要试试某些框架/库的快照版本,一般这种不会上传到 maven 中心仓库而是上传到自家的仓库,这种情况就可以用这个方法
比如说 spring 的快照仓库就是
<repository>
<id>spring-milestone</id>
<name>Spring Milestone Repository</name>
<url> https://repo.spring.io/milestone</url>
</repository>
有时,您需要将第三方 JAR 放在本地仓库才能在构建中使用,因为它们不存在于任何公共仓库中(如 Maven Central)( search.maven 组织网/) 中。
JAR 必须放置在本地仓库的正确位置,以便 Apache Maven 正确地找到它
1,若已经存在了 jar 包
mvn install:install-file -Dfile=<path-to-file> -DgroupId=<group-id> -DartifactId=<artifact-id> -Dversion=<version> -Dpackaging=<packaging>
2,存在 jar 而且存在一个 pom.xml
mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>
3,从源码开始构建然后放到仓库
mvn install
举个例子


