`

Maven最佳实践:Maven仓库 - distributionManagement

阅读更多
分发构件至远程仓库
mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库。本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。
我们需要配置POM的distributionManagement来指定Maven分发构件的位置,如下:
Xml代码 
  1. <project>    
  2.   ...    
  3.   <distributionManagement>    
  4.     <repository>    
  5.       <id>nexus-releases</id>    
  6.       <name>Nexus Release Repository</name>    
  7.       <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>    
  8.     </repository>    
  9.     <snapshotRepository>    
  10.       <id>nexus-snapshots</id>    
  11.       <name>Nexus Snapshot Repository</name>    
  12.       <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>    
  13.     </snapshotRepository>    
  14.   </distributionManagement>    
  15.   ...    
  16. </project>    
Maven区别对待release版本的构件和snapshot版本的构件,snapshot为开发过程中的版本,实时,但不稳定,release版本则比较稳定。Maven会根据你项目的版本来判断将构件分发到哪个仓库。
一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息:
Xml代码 
  1. <settings>    
  2.   ...    
  3.   <servers>    
  4.     <server>    
  5.       <id>nexus-releases</id>    
  6.       <username>admin</username>    
  7.       <password>admin123</password>    
  8.     </server>    
  9.     <server>    
  10.       <id>nexus-snapshots</id>    
  11.       <username>admin</username>    
  12.       <password>admin123</password>    
  13.     </server>      
  14.   </servers>    
  15.   ...    
  16. </settings>  
需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。将认证信息放到settings下而非POM中,是因为POM往往是它人可见的,而settings.xml是本地的。
 

小结

本文介绍了Maven仓库,它是什么?本地仓库,远程仓库,中央仓库具体是指什么?并介绍了如何在POM中配置项目层次的仓库,在settings中配置用户层次的仓库,以及mirror。本文还介绍了如何安装构件到本地仓库,如何分发构件至仓库。
 
转载于:<a href='
分发构件至远程仓库
mvn install 会将项目生成的构件安装到本地Maven仓库,mvn deploy 用来将项目生成的构件分发到远程Maven仓库。本地Maven仓库的构件只能供当前用户使用,在分发到远程Maven仓库之后,所有能访问该仓库的用户都能使用你的构件。
我们需要配置POM的distributionManagement来指定Maven分发构件的位置,如下:
Xml代码 
  1. <project>    
  2.   ...    
  3.   <distributionManagement>    
  4.     <repository>    
  5.       <id>nexus-releases</id>    
  6.       <name>Nexus Release Repository</name>    
  7.       <url>http://127.0.0.1:8080/nexus/content/repositories/releases/</url>    
  8.     </repository>    
  9.     <snapshotRepository>    
  10.       <id>nexus-snapshots</id>    
  11.       <name>Nexus Snapshot Repository</name>    
  12.       <url>http://127.0.0.1:8080/nexus/content/repositories/snapshots/</url>    
  13.     </snapshotRepository>    
  14.   </distributionManagement>    
  15.   ...    
  16. </project>    
Maven区别对待release版本的构件和snapshot版本的构件,snapshot为开发过程中的版本,实时,但不稳定,release版本则比较稳定。Maven会根据你项目的版本来判断将构件分发到哪个仓库。
一般来说,分发构件到远程仓库需要认证,如果你没有配置任何认证信息,你往往会得到401错误。这个时候,如下在settings.xml中配置认证信息:
Xml代码 
  1. <settings>    
  2.   ...    
  3.   <servers>    
  4.     <server>    
  5.       <id>nexus-releases</id>    
  6.       <username>admin</username>    
  7.       <password>admin123</password>    
  8.     </server>    
  9.     <server>    
  10.       <id>nexus-snapshots</id>    
  11.       <username>admin</username>    
  12.       <password>admin123</password>    
  13.     </server>      
  14.   </servers>    
  15.   ...    
  16. </settings>  
需要注意的是,settings.xml中server元素下id的值必须与POM中repository或snapshotRepository下id的值完全一致。将认证信息放到settings下而非POM中,是因为POM往往是它人可见的,而settings.xml是本地的。
 

小结

本文介绍了Maven仓库,它是什么?本地仓库,远程仓库,中央仓库具体是指什么?并介绍了如何在POM中配置项目层次的仓库,在settings中配置用户层次的仓库,以及mirror。本文还介绍了如何安装构件到本地仓库,如何分发构件至仓库。
转载于:http://tianya23.blog.51cto.com/1081650/292205/
分享到:
评论

相关推荐

    gitflow-helper-maven-plugin:扩展和插件,可教会Maven与gitflow项目和CI服务器配合使用

    gitflow-helper-maven-plugin 一个构建扩展和插件,可帮助Maven与gitflow项目,CI服务器和本地开发完美地结合。 这样做是通过: 在项目中强制执行版本启发式。 强制Maven优雅地支持gitflow工作流,而无需施加...

    nexus-npm:在sonatype nexus中部署工件的节点模块,例如maven-release-plugin

    连结节点模块,用于在像maven-release-plugin这样的sonatype关联中部署工件。要求Sonatype Nexus OSS配置了npm存储库。 Nexus的有效用户。 已通过连结验证本地机器。 有权在git信息库中推送和提交的用户。安装# npm ...

    nexus-service:运行 Nexus 服务的 Docker 容器(Maven 存储库)

    运行 Nexus 服务的 Docker 容器(Maven 存储库) 构建和运行服务 要构建图像: make 要测试服务: make check 向主机公开服务: docker run -d -p 8081:8081 snaekobbi/nexus-service 将服务暴露给另一个容器...

    Maven使用实战-从入门到精通实践【张振华.Jack】

    Maven使用实战-从入门到精通实践【张振华.Jack】 Maven简介、Maven主要做什么用? 项目对象模型(POM) 坐标(Coordinates)、打包方式(Packaging)、项目描述 项目子父级关系(parent) 依赖管理(dependency),冲突了...

    maven 简单示例+部署

    maven的一个简单示例, 顺便还有 distributionManagement 模块,ftp

    personal-repo:个人 Maven 存储库

    在 github 项目中部署 Maven 工件的步骤:1)将部署信息添加到您的pom.xml : &lt; distributionManagement&gt; &lt; repository&gt; &lt; id&gt;internal.repo&lt;/ id&gt; &lt; name&gt;Temporary Staging Repository&lt;/ name&gt; &lt; url&gt;file://${...

    KPJavaSDK:Jinshan Kuaipan API

    1. 安装到本地maven仓库 mvn clean install -Dmaven.test.skip=true 2. 安装到公司私有maven服务器 修改pom.xml 添加部署配置 &lt;distributionManagement&gt; &lt;id&gt;your repe id &lt;name&gt;your repo name &lt;url&gt;your repo...

    tutorial-java-basic

    s生成客户端执行类的源文件的存放目录-keep表示导出Web服务的类文件时是否也导出源代码的Java文件-p定义生成类的包名-verbose显示生成过程-Xnocompile取消生成类文件Maven上传jar包至Nexus仓库所需配置&lt;...

    基于POM的开源项目Facebook-oss-pom.zip

    Facebook-oss-pom 是一个基于 POM 的部署在 oss.sonatype.org 上的facebook 上开源项目。它可以任随意调用任何基于 POM 的新项目而不用进行二... &lt;distributionManagement/&gt;      ... 标签:Facebook

    Elastic-Job编译部署运维平台 Console

    一、下载源码 ...如果不想自己编译可以直接下载我打包好的,解压后直接使用,具体操作下面有步骤:...注释掉 pom 文件中的 repositories 和 distributionManagement。如下: 三、使用 maven 进行打包 使用 idea 来进行ma

Global site tag (gtag.js) - Google Analytics