返回顶部
首页 > 资讯 > 后端开发 > Python >多模块maven的deploy集成gitlab ci自动发版配置
  • 605
分享到

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

2024-04-02 19:04:59 605人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

目录背景Maven 配置gitlab ci 配置背景 多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目

背景

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

maven 配置

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

gitlab ci 配置

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

猜你喜欢
  • 多模块maven的deploy集成gitlab ci自动发版配置
    目录背景maven 配置gitlab ci 配置背景 多模块的 maven 项目,抽象了通用的代码逻辑作为单独的 maven 模块,这样,不仅自己项目可以用,也可以提供依赖给其他项目...
    99+
    2024-04-02
  • SpringBoot集成mqtt的多模块项目配置详解
    目录前言开发工具及系统环境项目路径配置过程1. 搭建父项目2. 搭建子项目3. 配置各个模块4. 配置MQTT模块前言 近期为了准备毕设,准备使用SpringBoot搭建mqtt后端...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作