详解Maven仓库之本地仓库、远程仓库
在 Maven 工程中使用 Maven 仓库是非常常见的一件事,本地仓库是指位于本地计算机中的 Maven 仓库,而远程仓库是指位于远程服务器上的 Maven 仓库。
本地仓库
本地仓库的作用
本地仓库是 Maven 的一个重要概念,Maven 在构建 Java 项目时需要依赖很多的 Jar 包,本地仓库就很好的解决了 Jar 包的管理问题。
本地仓库的位置
本地仓库默认位于用户目录下的 .m2
目录下,可以通过修改 settings.xml
文件来改变本地仓库的位置。在 settings.xml
文件中可以使用如下代码来修改本地仓库位置:
<settings>
<localRepository>/path/to/local/repo</localRepository>
</settings>
本地仓库文件结构
本地仓库的文件结构如下:
.local_repository/
├─com/
│ └─example/
│ └─example/
│ └─1.0/
│ ├─example-1.0.jar
│ ├─example-1.0.pom
│ ├─example-1.0-sources.jar
│ ├─example-1.0-javadoc.jar
│ └─_remote.repositories
├─org/
│ └─apache/
│ └─maven/
│ ├─apache-maven/
│ │ └─3.6.0/
│ │ ├─apache-maven-3.6.0-bin.zip
│ │ ├─apache-maven-3.6.0-src.zip
│ │ ├─apache-maven-3.6.0-bin.tar.gz
│ │ ├─apache-maven-3.6.0-src.tar.gz
│ │ └─_remote.repositories
│ └─plugins/
│ ├─maven-compiler-plugin/
│ │ └─3.5.1/
│ │ ├─maven-compiler-plugin-3.5.1.jar
│ │ ├─maven-compiler-plugin-3.5.1.pom
│ │ └─_remote.repositories
│ └─maven-surefire-plugin/
│ └─2.22.0/
│ ├─maven-surefire-plugin-2.22.0.jar
│ ├─maven-surefire-plugin-2.22.0.pom
│ └─_remote.repositories
...
本地仓库中的文件结构中默认按照 Maven 坐标(groupId、artifactId、version)来进行存储。
远程仓库
远程仓库的作用
在进行开发时,我们会遇到一些第三方库,这些库并没有在本地仓库中存在,此时我们就需要借助第三方仓库。在 Maven 中,第三方仓库就表现为远程仓库。远程仓库既可以是公共的,也可以是私有的。
远程仓库的设置
在 settings.xml
文件中可以使用如下代码来添加远程仓库:
<settings>
...
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
</repository>
</repositories>
...
</settings>
其中,id
是远程仓库的标识符,url
是远程仓库的地址。
远程仓库中心
Maven 中心仓库就是一个公共的远程仓库,它是 Maven 中心仓库群的主要仓库。在 Maven 应用中,只要你的代码中依赖的 Jar 包在 Maven 中心仓库中发布,那么就可以通过 Maven 自动下载并且自动管理了,所以在设置远程仓库时推荐添加 Maven 中心仓库:
<settings>
<mirrors>
<mirror>
<id>aliyun-maven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>develop</id>
<repositories>
<repository>
<id>central</id>
<url>https://maven.aliyun.com/repository/central</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>https://maven.aliyun.com/repository/central</url>
</pluginRepository>
</pluginRepositories>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
</profiles>
<activeProfiles>
<activeProfile>develop</activeProfile>
</activeProfiles>
</settings>
代码中增加一个依赖:
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
使用 mvn clean install
命令进行构建,可以在本地仓库中看到 junit 的 Jar 包,此时 Maven 就自动从远程仓库中下载了 junit Jar 包,因为 Maven 默认会把中心仓库地址作为远程仓库去下载 Jar 包和 POM 文件。
另外,当我们需要向远程仓库发布自己的 Jar 包时,需要在 pom.xml
文件中添加如下配置内容:
<distributionManagement>
<repository>
<id>repo</id>
<url>http://example.com/repository/</url> <!-- 远程仓库地址 -->
</repository>
</distributionManagement>
此时在执行 mvn deploy
命令时就会将文件发布到指定的远程仓库中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解Maven仓库之本地仓库、远程仓库 - Python技术站