Python 官方文档:入门教程 => 点击学习
目录背景Maven 配置gitlab ci 配置背景 多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目
多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目用,那么这个时候需要将这个模块上传到 maven 私服,发布 maven 私服时,release 版本不支持覆盖,所以需要集成 ci 工具,给 maven 模块自动加上版本号,并自动完成 deploy 操作。本文方案依赖 maven 打包插件 flatten-maven-plugin,maven 版本要求大于等于 3.5.0
1、将 root 模块的 version 变量化,如新增如下的版本号 properties 参数
<modelVersion>4.0.0</modelVersion>
<groupId>com.GitHub.kl</groupId>
<artifactId>demo</artifactId>
<packaging>pom</packaging>
<version>${revision}</version>
<name>${project.artifactId}</name>
<modules>
<module>core</module>
<module>common</module>
<module>admin</module>
</modules>
<properties>
<revision>1.0</revision>
</properties>
2、子模块依赖父模块,依然使用 {revision} 占位符代替,依赖子模块使用revision占位符代替,依赖子模块使用{project.version},如:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.github.kl</groupId>
<artifactId>demo</artifactId>
<version>${revision}</version>
</parent>
<artifactId>core</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<dependencies>
<dependency>
<groupId>com.github.kl</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
3、不纳入自动版本号的模块,指定 version,同时,这种模块也不需要 deploy 到私服,配置提过,如:
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.github.kl</groupId>
<artifactId>demo</artifactId>
<version>1.0</version>
</parent>
<artifactId>admin</artifactId>
<packaging>jar</packaging>
<name>${project.artifactId}</name>
<properties>
<maven.deploy.skip>true</maven.deploy.skip>
</properties>
<dependencies>
<dependency>
<groupId>com.github.kl</groupId>
<artifactId>common</artifactId>
<version>${project.version}</version>
</dependency>
</dependencies>
4、root 模块添加支持外部传入版本号参数的构建插件 flatten-maven-plugin,添加私服仓库地址
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>flatten-maven-plugin</artifactId>
<version>1.1.0</version>
<configuration>
<updatePomFile>true</updatePomFile>
<flattenMode>resolveCiFriendliesOnly</flattenMode>
</configuration>
<executions>
<execution>
<id>flatten</id>
<phase>process-resources</phase>
<Goals>
<goal>flatten</goal>
</goals>
</execution>
<execution>
<id>flatten.clean</id>
<phase>clean</phase>
<goals>
<goal>clean</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
<distributionManagement>
<repository>
<id>repo</id>
<url>https://nexus.dev.com/repository/maven-releases/</url>
</repository>
</distributionManagement>
完成如上步骤后,deploy 时,就可以通过传入系统参数的方式,动态指定版本号,如:mvn deploy -Drevision=xxx
1、在项目根目录创建文件 .ci/settings.xml , 内容如下:
<settings xmlns="Http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.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">
<servers>
<server>
<id>repo</id>
<username>${env.NEXUS_REPO_USERNAME}</username>
<passWord>${env.NEXUS_REPO_PASSWORD}</password>
</server>
</servers>
</settings>
这个文件配置了 repo 的 maven 私服仓库 server,因为这个配置跟随项目的 git 走的,为了防止用户名和密码泄露,从环境变量中获取(提前在 gitlab 里配置好)
2、在.gitlab-ci.yml 中新增 build-deploy 流程
build-deploy:
stage: build-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配置的资料请关注编程网其它相关文章!
--结束END--
本文标题: 多模块maven的deploy集成gitlab ci自动发版配置
本文链接: https://lsjlt.com/news/139843.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0