[117]maven拉取jar包流程解析

背景

部署本地开发环境的时候,我们需要配置maven settings.xml 以便从远程仓库中拉取代码。

下载jar包的顺序

根据网络请求的便利性,请求的路径一般是 本地仓库 -> 私有仓库(私有网络)->中央仓库(由于中央仓库可能在国外我们可能需要配置镜像)。
我们执行mvn install 的时候会先本地找jar包,如果找不到就去私有仓库,如果还找不到就去中央仓库拉取代码。(当然如果你如果连不上私有仓库网络此时可以把私有仓库注释掉加快下载速度)。

私有仓库

基本上每个公司都会有自己的私有仓库 。私有仓库在settings.xml文件中对应的标签为<repository></repository>,其具体代码如下:

<profile>
            <id>fxiaoke</id>
            <repositories>
                <repository>
                    <id>release</id>
                    <name>XXX repo</name>
                    <layout>default</layout>
                    <url>http://maven.firstshare.cn/artifactory/libs-release</url>
                    <releases>
                      <enabled>true</enabled>
                      <updatePolicy>always</updatePolicy>
                      <checksumPolicy>fail</checksumPolicy>
                    </releases>
                    <snapshots>
                      <enabled>true</enabled>
                      <updatePolicy>always</updatePolicy>
                      <checksumPolicy>fail</checksumPolicy>
                    </snapshots>
                </repository>
            </repositories>

关于中央仓库

maven 中我们通过pom.xml 定义其依赖的jar包及其其他属性,如果我们有多个项目且项目的配置有很多相似的地方,此时没有必要在每个pom.xml 写一遍。我们通过继承机制来实现,只需要在父pom.xml中定义好属性子pom继承即可。

而中央仓库地址(maven 官方存放地址)就定义在超级pom.xml 文件中,超级pom文件比如pom-4.0.0.xml(maven2 为该文件)一般存放在\org\apache\maven\mode目录中。
其内容大致为:

<project>
  <modelVersion>4.0.0</modelVersion>

  <repositories>
    <repository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>
  </repositories>

  <pluginRepositories>
    <pluginRepository>
      <id>central</id>
      <name>Central Repository</name>
      <url>https://repo.maven.apache.org/maven2</url>
      <layout>default</layout>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
      <releases>
        <updatePolicy>never</updatePolicy>
      </releases>
    </pluginRepository>
  </pluginRepositories>

  <build>
  ......
  </build>

  <reporting>
    <outputDirectory>${project.build.directory}/site</outputDirectory>
  </reporting>

  <profiles>
    <!-- NOTE: The release profile will be removed from future versions of the super POM -->
    <profile>
      <id>release-profile</id>
        ......
    </profile>
  </profiles>
</project>

参考

至于具体项目中其结构如何处理的请参考:https://www.cnblogs.com/wkrbky/p/6353285.html

    原文作者:shawnxjf
    原文地址: https://www.jianshu.com/p/27c6c23d6b2a
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞