# 编写单任务build.yml文件
以下示例为使用内置X86、8U16G的执行机，使用Maven构建工具编译构建托管在CodeArts Repo中的代码，并上传软件包至软件发布库。
不同构建步骤的代码示例，可参考[配置构建任务](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_0059.html)下"构建任务基础配置"和"配置构建步骤"中的"代码化构建"部分。多任务YAML文件结构可参考[编写多任务build.yml文件](https://support.huaweicloud.com/usermanual-codeci/codeci_ug_1057.html)。
```
version: 2.0 # 必须是2.0，该版本号必填且唯一
params: # 构建参数，可在构建过程中引用。如果不填写，则优先使用配置构建任务参数中的构建参数
  - name: paramA
    value: valueA
  - name: paramB
    value: valueB
env: # 定义构建环境信息。非必填，如果不填写，默认使用X86
  resource:
    type: docker # 资源池类型：docker或custom，其中docker表示使用默认执行机，custom表示使用自定义执行机
    arch: X86 # 构建环境主机类型：X86或ARM
    class: 8U16G # 规格：2U8G、4U8G、8U16G、16U32G或16U64G，当type为custom时无需填写该参数
    pool: Mydocker #资源池名称，当type为custom时需要填写该参数
steps:
  PRE_BUILD: # 用于做构建前的准备，例如下载代码，执行shell等
    - checkout:
        name: 代码下载 # 可选
        inputs: # 步骤参数
          scm: codehub # 代码来源:只支持Repo
          url: xxxxxxxxx # 拉取的代码仓的ssh地址
          branch: ${codeBranch} # 拉取的代码分支：支持参数化
    - sh:
        inputs:
          command: echo ${paramA}
  BUILD: # 用于定义构建步骤，仅支持配置一个BUILD
    - maven: # 步骤关键字，仅支持特定关键字
name: maven build # 可选
image: xxx # 镜像地址 
inputs:
  command: mvn clean package
    - upload_artifact:
inputs:
          path: "**/target/*.?ar"
```
