更新时间:2025-08-29 GMT+08:00

Maven构建

Maven主要用于基于Java的项目的构建、依赖管理和项目信息管理。

操作视频

本视频介绍基于图形化构建方式执行Maven构建的操作。

图形化构建

配置构建步骤中,添加“Maven构建”构建步骤,参考表1配置参数。

表1 Maven构建步骤参数说明

参数

说明

步骤显示名称

构建步骤的名称,可自定义修改。

  • 支持中文、英文、数字、“-”“_”、英文逗号、英文分号、英文冒号、“.”“/”、圆括号(中英文)。
  • 字符长度范围为1~128。

工具版本

根据用户实际开发环境的需要,选择对应的工具版本。

CodeArts Build支持的工具版本,可查看构建工具版本。若当前的工具版本不满足您的使用要求,您可以制作镜像并推送到SWR仓库

命令

配置Maven命令,一般使用系统默认生成的命令即可。如果需要配置更多命令,可参考Maven官网

失败后是否继续运行

当前步骤执行失败后是否继续执行下一个步骤,根据实际使用场景选择是或否。

setting配置

  • 自动生成setting文件并配置依赖仓库:可根据用户的IP不同,自动识别最优站点访问CodeArts提供的“setting.xml”文件。

    国内用户使用“国内站点”,国际用户使用“国际站点”。建议使用默认配置。

    “setting.xml”文件中定义了默认的依赖拉取顺序和镜像源代理等配置信息,如果需要使用自定义的“setting.xml”文件,可添加自定义setting.xml文件,然后在默认的打包命令末尾添加--settings settings.xml,即可使用已添加的“settings.xml”文件执行Maven构建。

  • 公有依赖仓库:默认已添加华为开源镜像站,同时配置了HuaweiSDK仓库。此配置仅在需要添加非CodeArts提供的公有依赖仓库时使用,添加方法如下:
    1. 单击“添加”
    2. 填写公有依赖仓库地址,根据需要勾选“release仓库”“snapshot仓库”。release仓库和snapshot仓库至少勾选一个,也可以同时勾选。

      release仓库:勾选后,构建过程将尝试从仓库中下载release版本依赖。

      snapshot仓库:勾选后,构建过程将尝试从仓库中下载snapshot版本依赖。

  • 私有依赖库:默认已配置CodeArts提供的私有依赖仓库。此配置仅在需要添加其它私有依赖仓库时使用,添加方法如下:
    1. 新建nexus repository服务扩展点。
    2. 单击“添加”,选择上一步创建的服务扩展点,并根据需要勾选“release仓库”“snapshot仓库”
      “release仓库”“snapshot仓库”两种仓库对应的使用场景区分如下,使用时要务必注意区分,避免出现如“将依赖上传到软件发布库但是构建时无法下载”此类场景。
      • “snapshot仓库”:对于以调试为目的发布的私有依赖包,一般会给依赖版本号增加-SNAPSHOT后缀(如:1.0.0-SNAPSHOT),执行发布操作时,此类依赖会自动发布到snapshot仓库,发布时无需更新版本号,构建命令中增加-U参数即可拉取最新版本。
      • 对于正式发布的私有依赖包,版本号中不可带-SNAPSHOT后缀(如:1.0.0),执行发布操作时,此类依赖会自动发布到release仓库,发布时必须更新版本号,否则会导致构建过程无法拉取最新依赖包。

发布依赖包到CodeArts私有依赖库

编译构建服务默认使用私有依赖库作为私有依赖下载源,如果需要将构建产物上传至私有依赖库供其他项目依赖使用,则需要添加此配置。配置前,需已创建私有依赖库。配置方法如下:

  • 不配置pom:表示无需发布私有依赖包到CodeArts私有依赖库。
  • 配置所有pom:表示在项目下所有“pom.xml”文件增加deploy配置,使用mvn deploy命令将构建出的依赖包上传到私有依赖仓库。

    配置后,需在命令窗口,使用“#”注释命令mvn package -Dmaven.test.skip=true -U -e -X -B,如下图:

    删除#mvn deploy -Dmaven.test.skip=true -U -e -X -B命令前的“#”,如下图:

上传的私有依赖包,在其他项目添加pom.xml文件中的groupId、artifactId、version坐标即可引用。

单元测试

如果用户需要对单元测试结果进行处理,可配置此项。详见配置单元测试

缓存配置

选择是否使用缓存以提高构建速度,选择“使用缓存”后,每次构建时会把下载依赖包缓存起来,后续构建无需重复拉取,可有效提高构建速度。

Maven构建的依赖包存入缓存之后,只有当租户下面构建的项目有引进新的依赖包时,才会更新缓存目录,并不支持对已有的依赖包缓存文件进行更新。

代码化构建

参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
version: 2.0 # 必须是2.0
steps:
  BUILD:
    - maven:
          image: cloudbuild@maven3.5.3-jdk8-open
          inputs:
            settings:
              public_repos:
                - https://mirrors.example.com/maven
            cache: true # 是否开启缓存
            unit_test:
              coverage: true
              ignore_errors: false
              report_path: "**/TEST*.xml"
              enable: true
              coverage_report_path: "**/site/jacoco"
            command: mvn package -Dmaven.test.failure.ignore=true -U -e -X -B
            ignore_fail: true
表2 代码示例参数说明

参数

类型

说明

image

string

填写镜像地址,有以下两种格式。

  • cloudbuild@maven3.5.3-jdk8-open:以cloudbuild开始,@作为分隔符,后面是编译构建提供的默认镜像,编译构建支持的镜像构建工具版本可参考构建工具版本
  • 完整的swr镜像地址,例如:swr.example.example.com/codeci_test/demo:141d26c455abd6d7xxxxxxxxxxxxxxxxxxxx

    镜像地址获取方式可参考获取SWR镜像地址

settings

map

可选参数。当用户需要使用自定义“settings.xml”文件时,需要配置该参数。

不配置,则默认使用CodeArts提供的setting.xml文件,如果需要使用自定义的“settings.xml”文件,可先添加自定义setting.xml文件,然后在默认的打包命令mvn package -Dmaven.test.failure.ignore=true -U -e -X -B末尾添加--settings settings.xml。

cache

bool

可选参数。

配置是否开启缓存。

  • true:开启。
  • false:不开启。

默认值:false。

command

string

配置执行的Maven命令。如果需要配置更多命令,可参考Maven官网

unit_test

map

可选参数。

配置单元测试。详细操作指导参考配置单元测试

ignore_fail

string

用于控制当前步骤执行失败后是否继续执行下一个步骤。
  • true:是。
  • 为空:否。

添加自定义“setting.xml”文件

上传文件的约束限制条件如下:
  • 文件大小限制为100k。
  • 文件类型限制为:.xml、.key、.keystore、.jks、.crt、.pem。
  • 最多支持上传20个文件。

添加文件有以下两种方式:

  • 图形化构建
    1. “Maven构建”的命令窗口执行cat /home/build/.m2/settings.xml命令,任务执行完成后,会在构建日志中展示“settings.xml”文件的内容。
    2. 参考构建日志中的“settings.xml”的信息自定义新的“settings.xml”文件。
    3. “Maven构建”步骤前增加“下载文件管理的文件”构建步骤。

      自定义步骤显示名称,工具版本当前仅支持“shell4.2.46-git1.8.3-zip6.00”

    4. 单击“上传”,在弹出的窗口中选择2中自定义的文件,添加描述,勾选相关协议,然后单击“保存”
    5. “下载文件”中选择上传的“setting.xml”文件。
  • 代码化构建
    参考以下代码示例,修改在创建代码化构建使用的YAML文件中的BUILD部分代码信息。
    1
    2
    3
    4
    5
    6
    7
    version: 2.0 # 必须是2.0
    steps:
      BUILD:
        - download_file:
              inputs:
                name: settings.xml
                ignore_fail: true
    
    表3 下载文件管理的文件代码示例参数说明

    参数

    类型

    说明

    name

    string

    setting文件名称。

    ignore_fail

    string

    用于控制当前步骤执行失败后是否继续执行下一个步骤。

    • true:是。
    • 为空:否。

其他操作

配置单元测试配置使用JaCoCo生成单元测试覆盖率报告为可选操作,请根据实际需要进行配置。

  • 单元测试:Maven构建工具中的单元测试主要用于验证软件代码的基本功能是否按照预期工作。在Maven项目中,通常使用JUnit或其他测试框架来编写和运行这些单元测试。
  • 配置使用JaCoCo生成单元测试覆盖率报告:单元测试覆盖率报告用来衡量代码中哪些部分已经被单元测试覆盖,哪些部分还没有被覆盖。它可以帮助开发人员了解他们的测试是否充分地检查了所有的代码路径和逻辑。