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入门指南

【运维技术】Maven + Gogs + Nexus 实现版本管理 + 代码模块开发管理的更多相关文章

  1. 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区

    突破LVS瓶颈,LVS Cluster部署(OSPF + LVS) - lxcong的运维技术 - 开源中国社区 突破LVS瓶颈,LVS Cluster部署(OSPF + LVS)

  2. 端口映射工具 redir/socat/xinetd - 运维技术 - 开源中国社区

    端口映射工具 redir/socat/xinetd - 运维技术 - 开源中国社区 端口映射工具 redir/socat/xinetd    10人收藏此文章, 我要收藏 发表于3天前(2013-08 ...

  3. 干货云集 WOT 2017全球架构与运维技术峰会揭密技术难点

    WOT,World Of Tech专注互联网IT技术领域,是一场不容错过的技术盛会!WOT 2017全球架构与运维技术峰会三大章节,15大技术专场,60+国内外一线互联网精英大咖站台,打造兼顾技术视野 ...

  4. CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho

    CNUTCon2017全球运维技术大会(持续更新中) - 斯达克学院 - 实战驱动的 IT 教育平台 - Powered By EduSoho   https://new.stuq.org/cours ...

  5. 亲爱的,我是一条Linux运维技术学习路径呀。

    根据我的经验,人在年轻时,最头疼的一件事就是决定自己这一生要做什么.在这方面,我倒没有什么具体的建议:干什么都可以,但最好不要写小说,这是和我抢饭碗.总而言之,干什么都是好的:但要干出个样子来,这才是 ...

  6. 技术沙龙|京东云DevOps自动化运维技术实践

    自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...

  7. 沙龙报名 | 京东云DevOps——自动化运维技术实践

    随着互联网技术的发展,越来越多企业开始认识DevOps重要性,在企业内部推进实施DevOps,期望获得更好的软件质量,缩短软件开发生命周期,提高服务稳定性.但在DevOps 的实施与落地的过程中,或多 ...

  8. 【运维技术】JENKINS管道部署容器化初探

    目标服务器安装docker参考官方文档 https://docs.docker.com/install/linux/docker-ce/centos/ (可选)在目标服务器上安装docker私服 ht ...

  9. Python自动化运维技术与最佳实现

    第一章 系统基础信息模块详解 系统基础信息采集模块最为监控模块的重要组成部分,能够帮助运维人员了解当前系统的健康程度,同时也是衡量业务的服务质量的依据,比如系统资源吃紧,会直接影响业务的质量以及用户的 ...

随机推荐

  1. OpenCV Save CvRect to File 保存CvRect变量到文件

    在OpenCv中,我们有时候需要查看CvRect变量的值,我们可以通过将其保存到文件来查看,保存的代码如下: void writeCvRectToFile(CvRect &rect, cons ...

  2. JAVAORM框架之Mybatis (Ibatis) 详解

    目录 Mybatis基础概念 Mybatis开放方式演进 Mybatis框架核心要点 关联查询 延迟加载(懒加载) 动态SQL Mybatis缓存 Mybatis逆向工程 PageHelper分页插件 ...

  3. spring面试大全

    一.spring如何实现资源管理? 使用 applicationContext.getResource(“classpath:文件名”):在src根目录下,在类路径下 applicationConte ...

  4. 利用反射生成JDK动态代理

    利用反射生成JDK动态代理 在Java的java.lang.reflect包下提供了一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成JDK动态代理类和动态代理 ...

  5. 排序的本质是什么 冒泡排序 bubble sort

    import random def getRandomNums(min=4, max=20): n = random.randint(min, max) arr = [random.randint(1 ...

  6. php:// — 访问各个输入/输出流(I/O streams)

    PHP: php:// - Manual http://www.php.net/manual/zh/wrappers.php.php php:// php:// — 访问各个输入/输出流(I/O st ...

  7. 启动了SSH服务后,一定要关闭Telnet服务

    https://baike.baidu.com/item/ssh/10407 https://baike.baidu.com/item/Telnet/810597

  8. docker and ssh issues

    docker run -i -t qcdatainc/centos-jdkyum update yum install openssh-server ssh -vvv -p 222 jenkins@1 ...

  9. Jmeter(二十一)_脚本参数化与内存溢出的解决方案

    这一篇文章随便说一下JMETER的脚本参数化 1:Parameters的两种参数化方法 1.1:函数助手参数化 首先准备你的参数数据.我在bin/data中新建了一个dat文件,记事本另存为修改编码为 ...

  10. Bone Collector--hdu2602(01背包)

    Problem Description Many years ago , in Teddy’s hometown there was a man who was called “Bone Collec ...