多模块maven的deploy集成gitlab ci自动发版配置

网友投稿 1982 2022-10-29

多模块maven的deploy集成gitlab ci自动发版配置

多模块maven的deploy集成gitlab ci自动发版配置

目录背景maven配置knHtHygitlabci配置

背景

多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目用,那么这个时候需要将这个模块上传到 maven 私服,发布 maven 私服时,release 版本不支持覆盖,所以需要集成 ci 工具,给 maven 模块自动加上版本号,并自动完成 deploy 操作。本文方案依赖 maven 打包插件 flatten-maven-plugin,maven 版本要求大于等于 3.5.0

maven 配置

1、将 root 模块的 version 变量化,如新增如下的版本号 properties 参数

4.0.0

com.github.kl

demo

pom

${revision}

${project.artifactId}

core

common

admin

1.0

2、子模块依赖父模块,依然使用 {revision} 占位符代替,依赖子模块使用revision占位符代替,依赖子模块使用{project.version},如:

4.0.0

com.github.kl

demo

${revision}

core

jar

${project.artifactId}

com.github.kl

common

${project.version}

3、不纳入自动版本号的模块,指定 version,同时,这种模块也不需要 deploy 到私服,配置提过,如:

4.0.0

com.github.kl

demo

1.0

admin

jar

${project.artifactId}

true

com.github.kl

common

${project.version}

4、root 模块添加支持外部传入版本号参数的构建插件 flatten-maven-plugin,添加私服仓库地址

org.codehaus.mojo

flatten-maven-plugin

1.1.0

true

resolveCiFriendliesOnly

flatten

process-resources

flatten

flatten.clean

clean

clean

repo

https://nexus.dev.com/repository/maven-releases/

完成如上步骤后,deploy 时,就可以通过传入系统参数的方式,动态指定版本号,如:mvn  deploy -Drevision=xxx

gitlab ci 配置

1、在项目根目录创建文件 .ci/settings.xml ,  内容如下:

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

repo

${env.NEXUS_REPO_USERNAME}

${env.NEXUS_REPO_PASSWORD}

xmlns:xsi="http://w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">

repo

${env.NEXUS_REPO_USERNAME}

${env.NEXUS_REPO_PASSWORD}

这个文件配置了 repo 的 maven 私服仓库 server,因为这个配置跟随项目的 git 走的,为了防止用户名和密码泄露,从环境变量中获取(提前在 gitlab 里配置好)

2、在.gitlab-ci.yml 中新增 build-deploy 流程

build-deploy:

stage: builhttp://d-deploy

image: maven:3.6.3-openjdk-8-slim

only:

- master

- dev

variables:

MAVEN_OPTS: "-Xmx512m -Xms512m -Dmaven.repo.local=$CI_PROJECT_DIR/repository"

script:

- mvn -s .ci/settings.xml --batch-mode clean deploy -Drevision=1.0-${CI_PIPELINE_IID}

artifacts:

paths:

- admin/target

expire_in: 1 week

cache:

paths:

- repository

以上就是多模块maven的deploy集成gitlab ci自动发版配置的详细内容,更多关于maven deploy集成gitlab ci配置的资料请关注我们其它相关文章!

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis主从复制与哨兵模式
下一篇:这是一个Swift playground解释了如何创建一个微小的编程语言叫Mu
相关文章

 发表评论

暂时没有评论,来抢沙发吧~