
# 使用Maven构建上传软件包至私有依赖库（内置执行机/图形化构建）
#### 应用场景
当CodeArts Build提供的默认依赖库不满足业务要求时，您可使用自己搭建的私有依赖库进行构建。本实践以Maven构建为例，为您介绍构建完后如何上传构建产物到私有依赖库，以便后续构建使用，其他构建语言操作类似。
本实践需要依赖使用的其他服务如下：
- [代码托管服务](https://support.huaweicloud.com/codeartsrepo/index.html)，用于存储实践中项目所使用的代码。
- [制品仓库服务](https://support.huaweicloud.com/cloudartifact/index.html)，用于存储实践中使用的私有依赖包。
 
#### 约束限制
- 需已具备CodeArts Artifact服务的操作权限，具体操作可参考[授权使用CodeArts Artifact服务](https://support.huaweicloud.com/usermanual-cloudartifact/cloudartifact_bill_9000.html)。
- 需已具备CodeArts Repo服务的操作权限，具体操作可参考[授权使用CodeArts Repo服务](https://support.huaweicloud.com/usermanual-codeartsrepo/codeartsrepo_03_0132.html)。
 
#### 操作流程
表1操作流程 
| **流程**                                                                                           | **说明**                          |
|:---|:---|
| [新建项目]                  | 为本实践新建项目。                       |
| [新建私有依赖库]               | 新建本实践中使用的私有依赖库。                 |
| [新建CodeArts Repo代码仓] | 新建本实践需要使用的代码仓。                  |
| [新建构建任务并执行]            | 新建本实践中需要使用的构建任务并按照本实践场景配置任务并执行。 |
| [查看构建结果]                 | 查看本实践的构建结果，包括查看构建日志和结果文件。       |
   
 #### 新建项目
1. 使用华为云账号[登录华为云控制台页面](https://console.huaweicloud.com/console)。
2. 单击页面左上角![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251774.png)，在服务列表中选择"开发与运维 \> 华为云码道 CodeArts"。
3. 单击"立即使用"，进入CodeArts服务首页。
4. 在首页单击"新建项目"，选用"Scrum"项目模板。
5. 项目名称填写"build-bestpractice"，其他保持默认即可。
6. 单击"确定"后，进入到"build-bestpractice"项目下。
 
 #### 新建私有依赖库
1. 选择导航栏"制品仓库 \> 私有依赖库"。
2. 单击"新建"，按照[表2]配置参数。
   
    表2新建私有依赖库参数说明 
   | **参数**  | **说明**                                                                              |
   |:---|:---|
   | 仓库类型    | 选择"本地仓"。                                                                            |
   | 仓库名称    | 自定义仓库名称，例如"maven_repository"。                                                       |
   | 制品类型    | 选择"Maven"。                                                                          |
   | 归属项目    | 默认填写为"build-bestpractice"，无需手动填写。                                                   |
   | 添加路径白名单 | 本实践不涉及，无需填写。                                                                        |
   | 版本策略    | 选择发布的版本，Release（功能稳定的发行版本）或者Snapshot（功能不稳定、处于开发阶段中的快照版本）。本实践选择"Release"和"Snapshot"。 |
   | 描述      | 自定义描述信息。最多200个字符。                                                                   |
      
   
   
3. 单击"确定"，进入到"maven_repository"依赖库的详情页面。创建完成的私有依赖库如[图1]所示。
   
   图1私有依赖库   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370241.png)
   
   
 
 #### 新建CodeArts Repo代码仓
1. 在选择导航栏"代码 \> 代码托管"。
2. 单击"新建仓库"，选择"模板仓库"，单击"下一步"。
3. 选择"Java Maven Demo"模板，单击"下一步"。
4. 在按模板新建页面，"代码仓库名称"命名为"maven_private_repository_repo"，其他参数保持默认即可。
5. 单击"确定"，自动跳转到"代码仓详情"页面。新建后代码仓文件目录如[图2]所示。
   
   图2文件目录   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087251645.png)
   
   
 
 #### 新建构建任务并执行
1. 在编译构建服务页面，单击"新建任务"，按照如下参数说明配置参数，其他参数保持默认即可。 
   - 名称：自定义构建任务名称，例如"maven_private_repository_task"。
   
   - 代码源：选择本次构建拉取的代码源，这里选择"Repo"。
   
   - 代码仓：选择[新建CodeArts Repo代码仓]中新建的代码仓"maven_private_repository_repo"。
   
   
   
   
2. 单击"下一步"，选择"Maven"模板。然后单击"确定"，自动跳转到构建步骤配置页面。
3. 在"构建步骤"页签，单击"图形化"，单击左侧"Maven构建"，按照如下说明配置构建步骤，其他参数保持默认即可。 
   - 命令：mvn package -Dmaven.test.skip=true -U -e -X -B命令前加"#"，删除#mvn deploy -Dmaven.test.skip=true -U -e -X -B前的"#"。
   
   - 发布依赖包到CodeArts私有依赖库：选择"配置所有pom"。
   
   - "release仓库"和"snapshot仓库"选择[新建私有依赖库]中仓库名"maven_repository"。
     图3配置Maven构建步骤   
     ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051092822.png) 
   
   
   
   
4. 单击页面右上角"保存并执行"，在弹出的窗口中单击"确定"，自动跳转到构建任务执行页面。
 
 #### 查看构建结果
1. 待构建任务成功执行后，在"步骤日志"页签单击"Maven构建"，控制台打印了Maven构建产物上传到私有依赖库的日志信息。 
   图4查看构建日志   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251130.png)
   
   
2. 选择页面导航栏"制品仓库 \> 私有依赖库"，在"私有依赖库"展开"maven_repository (Snapshot)"目录，可查看发布的依赖包，如[图5]所示。
   
   图5查看软件包   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370249.png)
   
   
 
#### 相关信息
当前实践展示的是归档"Snapshot"快照版本，如果要归档正式的"Release"发布版本，可以修改[新建CodeArts Repo代码仓]中的代码仓"pom.xml"文件中的"version"内容，将"1.0.0-SNAPSHOT"修改为"1.0.0"，提交文件改动，重新执行构建任务即可。
Maven构建会根据模块的版本号，即"pom.xml"文件中的"version"内容是否带有"-SNAPSHOT"来判断是快照版本还是正式版本。
