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. PAT甲1101 Quick Sort

    1101 Quick Sort (25 分) There is a classical process named partition in the famous quick sort algorit ...

  2. 【紫书】Rails UVA - 514 栈

    题意:判断出栈顺序是否合法 题解:两个指针,A指向入栈序列,B指向出栈. 的分三种情况:if     1.A==B :直接入栈加出栈即可A++,B++ else 2.和栈顶相同,直接出栈A==stac ...

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

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

  4. PHP之文件上传

    1.$_FILES['myFile']['name'] 上传文件的原始名称 2.$_FILES['myFIle']['type'] 上传文件的mime-type 3.$_FILES['myFile'] ...

  5. iOS多线程编程之创建线程(转载)

    一.创建和启动线程简单说明 一个NSThread对象就代表一条线程 (1)创建.启动线程 NSThread *thread = [[NSThread alloc] initWithTarget:sel ...

  6. pycharm 使用激活补丁永久激活+汉化

    提供激活补丁激活方式(推荐使用-使用期到2100年,基本永久啦) 破解补丁激活 1.下载 https://pan.baidu.com/s/1GehNMTXagUxUEted1DT-Pg 密码:6689 ...

  7. 为什么说Java语言是平台无关的?

    适当的整理了一下: 一.平台与机器指令 无论哪种编程语言编写的应用程序都需要经过操作系统和处理器来完成程序的运行,因此这里的平台是又OS和CPU所构成的,所谓的平台无关就是指软件的运行不会因操作系统. ...

  8. python2.7 环境配置

    1.安装python2.7.8之后,配置环境变量:在path中配置python的安装路径 在cmd框中执行python,进入到python命令执行,即为配置成功. 2.执行过程中,提示缺少xlutil ...

  9. 【Cocos2dx 3.3 Lua】剪裁结点ClippingNode

    参考资料:     http://shahdza.blog.51cto.com/2410787/1561937 http://blog.csdn.net/jackystudio/article/det ...

  10. [LeetCode] 721. Accounts Merge_Medium tag: DFS recursive

    Given a list accounts, each element accounts[i] is a list of strings, where the first element accoun ...