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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容