`
islove1945
  • 浏览: 20687 次
  • 性别: Icon_minigender_1
  • 来自: 安徽
社区版块
存档分类
最新评论

Maven结合Nexus和Svn的使用

阅读更多
一.建立我们的本地仓库(Maven仓库管理-Nexus)
  用maven Biuld项目时,POM中所定义的依赖包默认情况下会从官方的中央仓储中下载,项目成员都从中央仓储下载的话不是个快速并且令人放心的主意,并且可能我们访问不了中央仓储,或者这些依赖包里
  有些是我们自己开发的,官方仓储中根本没有。所以这时就用到了Nexus.配置的本地仓储,使用本地仓储,我们BIULD项目时,Maven会先从本地仓储(这里是127.0.0.1:8081)

  下载需要的依赖包和插件,速度会很快。如果本地中找不到,再到官方的中央仓储中去下载,这个只限第一次,下次再Biuld的时候,我们本地仓储中已经有了上次从中央仓储中下载的东西。
  在本地建立好Nexus仓储
  在Setting.xml里添加以下的配置,
    ①
      <mirrors>
         <mirror>
          <id>nexus-public-snapshots</id>
          <mirrorOf>public-snapshots</mirrorOf>
          <url>http://127.0.0.1:8081/nexus/content/groups/public-snapshots</url>
        </mirror>
        <mirror>
          <id>nexus</id>
          <mirrorOf>*</mirrorOf>
          <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
        </mirror>
      </mirrors>
    
  ②这个也可以在POM中配置,在pom中配置的话作用域只限POM所在的那个项目。 
   
  <profiles>
        <profile>
          <id>development</id>
          <repositories>
              <repository>
           			<id>china-nexus</id>
           			<name>local private nexus</name> 
           			<url>http://127.0.0.1:8081/nexus/content/groups/public</url>
					 			<releases><enabled>true</enabled></releases>
   							<snapshots><enabled>false</enabled></snapshots>
              </repository>
              <repository>
	               <id>china-nexus-snapshots</id>
	               <name>local private nexus (snapshots)</name>
	               <url>http://127.0.0.1:8081/nexus/content/groups/public-snapshots</url>
	               <releases><enabled>false</enabled></releases>
	               <snapshots><enabled>true</enabled></snapshots>
              </repository>
          </repositories>

           <pluginRepositories>
              <pluginRepository>
                  <id>nexus</id>
                  <url>http://127.0.0.1:8081/nexus/content/groups/public</url>
                  <releases>
                  <enabled>true</enabled>
                  </releases>
                  <snapshots>
                  <enabled>true</enabled>
                  </snapshots>
               </pluginRepository>
           </pluginRepositories>
         </profile>
      </profiles>
         ③
      <activeProfiles>
      <activeProfile>development</activeProfile>
      </activeProfiles>


    执行:maven clean install
   
  以上配置的细节说明参考maven-definitive-guide的第十六章内容
 
 
二.maven使用Nexus作为仓库 releases和snapshots分类发布
前面说过,pom中的依赖包里可能有我们自己开发的,这里的说明的方法就是向本地仓储中发布我们自己的依赖包。

     1.Pom.xml 里设置
    <!-- deploy path -->
    <distributionManagement>
       <repository>
           <id>releases</id>
            <name>Internal Releases</name>
            <url> http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
       </repository>
       <snapshotRepository>
           <id>snapshots</id>
           <name>Internal snapshots</name>
           <url> http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
        </snapshotRepository>
    </distributionManagement>


   2.Setting.xml 里设置
  <servers>
	 <server>
	     <id>releases</id>
	     <username>admin</username>
	     <password>admin123</password>
	  </server>
	
	  <server>
	     <id>snapshots</id>
	     <username>admin</username>
	     <password>admin123</password>
	  </server>
	</servers>


如果pom的version标签中的值结尾是:-SNAPSHOT,将使用snapshots repository,否则使用releases repository。命令是:mvn deploy


三.Maven结合svn进行版本管理



  svn仓库的根目录下创建三个文件夹:/trunk, branches/, tags/。分别用来存放主干,分支,以及标签。

  Pom.xml 里设置

     <!-- svn -->  
    <scm>
        <connection>scm:svn:http://svn-dgts.lemon-asia.com/svn/AstraZeneca-Maven/trunk</connection>
        <developerConnection>scm:svn:http://svn-dgts.lemon-asia.com/svn/AstraZeneca-Maven/trunk</developerConnection>
    </scm>

<!-- maven-release -->

   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
       <artifactId>maven-release-plugin</artifactId>
       <version>2.0-beta-7</version>
       <configuration>
           <tagBase>http://svn-dgts.lemon-asia.com/svn/AstraZeneca-Maven/tags/</tagBase>
           <username>yunfeng.wu</username>
           <password>Dgts1234</password>
           <releaseProfiles>release</releaseProfiles>
       </configuration>
    </plugin>


   发布执行

  执行发布命令前要确保class生成目录不作为svn监管对象,这里是target目录,否则出错。 POM中的版本号要带-SNAPSHOT

1.   执行命令:mvn release:prepare
执行过程中,会遇到 发布什么版本号?发布的tag标签名称是什么?主干上新的版本是什么? 的提问,一般直接默认既可,maven每次会自动加加
然后,tags里会多出/MyDgts-1.0  ,这就是需要发布的版本1.0,同时trunk中的POM,其版本自动升级成了1.1-SNAPSHOT。

2.    执行命令:mvn release:perform
maven-release-plugin会自动帮我们签出刚才打的tag,然后打包,分发到远程Maven仓库中,至此,整个版本的升级,打标签,发布等工作全部完成。我们可以在远程Maven仓库
http://10.144.177.23:8081/nexus/content/repositories/releases/中看到正式发布的版本。
Branch  分支的执行命令是mvn release:branch -DbranchName=1.1.x -DupdateBranchVersions=true -DupdateWorkingCopyVersions=false 这个一般在RELEASE之前做
在执行mvn release:prepare命令出错的时候,MAVEN对中间修改过的pom文件不做会滚,这时候再执行mvn release:prepare的话出错,
比如pom中的版本号中的-SNAPSHOT没有了,(maven发布时会先把-SNAPSHOT号先去掉,发布完成后再加上版本号添上去),所以万一出错,改好错误后,把POM文件恢复到
之前的样子,再重新发布。还有执行前要确保:CMD下 svn  --version能执行,就是要在PATH中加svn的环境变量,如F:\Program Files\Subversion\bin

分享到:
评论

相关推荐

    持续集成环境maven+nexus+jenkins+svn搭建

    在搭建完成 Maven、Nexus 和 SVN 服务器后,我们可以使用 Maven 来搭建一个 Eclipse 工程。在这个阶段,我们需要创建一个新的 Eclipse 工程,然后使用 Maven 来管理和构建该工程。我们可以使用 Maven 的 pom.xml ...

    Maven+nexus+svn+jenkins.docx

    与Maven结合使用时,可以设置Jenkins作业自动从SVN获取最新代码,然后调用Maven进行构建、测试,最后将构建产物部署到Nexus仓库。Jenkins通过配置构建触发器,实现代码变更后自动触发构建流程,提高了开发效率和软件...

    jenkins+maven+nexus+mantisBug

    【标题】"jenkins+maven+nexus+mantisBug"揭示了四个关键的IT技术领域,它们在软件开发的持续集成和缺陷管理流程中扮演着重要角色。这些技术分别是Jenkins、Maven、Nexus和MantisBug。 **Jenkins** 是一款开源的...

    使用Maven+Nexus+Jenkins+Svn+Tomcat+Sonar搭建持续集成环境

    本篇将详细介绍如何利用Maven、Nexus、Jenkins、Svn、Tomcat和Sonar搭建一个完整的持续集成环境。 首先,Maven是Java项目管理和构建工具,通过POM(Project Object Model)文件管理项目依赖关系,提供了一种标准化...

    持续集成环境maven+nexus+jenkins+svn搭建[整理].pdf

    本篇文档主要介绍了如何利用Maven、Nexus、Jenkins和SVN搭建一个持续集成环境。 1. Maven安装: Maven是Java项目管理工具,它处理项目的构建、依赖管理和文档生成。要在本地安装Maven,首先需要从Apache Maven官网...

    nexus+svn+jenkin_hudson+maven+禅道项目管理软件环境搭建一

    本篇将详细讲解如何结合Nexus、SVN、Jenkins(Hudson)、Maven以及禅道这五款工具,搭建一个适用于敏捷开发流程和持续集成理念的环境。这个环境能够极大地提升开发效率,简化项目管理流程。 **Nexus**: Nexus是一款...

    nexus+svn+jenkin_hudson+maven+禅道项目管理软件环境搭建二

    在本篇中,我们将深入探讨如何构建一个完整的IT开发流程,包括使用Nexus作为Maven仓库、Subversion(SVN)作为版本控制系统、Jenkins(Hudson)进行持续集成、Maven作为构建工具,以及禅道(ZenDo)作为项目管理软件...

    持续集成-Maven-nexus-SNV-jenkins架构

    本文将深入探讨一种基于Maven、Nexus、Subversion(SVN)和Jenkins的持续集成架构,旨在为读者提供一个全面理解与应用该架构的指南。 ### 一、架构概述 #### 1.1 Subversion(SVN) Subversion是一种开源的版本...

    Linux 安装hudson+maven+nexus

    在Linux环境中,构建一个自动化部署系统常常涉及到一系列的工具集成,如Hudson、Maven和Nexus。这个过程主要包括三个主要部分:安装Hudson作为持续集成服务器,配置Maven为项目构建工具,以及安装Nexus作为私有仓库...

    svn+maven+trac+nexus产品集成配置管理

    svn+maven+trac+nexus产品集成配置管理

    Eclipse-Maven-SVN环境配置

    本教程将详细阐述如何配置Eclipse以支持Maven和SVN,以便进行高效、规范化的项目管理。 **一、Maven环境搭建** 1. **Maven下载与安装**: 首先,你需要访问Apache Maven官方网站下载最新版的Maven,根据你的操作...

    Jenkins+Maven+SVN+Tomcat持续集成实战视频.zip

    目录 1、传统网站部署流程 2、主流网站部署流程及方法 3、Jenkins持续平台安装 4、Jenkins持续集成MAVEN讲解 5、Jenkins持续集成JOB工程设置 6、Jenkins持续集成网站构建实战...Jenkins+Maven+SVN+Tomcat持续集成实v1战

    Maven在企业中的使用

    - **配置管理**:Maven支持集成SCM系统,如Git、SVN等,便于代码版本控制和管理。 - **发布管理**:Maven提供了标准化的发布流程,确保软件发布的稳定性和可靠性。 #### POM文件详解 POM(Project Object Model)...

    Maven的简单使用

    ### Maven的简单使用 #### Maven简介 Maven是一款由Apache软件基金会提供的...以上是对Maven使用的基本介绍和一些关键概念的解释。通过理解和应用这些知识,开发者可以更好地利用Maven来管理Java项目,提高开发效率。

    Maven使用tomcat8-maven-plugin插件.docx

    Maven 使用 tomcat8-maven-plugin 插件 Maven 是一个流行的构建自动化工具,它可以帮助开发者自动完成项目的编译、测试、打包、部署等任务。...在本文中,我们详细介绍了 tomcat8-maven-plugin 插件的使用方法和优点。

    SVN-Jenkins-Nexus-Maven-Tomcat持续集成构建调研报告

    中科金审科技有限公司的《SVN-Jenkins-Nexus-Maven-Tomcat持续集成发布调研报告》旨在探索如何利用SVN、Jenkins、Nexus、Maven 和 Tomcat 这些工具实现高效的持续集成流程。 #### 原则与要素 1. **原则** - 开发...

    Jenkins+Maven+svn+Tomcat入门文档

    ### Jenkins+Maven+svn+Tomcat入门文档 #### Maven **基本介绍** Maven是一种基于项目对象模型...通过上述步骤,可以实现一个集成Jenkins、Maven、SVN和Tomcat的自动化构建和部署环境,提高开发效率和项目质量。

    openshift-nexus-svn

    openshift-nexus-svn 在 openshift-nexus-svn 应用程序中设置 Maven 发布Spring MyIbatis 简介:12/22/2014 Heroku 上托管的 MYSQL 数据库的连接参数: 数据库:herokungjavamq 用户:adminhejXHcU 密码:Algd1-u9Aq...

Global site tag (gtag.js) - Google Analytics