maven3实战之仓库(远程仓库的配置)
----------
在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中,如:JBoss,Maven仓库。这时,可以在POM中配置该仓库,见代码请单:
- <project>
- ...
- <repositories>
- <repository>
- <id>jboss</id>
- <name>JBoss Repository</name>
- <url>http://repository.jboss.com/maven2/</url>
- <releases>
- <enabled>true</enabled>
- </releases>
- </repository>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- <layout>default</layout>
- </repositories>
- ...
- </project>
在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。该例中声明了一个id为jboss,名称为JBoss Repository的仓库。任何一个仓库声明的id必须是唯一的,尤其需要注意的是,maven自带的中央仓库使用的id为central,如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置。该配置中的url值指向了仓库的地址,一般来说,该地址都基于http协议,maven用户都可以在浏览器中打开仓库地址浏览构件。
该例配置中的releases和snapshots元素比较重要,它们用来控制Maven对于发布版构件和快照版构件的下载。该例中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。该例中的layout元素值default表示仓库的布局是Maven2及Maven3的默认布局,而不是Maven1的布局。
对于releases和snapshots来说,除了enabled,它们还包含另外两个子元素updatePolicy和checksumPolicy:
- <snapshots>
- <enabled>true</enabled>
- <updatePolicy>daily</updatePolicy>
- <checksumPolicy>ignore</checksumPolicy>
- </snapshots>
元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的 值是daily,表示Maven每天检查一次。其他可用的值包括:never---从不检查更新;always---每次构建都检查更 新;interval:X---每隔X分钟检查一次更新(X为任意整数)。
元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和 文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?当checksumPolicy的值为默认的warn时,Maven 会在执行构建时输出警告信息,其他可用的值包括:fail---Maven遇到校验和错误就让构建失败;ignore---使用Maven完全忽略校验和 错误。
1.远程仓库的认证
大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提认证信息才能访问一些远程仓库。例如,组织内部有一个Maven仓库服 务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名级密码。这时,为了能让Maven访问 仓库内容,就需要配置认证信息。
配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中。这是因为POM往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只放在本机。因此,settings.xml中配置认证信息更为安全。假设需要为一个id为my-proj的仓库配置认证信息,编辑settings.xml文件见代码清单:
- <settings>
- ...
- <servers>
- <server>
- <id>my-proj</id>
- <username>repo-user</username>
- <password>repo-pwd</password>
- </server>
- </servers>
- ...
- </settings>
Maven使用settings.xml文件中并不显而易见的servers元素及其server子元素配置仓库认证信息。上例中,仓库的认证用户名为repo-user,认证密码为repo-pwd。这里的关键是id元素,settings.xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。换句话说,正是这个Id将认证信息与仓库配置联系在了一起。
2.部署至远程仓库
私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其他团队成员使用。
Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中。首先,需要编辑项目的pom.xml文件。配置distributionManagement元素,见代码:
- <project>
- ...
- <destributionManagement>
- <repository>
- <id>proj-releases</id>
- <name>Proj Release Repository</name>
- <url>http://192.168.1.100/content/repositories/proj-releases</url>
- </repository>
- <snapshotRepository>
- <id>proj-snapshots</id>
- <name>Proj Snapshot Repository</name>
- <url>http://192.168.1.100/content/repositories/proj-snapshots</url>
- </snapshotRepository>
- </destributionManagement>
- ...
- </project>
distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。这两个元素下都需要配置id、name和url,id为该远程仓库的唯一标识,name是为了方便人阅读,关键的url表示该仓库的地址。
往远程仓库部署构件的时候,往往需要认证。就是需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。
相关推荐
《Maven3实战》这本书是Java开发者不可或缺的参考资料,它深入浅出地介绍了Maven这一强大的项目管理和构建工具。在Java开发中,Maven3以其规范化的项目结构、自动化构建和依赖管理等功能,极大地提高了开发效率和...
7. **Maven仓库管理**:Maven使用本地仓库存储下载的依赖,也支持远程仓库(如Maven Central Repository)。理解如何配置Maven仓库,以及如何部署自己的构件到私有仓库,对于构建复杂的企业级项目非常重要。 ### ...
Maven仓库主要分为本地仓库、中央仓库和远程仓库。 - **本地仓库**:位于开发者的计算机上,Maven默认的本地仓库路径为用户主目录下的`.m2/repository`。当Maven执行构建时,会首先检查本地仓库是否有所需的依赖,...
安装Maven通常涉及下载最新版本的Maven,设置环境变量,以及配置`settings.xml`文件以指定本地仓库位置和远程仓库镜像。 2. **仓库依赖管理**:Maven的核心功能之一是管理项目依赖关系。通过在`pom.xml`文件中声明...
标题中提及的“Maven3实战笔记”指向了Maven这款流行的Java项目管理和自动化构建工具的第三个主要版本。Maven自从引入以来,就极大地简化了Java项目的构建过程,提高了项目构建的标准化程度。它使用项目对象模型...
1. **依赖解析**是Maven的核心功能之一,它通过搜索本地仓库和远程仓库来获取项目所需的依赖。 2. **插件解析**则让开发者能够方便地自动化构建过程中的各种任务。 理解和掌握这些基础知识对于有效使用Maven非常...
读者还将了解到Maven仓库的概念,包括本地仓库、远程仓库和中央仓库,以及如何自建私有仓库。 本书还会详细讲解Maven的聚合和模块化构建,这对于大型企业级应用的构建尤为有用。通过parent POM,可以统一管理多个子...
### Maven实战:Maven的安装、配置及使用入门 #### Maven概述 Maven是一款流行的Java项目管理和理解工具,由Sonatype公司支持,并广泛应用于Java项目的构建、依赖管理和文档生成等领域。Maven通过一种约定优于配置...
- **仓库**:存放依赖包的地方,分为本地仓库和远程仓库。 - **插件**:扩展Maven功能的工具,每个插件可以执行一个或多个任务。 #### Maven的基本使用 - **安装和配置**:确保Java环境安装完毕后,下载并安装Maven...
**Maven3实战笔记概述** Maven3是Apache软件基金会开发的一款项目管理和综合工具,它主要解决了Java项目构建过程中的依赖管理和项目信息管理问题。在Java开发领域,Maven3以其标准化的构建流程、强大的依赖管理和...
3. **Maven的仓库系统**: 详细解释了本地仓库、中央仓库和远程仓库的概念,以及如何配置和使用它们。 4. **Maven的生命周期与构建阶段**: 分析Maven的clean、default和site三个主要生命周期,以及每个阶段的任务。 ...
《Maven实战源码》是一本专为Java开发者设计的指南,旨在帮助初学者和有经验的开发者深入理解和掌握Maven这一强大的项目管理和构建工具。Maven不仅简化了项目的构建过程,还通过依赖管理和插件机制,使得软件开发...
- **maven-deploy-plugin**:负责将构建好的包部署到远程仓库。 #### Maven生命周期与插件的关系 在Maven的生命周期中,每个阶段都可以绑定一个或多个插件的目标。当Maven执行到某个阶段时,会自动调用绑定在这个...
在默认阶段,我们关注的主要目标有`compile`(编译源代码)、`test`(运行单元测试)、`package`(打包应用)、`install`(将构建的软件安装到本地仓库)和`deploy`(将最终的软件部署到远程仓库)。 在Maven中,...
- 部署到本地和远程仓库 - 使用`mvn deploy`命令发布项目 - 配置settings.xml文件以连接不同的Maven仓库 - Nexus或Artifactory等Maven仓库管理工具的使用 4. **ch-8**: 依赖管理和传递依赖 - Maven依赖管理...