`
2277259257
  • 浏览: 515073 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Maven部署构件至远程仓库

 
阅读更多

我们知道,Maven仓库包括本地仓库和远程仓库,而远程仓库又包括中央仓库,私服,Jboss仓库和Java.net仓库等。

私服,即私有的仓库服务器,它不仅可以降低中央仓库负荷,节省外网带宽,还可以加速Maven构建,自己部署构件等,从而高效地使用Maven。对于私服,我们可以使用仓库管理软件来创建自己的私有仓库服务器。目前网上流行的仓库管理软件有Apache的Achiva,JFrog的Artifactory和Sonatype的Nexus。由于当前Nexus是最流行的仓库管理软件,因此,我们这里采用Nexus。

Nexus的安装很简单,只需从http://nexus.sonatype.org/downloads下载最新的版本即可。需要注意的是官网向我们提供了两种安装方式,一种是自带Web容器(Jetty)的Bundle包,另外一种是war包。(可以直接部署到Tomcat等Web容器中)

假设下载的是Bundle包,解压到指定目录后(笔者的目录是E:\sonatype-nexus),进入目录E:\sonatype-nexus\nexus-2.4.0-09-bundle\nexus-2.4.0-09\bin\jsw\windows-x86-32\,找到脚本文件console-nexus.bat,打开并运行。如果没有出现错误,打开浏览器输入http://localhost:8081/nexus/index.html#welcome,可以看到nexus的欢迎界面:

 

默认情况下是匿名登录该网站,只能享受浏览,搜索等功能。如果想拥有更多控制能力,可以点击右上角的Login in进行登录,Nexus内置了一个管理员账户,用户名是admin,密码是admin123。

 

下面开始创建自己的宿主仓库,目的是为了将自己编写的构件部署到该仓库中,供组织其它成员下载。

用管理员账户登录之后,在左边导航栏框中找到Repositories,点击后,在右框中选择Add按钮,弹出的菜单中选择Hosted Repository,表示添加宿主仓库。

在新建宿主仓库表中,填写仓库的ID,Name以及仓库策略(release表示发布版构件,snapshot表示快照版构件),比如:

 

点击save按钮,完成策略为Release的宿主仓库创建。

同理,创建策略为Snapshot的宿主仓库。

 

至此,我们的宿主仓库(包括发布版和快照版)就完成了。

接下来,需要添加权限(Privileges)

在左边导航栏的Security中找到Privileges,点击后,在右框中点击Add按钮,选择Repository Target Privilleges

 

按如图所示添加发布版和快照版。

 

接下来创建具有相应权限的角色(Role)

 

最后创建用户。

这里需要注意的是,User ID就是远程仓库的username,password就是远程仓库的password。

 

至此,宿主仓库就算完成了。

 

因为远程仓库需要安全认证,所以需要在settings.xml中进行配置。

打开settings.xml,在settings根标签下添加如下内容:

 

[html] view plain copy
 
  1. <server>  
  2.     <id>pro-snapshot</id>  
  3.     <username>foo</username>  
  4.     <password>123456</password>  
  5. </server>  
  6.   
  7. <server>  
  8.     <id>pro-release</id>  
  9.     <username>foo</username>  
  10.     <password>123456</password>  
  11. </server>  


这里的用户名和密码对应之前创建的user的userId和password。即foo和123456。另外,id元素对应pom.xml中distributionManagement里的id元素。之后会给出相应的代码。

 

 

安全认证配置好后,接下来打开你要部署的maven项目的pom.xml,在project元素下添加如下内容:

 

[html] view plain copy
 
  1.  <distributionManagement>  
  2. <repository>  
  3.     <id>pro-release</id>  
  4.     <name>Proj Release Repository</name>  
  5.     <url>http://localhost:8081/nexus/content/repositories/RestBus-Releases</url>  
  6. </repository>  
  7.   
  8. <snapshotRepository>  
  9.     <id>pro-snapshot</id>  
  10.     <name>Proj Snapshot Repository</name>  
  11.     <url>http://localhost:8081/nexus/content/repositories/RestBus-Snapshots</url>  
  12. </snapshotRepository>  
  13.  </distributionManagement>  

 

 

这里在distributionManagement元素下添加了发布版仓库和快照版仓库,它们的id对应之前在settings.xml中server的id。url为仓库地址,该url可以在nexus的repositories中找到:

 

最后一步,打开命令提示符窗口,定位到maven根目录下(和pom.xml同目录),执行maven命令:

mvn clean deploy

如果配置没有错误,会出现以下类似打印信息:

 

[plain] view plain copy
 
  1. [INFO] Scanning for projects...  
  2. [INFO]                                                                           
  3. [INFO] ------------------------------------------------------------------------  
  4. [INFO] Building bus-location 1.0  
  5. [INFO] ------------------------------------------------------------------------  
  6. [INFO]   
  7. [INFO] --- maven-clean-plugin:2.4.1:clean (default-clean) @ bus-location ---  
  8. [INFO] Deleting G:\bus-location\target  
  9. [INFO]   
  10. [INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ bus-location ---  
  11. [debug] execute contextualize  
  12. [INFO] Using 'UTF-8' encoding to copy filtered resources.  
  13. [INFO] skip non existing resourceDirectory G:\bus-location\src\main\resources  
  14. [INFO]   
  15. [INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ bus-location ---  
  16. [INFO] Compiling 1 source file to G:\bus-location\target\classes  
  17. [INFO]   
  18. [INFO] --- maven-resources-plugin:2.5:testResources (default-testResources) @ bus-location ---  
  19. [debug] execute contextualize  
  20. [INFO] Using 'UTF-8' encoding to copy filtered resources.  
  21. [INFO] skip non existing resourceDirectory G:\bus-location\src\test\resources  
  22. [INFO]   
  23. [INFO] --- maven-compiler-plugin:2.3.2:testCompile (default-testCompile) @ bus-location ---  
  24. [INFO] Compiling 1 source file to G:\bus-location\target\test-classes  
  25. [INFO]   
  26. [INFO] --- maven-surefire-plugin:2.10:test (default-test) @ bus-location ---  
  27. [INFO] Surefire report directory: G:\bus-location\target\surefire-reports  
  28.   
  29. -------------------------------------------------------  
  30.  T E S T S  
  31. -------------------------------------------------------  
  32. Running zjut.edu.soft.bus.AppTest  
  33. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 sec  
  34.   
  35. Results :  
  36.   
  37. Tests run: 1, Failures: 0, Errors: 0, Skipped: 0  
  38.   
  39. [INFO]   
  40. [INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ bus-location ---  
  41. [INFO] Building jar: G:\bus-location\target\bus-location-1.0.jar  
  42. [INFO]   
  43. [INFO] --- maven-install-plugin:2.3.1:install (default-install) @ bus-location ---  
  44. [INFO] Installing G:\bus-location\target\bus-location-1.0.jar to C:\Users\tsw\.m2\repository\zjut\edu\soft\bus\bus-location\1.0\bus-location-1.0.jar  
  45. [INFO] Installing G:\bus-location\pom.xml to C:\Users\tsw\.m2\repository\zjut\edu\soft\bus\bus-location\1.0\bus-location-1.0.pom  
  46. [INFO]   
  47. [INFO] --- maven-deploy-plugin:2.7:deploy (default-deploy) @ bus-location ---  
  48. Uploading: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/1.0/bus-location-1.0.jar  
  49. 2/3 KB     
  50. 3/3 KB     
  51.            
  52. Uploaded: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/1.0/bus-location-1.0.jar (3 KB at 7.3 KB/sec)  
  53. Uploading: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/1.0/bus-location-1.0.pom  
  54. 2/2 KB     
  55.            
  56. Uploaded: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/1.0/bus-location-1.0.pom (2 KB at 10.1 KB/sec)  
  57. Downloading: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/maven-metadata.xml  
  58.            
  59. Uploading: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/maven-metadata.xml  
  60. 305/305 B     
  61.               
  62. Uploaded: http://localhost:8081/nexus/content/repositories/RestBus-Releases/zjut/edu/soft/bus/bus-location/maven-metadata.xml (305 B at 3.1 KB/sec)  
  63. [INFO] ------------------------------------------------------------------------  
  64. [INFO] BUILD SUCCESS  
  65. [INFO] ------------------------------------------------------------------------  
  66. [INFO] Total time: 4.762s  
  67. [INFO] Finished at: Wed May 22 13:23:16 CST 2013  
  68. [INFO] Final Memory: 14M/33M  
  69. [INFO] ------------------------------------------------------------------------  


进入http://localhost:8081/nexus网页,在RestBus-Releases(因为在pom.xml中,version是1.0,不是快照版)中,可以找到刚刚部署上去的构件bus-location-1.0.jar

 

 

当然,也可以在网页上进行手工部署。

分享到:
评论

相关推荐

    详解Maven仓库之本地仓库、远程仓库

    总而言之,Maven通过本地和远程仓库,实现了项目依赖的高效管理和自动化构建,极大地简化了Java项目开发和部署的流程。了解和掌握Maven仓库的配置与管理,是每个使用Maven的Java开发者必须具备的能力。

    Maven安装部署.docx

    - **中央仓库**: Maven 中央仓库是默认的远程仓库,存储了大量的开源项目构件,由 Maven 社区维护。 3. **Maven 安装配置** - **下载**: 从 Apache Maven 官方网站(https://maven.apache.org/download.cgi)下载...

    Maven构件上传工具

    Maven构件上传工具是一款专为Java开发者设计的实用软件,它能够帮助用户方便地将.jar文件上传至本地Maven仓库或自建的Nexus仓库。在Java开发中,Maven是广泛应用的项目管理和构建工具,而Nexus则是一个企业级的Maven...

    设置Maven仓库-Artifactory

    Maven 建议的方法是将所有软件构件存储于一个叫做 repository 的远程仓库中。设置内部 Maven 仓库可以帮助团队更好地利用 Maven 仓库的优势,并克服使用 ibiblio.org 中的公用仓库时的缺点。 Maven 仓库的目的主要...

    maven nexus私服构件示例

    Nexus是Sonatype公司提供的一个强大的Maven仓库管理器,它不仅可以托管内部构件,避免频繁地从远程公共仓库下载依赖,还可以作为代理仓库,缓存外部依赖,提高开发效率。 在这个示例中,`user-parent`项目充当了父...

    nexus构建maven仓库总结(完善版2)

    “mvn deploy”则将项目部署到远程仓库,如Nexus。 在Nexus中发布自定义构件,通常需要先在Maven项目中配置pom.xml文件,明确项目的版本、打包类型等信息,然后通过“mvn deploy”命令上传到Nexus。Nexus还提供了...

    nexus使用+Maven仓库管理

    1. **代理仓库(Proxy Repository)**:这类仓库充当对外部远程仓库的代理,例如,ApacheSnapshots和CodehausSnapshots分别提供Apache和Codehaus项目的快照版本,而CentralMavenRepository则是Maven中央仓库的代理,...

    maven本地仓库001

    如果本地仓库中没有所需的依赖,Maven会自动从远程仓库下载并存入本地仓库,以便后续使用。 【标签】"maven仓库"提示我们关注的是Maven的仓库系统。Maven的仓库系统包括本地仓库、中央仓库和自定义的远程仓库。本地...

    maven本地仓库安装代码

    Maven仓库分为远程仓库(Remote Repository)和本地仓库(Local Repository)。其中,本地仓库是Maven项目构建过程中缓存依赖和构件的地方;而远程仓库则通常是指中央仓库或其他远程私服仓库,用来下载项目依赖。 #...

    中央仓库maven的下载

    6. **插件系统**:Maven的插件系统非常强大,允许扩展其功能,如生成文档、打包成WAR或JAR、部署到远程服务器等。通过`&lt;build&gt;&lt;plugins&gt;`配置,你可以添加自定义的插件和配置。 7. **依赖范围**:Maven的依赖有多种...

    maven的使用以及部署原理

    在部署过程中,Maven使用`&lt;distributionManagement&gt;`标签在POM中定义部署目标,包括repository(用于存放构件)和site(用于存放项目文档)。 秘钥仓库的创建涉及到Maven的签名部署,这通常用于确保发布的工件是...

    用Artifactory管理内部Maven仓库

    - **外部公用远程仓库**:默认情况下,Maven会从ibiblio.org上的外部公共仓库同步。 #### Maven仓库概览 在没有内部Maven仓库的情况下,开发环境中的构件获取可能会受到公共仓库性能的影响,导致构建过程缓慢。而...

    maven细节操作.docx

    【Maven】是一个广泛使用的Java项目管理工具,它主要负责构建、依赖管理和打包测试等任务。Maven的优势在于它的流行程度高,IDEA和Eclipse等主流开发...当Maven在本地和远程仓库都无法找到所需构件时,构建将会失败。

    maven repository

    中央仓库是最主要的远程仓库,由Maven官方维护,包含了大量的开源项目构件。 2. Maven仓库的层次结构 Maven仓库使用一个基于目录的层次结构来组织构件,这种结构遵循Maven的groupId、artifactId和version的约定。...

    Maven 仓库详细理解.docx

    这会将构建结果安装到本地仓库,如果是部署到远程仓库,则需要额外配置相关的部署信息。 #### 总结 Maven仓库机制是Maven的核心特性之一,它极大地简化了依赖管理和项目构建的过程。通过合理的配置和使用Maven仓库...

    maven仓库oschina

    而本地仓库是每个Maven用户在本地计算机上创建的,用于存储从中央仓库或其他远程仓库下载的构件。当Maven构建项目时,首先会检查本地仓库,如果找不到所需的依赖,就会从中央仓库或其他远程仓库下载。 OSChina ...

    Maven项目部署详细文档

    远程仓库包括中央仓库和其他自定义仓库,中央仓库是Maven的默认依赖源。 **2.2 Maven中央仓库与私服** 中央仓库是Maven维护的全球共享的公开库,包含了大量的开源Java项目。如果企业或团队需要私有化依赖,可以设置...

    Linux系统 maven私有库安装包

    Nexus是Sonatype公司开发的一款强大的Maven仓库管理器,它可以作为代理仓库,缓存远程仓库的依赖,同时也可以作为宿主仓库,存放团队内部的私有构件。Nexus提供了三种类型的仓库:代理仓库、宿主仓库和集团仓库,...

Global site tag (gtag.js) - Google Analytics