标签:
A1)除了中央仓库 (http://repo1.maven.org/maven2/)和 私服作为 远程仓库外,还有其他公开的 远程仓库:如 java .net maven 库( http://download.java.net/maven/2 ) 和 JBoss maven 库(http://repository.jboss.com/maven/2)A2)maven 仓库的分类如下:
<!-- localRepository | The path to the local repository maven will use to store artifacts. | | Default: ${user.home}/.m2/repository --> <localRepository>D:\classical_books\java_set\maven_in_action\local_repo\</localRepository>3)problem+solution:
3.1)problem: 构件如何进入到本地仓库中? 一个构件只有在本地仓库中之后,才能被其他 maven 项目使用;3.2)solution: 执行 mvn clean install 命令;
<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>
<!-- START SNIPPET: superpom --> <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>
step1)需要编辑 项目的 pom.xml 文件,配置 distributionManagement 元素;
对以上代码的分析(Analysis):
A0)配置 id, name, url 分别作为 远程仓库的唯一标识, 名称 和 地址;A1)distributionManagement 包含 repository 和 snapshotRepository 子元素,前者表示发布版本构件的仓库,后者表示快照版本的 仓库;A2)关键是url: 它表示 远程仓库的地址;
step2)往远程仓库部署构件的时候,往往需要认证。 简而言之,就是需要在 settings.xml 中创建一个 server元素,其 id 与 远程仓库的 id 匹配,并配置正确的认证信息;(参见 【6.4.1】 远程仓库认证 中的认证内容)step3)配置正确后,在命令行运行 mvn clean deploy: maven 就会将项目构建输出的构件部署到对应的远程仓库了;
mechanism1)当依赖的范围是 system,maven 直接从 本地文件系统解析构件;mechanism2)根据依赖坐标计算仓库路径后,尝试直接从 本地仓库寻找构件,如果发现相应构件,则解析成功;mechanism3)在本地仓库不存在相应构件的case下, 如果依赖的版本是显式的发布版本构件,如1.2 等,则遍历所有的远程仓库,发现后,下载并解析使用;mechanism4)如果依赖的版本是 RELEASE OR LATEST ,则基于更新策略读取所有远程仓库的 元数据 groupId/artifactId/maven-metadata.xml,将其与本地仓库的对应元数据合并后,计算出 RELEASE OR LATEST 真实的值,然后基于该值检查本地仓库 和 远程仓库;mechanism5)如果依赖的版本是 SNAPSHOT,则基于更新策略读取所有远程仓库的元数据 groupId/artifactId/version/ maven-metadata.xml,将其与 本地仓库的对应元数据合并后,得到的最新快照版本的值,然后基于该值检查本地仓库,或者从 远程仓库下载;mechanism6)如果最后解析得到的 构件版本 是 时间戳格式的快照,如 1.4.1-200911-4.121450-121,则复制其时间戳格式的文件 至 非时间戳格式,如 SNAPSHOT ,并使用该 非 时间戳格式的构件;
<mirrors> <!-- mirror | Specifies a repository mirror site to use instead of a given repository. The repository that | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used | for inheritance and direct lookup purposes, and must be unique across the set of mirrors. | <mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror> --> </mirrors>
1.1)problem:如何寻找需要的依赖,因为添加 maven 依赖需要提供所确切的 maven 坐标;1.2)使用 maven 仓库搜索服务Sonatype Nexus(https://repository.sonatype.org/)http://mvnrepository.com/ (访问速度最快)
标签:
原文地址:http://blog.csdn.net/pacosonswjtu/article/details/51707608