• 【运维技术】Maven + Gogs + Nexus 实现版本管理 + 代码模块开发管理


    Gogs:能够实现fork + 代码提交 + 代码框架

    Nexus:进行jar包的版本管理,私服下载jar包共享jar包

    Maven:在客户端进行模块管理和批量操作

    1. 本地maven仓库配置配置settings.xml私服地址

    settings.xml

    <project>
      <!--  用户名密码 -->
      <servers>
    	<server>    
           <id>nexus-releases</id>
           <username>admin</username>
           <password>xxxxxxx</password>    
        </server>
    	<server>    
           <id>nexus-snapshots</id>    
           <username>deployment</username>    
           <password>xxxxxxx</password>    
        </server>
      </servers>
      <!-- 镜像仓库配置 -->
      <mirrors>
    	  <mirror>
    	  <id>repo-nexus</id>
    	  <url>http://127.0.0.1:8081/nexus/content/repositories/central/</url>
    	  <mirrorOf>central</mirrorOf>
    	 </mirror>
      </mirrors>
        <!-- 私服配置 -->
        <profile> 
            <id>repo</id>  
            <activation> 
                <activeByDefault>true</activeByDefault> 
            </activation>  
            <repositories> 
                <repository> 
                <id>repo</id>  
                <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>  
                <releases> 
                    <enabled>false</enabled> 
                </releases>  
                <snapshots> 
                    <enabled>true</enabled> 
                </snapshots> 
                </repository> 
            </repositories>  
            <pluginRepositories> 
                <pluginRepository> 
                <id>repo</id>  
                <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url>  
                <releases> 
                    <enabled>false</enabled> 
                </releases>  
                <snapshots> 
                    <enabled>true</enabled> 
                </snapshots> 
                </pluginRepository> 
            </pluginRepositories> 
            </profile>
        </profiles>
    </project>
    

    2. 创建maven项目,修改配置scm、maven-release-plungin, 推送到仓库中

    pom.xml

    <project>
        <!-- 构建管理配置私服 -->
        <distributionManagement>
            <repository>
                <id>nexus-releases</id>
                <name>Nexus Release FRepository</name>
                <url>http://127.0.0.1:8081/nexus/content/repositories/releases/</url>
            </repository>
            <snapshotRepository>
                <id>nexus-snapshots</id>
                <name>Nexus Shapshots Repository</name>
                <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots/</url>
            </snapshotRepository>
        </distributionManagement>
    
        <!-- git的版本管理控制 -->
        <scm>
            <connection>scm:git:http://127.0.0.1:3062/wulonghuai/maven_module.git</connection>
            <developerConnection>scm:git:http://127.0.0.1:3062/wulonghuai/maven_module.git</developerConnection>
            <url>http://127.0.0.1:3062/wulonghuai/maven_module/src/master</url>
        </scm>
    
        <!--  插件配置 -->
        <build>
            <plugins>
                <!-- maven release 发布插件-->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-release-plugin</artifactId>
                    <version>2.5.3</version>
                    <configuration>
                        <tagNameFormat>v@{project.version}</tagNameFormat>
                        <username>username</username>
                        <password>password</password>
                        <branchBase>master</branchBase>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    3. 使用命令进行快照版本发布

    在mave项目目录下,对应配置的pom.xml文件下面

    clean package -U deploy -Dmaven.test.skip=true
    # BUILD SUCCESS即为上传成功
    

    4. 使用命令进行镜像版本发布

    第一步:release:prepare:打包前的准备工作

    1. 输入对应的release需要打包的版本嘻嘻,如果不输入有默认的内容
    2. 将需要记录和准备的内容缓存到pom.xml目录下的release.properties文件中
    3. 在本地和远程仓库的git中打上对应版本的tag
      先确认本地代码全部提交了,否则会失败。执行prepare的时候会执行单元测试,失败也会回滚
    # 执行发布准备命令
    release:prepare
    # 确认maven仓库的release版本号,回车为默认值
    What is the release version for "mavenmodule"? (com.wlh:mavenmodule) 1.3: : 
    # 确认scm中的仓库的tag标签版本号,回车为默认值
    What is SCM release tag or label for "mavenmodule"? (com.wlh:mavenmodule) v1.3: : 
    # 确认下一个开发版本的快照版本编号
    What is the new development version for "mavenmodule"? (com.wlh:mavenmodule) 1.4-SNAPSHOT: : 
    

    后悔药:release:rollback
    在顺北阶段发生错误的时候,就需要这个命令了,这个命令执行会去做以下这些事情

    1. 删除线上git库tag但是本地没有被删除,需要手动使用git -d xxx 进行删除,否则下次准备会失败
    2. 删除之前缓存在pom.xml统一目录下的配置
    # 执行回滚命令
    release:rollback
    # 会降本的的分支进行删除,但是服务器上的分支不会删除,需要手动通过工具进行删除命令
    release:prepare
    

    最后一步:release:perform
    如果确认无误了以后,就可以执行perform命令了

    1. 验证代码合法性
    2. 将你之前的1.0-SNAPSHOT改为1.1-SNAPSHOT
    3. 将1.0版本deploy至scm配置的nexus release库中
    4. 将代码source。jar版本 javacode。jar打包上传至nexus库
    # 将源代码上传到服务器了
    release:perform
    

    题外话

    去spring的框架上面看了下,springboot还是用maven进行管理依赖,而spring框架就是用gradle。
    后来看了下dubbo也是用maven插件的方式进行版本发布,所以看来路子是没有错误的,哈哈哈。


    华为云和Sonatype联合发布的中国官方Maven中央仓库

    【maven实战】42-使用maven-release-plugin自动化版本发布

    插件安装相关文章

    maven最佳实践:版本管理

    官方插件地址:Maven Release Plugin

    Nexus入门指南

  • 相关阅读:
    linux和window双系统下修改系统启动项
    linux下定位文件
    gcc/g++命令
    asp.net(C#)清除全部Session与单个Session
    响应式布局简介
    JS MD5
    遍历 DataSet
    标题背景圆角 随意宽度
    position
    vertical-align:middle图片或者按钮垂直居中
  • 原文地址:https://www.cnblogs.com/fly-piglet/p/9919321.html
Copyright © 2020-2023  润新知