SVN+Nexus环境搭建

  • 安装时出现异常:

    java.io.UnsupportedEncodingException: Encoding GBK is not supported yet (feel free to submit a patch)
    

    编码的问题,不用管

  • nexus目录下的etc/nexus-default.properties 可以修改监听端口

  • 安装后不要用windows自带的浏览器访问,前端页面会一直抛错

  • 访问的仓库类型:

    • hosted 宿主仓库:主要用于部署无法从公共仓库获取的构件以及自己或第三方的项目构件;
    • proxy 代理仓库:代理公共的远程仓库;
    • group 仓库组:Nexus 通过仓库组统一管理多个仓库,这样我们在项目中直接请求仓库组即可请求到仓库组管理的多个仓库。
    • 简单的说,就是你可以上传私有的项目到hosted,以及配置proxy以获取第三方的依赖(比如可以配置中央仓库的地址)。前面两个都弄好了之后,在通过group聚合给客户提供统一的访问地址。
  • 管理本地仓库

    • Nexus预定义了2个本地仓库,分别是maven-releases, maven-snapshots, 分别讲一下这二个预置的仓库都是做什么用的:
      • maven-releases:这里存放我们自己项目中发布的构建, 通常是Release版本的。
      • maven-snapshots:这个仓库非常的有用, 它的目的是让我们可以发布那些非release版本, 非稳定版本。
  • 创建2个仓库(maven2的hosted仓库),哦,nexus已经默认帮忙创建好了,maven-public(group),maven-releases,maven-snapshots


    image.png
  • 如何创建maven项目?

    mvn archetype:generate -DgroupId=com.mico.algs4 -DartifactId=algs4 -DarchetypeArtifactId=maven-archetype-webapp -DinteractivMode=false
    
  • 本地如何配置nexus?

    <mirror>
            <id>nexus</id>
            <mirrorOf>*</mirrorOf>
            <name>Nexus</name>
            <url>http://localhost:8081/repository/maven-public/</url>
     </mirror> 
    
  • 如何将jar发布到nexus?

    • 项目pom.xml设置

      • 上传为 maven-snapshot 时 在<version>0.0.1-SNAPSHOT</version>加上SNAPSHOT
      • 上传为 maven-releases 表示这是一个发布版本jar 要把<version>0.0.1</version> SNAPSHOT去掉
    • 项目pom.xml设置(设置私服地址,注意id和下一步中server的id一致)

      <distributionManagement>
          <!-- 快照测试版本 -->
          <snapshotRepository>
              <id>nexus</id>
              <name>nexus snapshot</name>
              <url>http://localhost:8081/repository/maven-snapshots/</url>
          </snapshotRepository>
          <!-- 发布版本 -->
          <repository>
              <id>nexus</id>
              <name>Nexus releases</name>
              <url>http://localhost:8081/repository/maven-releases/</url>
          </repository>
      </distributionManagement>
      
    • 修改maven的settings.xml设置(配置私服的用户名和密码)

      <servers>
          <!--私服认证,账户密码可以修改这里使用的是默认的-->
          <server>  
              <id>nexus</id>
              <username>admin</username>
              <password>admin123</password>
          </server>
      </servers>
      
    • 执行mvn deploy完事

  • SVN的主干,分支和标签

    • truck(主干|主线|主分支):是用来做主方向开发的,新功能的开发应放在主线中,当模块开发完成后,需要修改,就用branch。``

    • branch(分支):分支开发和主线开发是可以同时进行的,也就是并行开发,分支通常用于修复bug时使用,

      svn copy https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/tags/1.0-RELEASE https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/branches/1.0.1-SNAPSHOT -m "create branch 1.0.1-SNAPSHOT"
      
    • tag(标记):用于标记某个可用的版本,可以标记已经上线发布的版本,也可以标记正在测试的版本,通常是只读的,版本号修改为发布版本之后,应该立即对当前状态添加一个标签:

      svn copy https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/trunk https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/tags/1.0-RELEASE -m "tag 1.0-RELEASE"
      
  • svn 怎么切换分支?

    svn switch https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/branches/1.0.1-SNAPSHOT
    
  • idea 怎么切换分支?,通过subversion的update功能就好

    image.png
  • 怎么合并分支?

    svn merge https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/branches/1.0.1-SNAPSHOT
    
  • idea怎么合并分支

    切换到主干,合并分支按钮位置

合并分支的时候,pom文件中的版本号会有冲突。一般选择使用当前的版本号。

  • 主干和分支:

    • 主干负责新功能的开发
    • 分支负责修正当前发布版本的bug(对于可以放入下个发布版本的改进性bug可以直接在主干上开发)
    • 分支上修改的bug,经常性merge到主干上,尽量及时merge(避免大面积红色区域)。
    • 只能分支往主干靠拢(merge),不能反向!
    • 直到下个新版本发布,该分支停止修改
  • 基于Maven和SVN的项目版本管理

  • 流程

    • 在主干进行1.0.0-SNAPSHOT的开发,开发完成之后提交修改的代码到主干。修改版本为1.0.0,再次提交,并添加标签。

    • 随后将版本改为1.1.0-SNAPSHOT,提交。然后开始新一轮的开发,完成之后提交代码,修改版本为1.1.0,再次提交并打标签。

    • 接着将版本号改为1.2.0-SNAPSHOT,提交,并开始新一轮的开发,在开发过程中1.1.0遇到一个紧急的bug,拷贝1.1.0版本,新建分支1.1.1-SNAPSHOT,修改版本号为1.1.1-SNAPSHOT,提交并切换到1.1.1-SNAPSHOT分支,进行开发。

      svn copy https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/tags/1.1.0-RELEASE https://PC-LIJINLONG9.hikvision.com:444/svn/demo/demo-version/branches/1.1.1-SNAPSHOT -m "create branch 1.1.1-SNAPSHOT"
      
    • 1.1.1-SNAPSHOT开发完成,提交代码。修改版本号至1.1.1,提交并打上标签。此时可以及时把1.1.1发布到nexus。合并分支到主干。

    • 随后,1.2.0-SNAPSHOT开发完成,提交修改的代码到主干。修改版本为1.2.0,再次提交,并添加标签。重复第一步。。。

后记

  • 在内网中,nexus3.x不好使,批量上传jar包非常麻烦,唯一可行的方法是uploading-components
  • 方便点的方式是使用nexus2,外网将项目所有依赖下载下来,拷贝repository到nexus的sonatype-work/nexus/storage/thirdparty中即可
  • Nexus2下载
  • Nexus2安装后将.m2下所有文件夹扔到了thirdparty文件夹下,却在搜索中搜索不到:


    右键thirdparty的仓库,选择Update Index,下方的Deployment Rolicy选为Allow Redeploy
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,277评论 6 503
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,689评论 3 393
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,624评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,356评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,402评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,292评论 1 301
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,135评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,992评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,429评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,636评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,785评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,492评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,092评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,723评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,858评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,891评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,713评论 2 354

推荐阅读更多精彩内容