
# 使用Maven构建实现私有依赖包的上传及下载引用（内置执行机/图形化构建）
#### 应用场景
本实践案例将为您介绍，如何在CodeArts Build构建工程中引用私有依赖库中的二方或三方依赖包，实现应用的编译构建。本实践案例为您演示依赖包的发布和下载引用两个环节，共涉及2个Maven构建工程，1个私有依赖库。
- 构建工程"dependency_task"：用于发布工具包，将"pom.xml"文件定义的"dependencyProject-1.0.jar"工具包发布到私有依赖库，为构建工程"release_task"提供依赖工具包引用。
- 构建工程"release_task"：用于发布应用，构建时依赖构建工程"dependency_repo"发布到私有依赖库的工具包"dependencyProject-1.0.jar"。
- 私有依赖库"dependency_libs"：存放构建工程"dependency_task"发布的工具包"dependencyProject-1.0.jar"，为构建工程"release_task"提供依赖工具包下载。 本实践需要依赖使用的其他服务如下：
  - [代码托管服务](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操作流程 
| **流程**                                                                                             | **说明**                                               |
|:---|:---|
| [新建项目]                                                 | 为本实践新建项目。                                            |
| [新建私有依赖库]                 | 新建本实践中使用的私有依赖库。                                      |
| [新建dependency_repo代码仓] | 新建发布"dependencyProject-1.0.jar"工具包使用的代码仓。            |
| [新建dependency_task构建任务]   | 新建发布"dependencyProject-1.0.jar"工具包的构建任务。             |
| [新建release_repo代码仓]       | 新建发布应用使用的代码仓。                                        |
| [新建release_task构建任务]        | 新建发布应用使用的构建任务，该构建任务依赖"dependencyProject-1.0.jar"工具包。 |
| [查看构建结果]                  | 查看本实践的构建结果。                                          |
   
 #### 新建项目
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新建私有依赖库参数说明 
   | **参数**  | **说明**                                                                   |
   |:---|:---|
   | 仓库类型    | 选择"本地仓"。                                                                 |
   | 仓库名称    | 自定义仓库名称，例如"dependency_libs"。                                             |
   | 制品类型    | 选择"Maven"。                                                               |
   | 归属项目    | 默认填写为"build-bestpractice"，无需手动填写。                                        |
   | 添加路径白名单 | 本实践不涉及，无需填写。                                                             |
   | 版本策略    | 选择发布的版本，Release（功能稳定的发行版本）或者Snapshot（功能不稳定、处于开发阶段中的快照版本）。本实践选择"Release"。 |
   | 描述      | 自定义描述信息。最多200个字符。                                                        |
      
   
   
3. 单击"确定"，进入到"dependency_libs"依赖库的详情页面。创建完成的私有依赖库如[图1]所示。
   
   图1私有依赖库   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051092902.png)
   
   
 
 #### 新建dependency_repo代码仓
1. 在选择导航栏"代码 \> 代码托管"。
2. 单击"新建仓库"，选择"模板仓库"，单击"下一步"。
3. 选择"Java Maven Demo"模板，单击"下一步"。
4. 在按模板新建页面，"代码仓库名称"命名为"dependency_repo"，其他参数保持默认即可。
5. 单击"确定"，自动跳转到"代码仓详情"页面。新建后代码仓文件目录如[图2]所示。
   
   图2文件目录   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087251709.png)
   
   
6. 单击"pom.xml"文件，在右侧区域单击![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251214.png)，进入"pom.xml"文件编辑页面。
   
   图3编辑pom.xml文件   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370309.png)
   
   
7. "groupId"修改为"com.huawei.dependency"，"artifactId"修改为"dependencyProject"，"name"修改为"dependency_project"，参考[图4]所示。单击"确定"，保存修改后的"pom.xml"文件。
   
   图4修改pom.xml文件   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051092906.png)
   
   
 
 #### 新建dependency_task构建任务
1. 选择导航栏"持续交付 \> 编译构建"。
2. 单击"新建任务"，按照如下参数说明配置参数，其他参数保持默认即可。 
   - 名称：自定义，例如"private_repository_task"。
   
   - 代码源：选择"Repo"。
   
   - 代码仓：选择[新建dependency_repo代码仓]中新建的代码仓"private_repository_repo"。
   
   
   
   
3. 单击"下一步"，选择"空白构建模板"。单击"确定"，进入到构建步骤配置页面。
4. 在"构建步骤"页签，单击"图形化"，单击左侧"点击添加构建步骤"，添加"Maven构建"。
5. 单击"Maven构建"，按照如下说明配置构建步骤，其他参数保持默认即可。 
   - 命令：mvn package -Dmaven.test.skip=true -U -e -X -B命令前加"#"，删除#mvn deploy -Dmaven.test.skip=true -U -e -X -B前的"#"。
   
   - 发布依赖包到CodeArts私有依赖库：选择"配置所有pom"。
   
   - "release仓库"选择[新建私有依赖库]中仓库名"dependency_libs"。
     图5配置Maven构建步骤   
     ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087251713.png) 
   
   
   
   
6. 单击页面右上角"保存并执行"，在弹出的窗口中单击"确定"，自动跳转到构建任务执行页面。
7. 待构建任务成功执行完成后，选择页面导航栏"制品仓库 \> 私有依赖库"，在"私有依赖库"展开"dependency_libs（Release）"目录，可查看发布的依赖包，如[图6]所示，为本次的构建产物。
   
   图6查看依赖包   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251218.png)
   
   
 
 #### 新建release_repo代码仓
1. 在选择导航栏"代码 \> 代码托管"。
2. 单击"新建仓库"，选择"模板仓库"，单击"下一步"。
3. 选择"Java Maven Demo"模板，单击"下一步"。
4. 在按模板新建页面，"代码仓库名称"命名为"release_repo"，其他参数保持默认即可。
5. 单击"确定"，自动跳转到"代码仓详情"页面。
6. 单击"pom.xml"文件，在右侧区域单击![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087370313.png)，进入"pom.xml"文件编辑页面，将如下代码复制到[图7]中红框处。单击"确定"，保存修改后的"pom.xml"文件。
   
   以下示例代码表示"dependency"节点新增了对[新建dependency_task构建任务]中生成的依赖包"dependencyProject-1.0.jar"的引用。
   ```
   <modelVersion>4.0.0</modelVersion>
     <groupId>com.huawei.release</groupId>
     <artifactId>releaseProject</artifactId>
     <packaging>jar</packaging>
     <version>1.0</version>
     <name>release_roject</name>
     <url>http://maven.apache.org</url>
     <dependencies>
       <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>3.8.1</version>
       <scope>test</scope>
       </dependency>
       <dependency>
       <groupId>com.huawei.dependency</groupId>
       <artifactId>dependencyProject</artifactId>
       <version>1.0</version>
       </dependency>
     </dependencies>
   ```
   图7修改pom.xml文件   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051092910.png)
   
   
 
 #### 新建release_task构建任务
1. 选择导航栏"持续交付 \> 编译构建"。
2. 单击"新建任务"，按照如下参数说明配置参数，其他参数保持默认即可。 
   - 名称：自定义，例如"release_task"。
   
   - 代码源：选择"Repo"。
   
   - 代码仓：选择[新建release_repo代码仓]中新建的代码仓"release_repo"。
   
   
   
   
3. 单击"下一步"，选择"空白构建模板"。单击"确定"，进入到构建步骤配置页面。
4. 在"构建步骤"页签，单击"图形化"，单击左侧"点击添加构建步骤"，添加"Maven构建"，参数保持默认配置即可。
5. 单击页面右上角"保存并执行"，在弹出的窗口中单击"确定"，自动跳转到构建任务执行页面。 
   图8执行构建任务   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087251717.png)
   
   
 
 #### 查看构建结果
在"步骤日志"页签中，"构建日志"控制台会滚动打印构建任务执行日志信息。如图所示，日志控制台输出信息表示从私有依赖库"dependency_libs"拉取依赖工具包"dependencyProject-1.0.jar"，"dependencyProject-1.0.jar"为[新建dependency_task构建任务]中发布到私有依赖库的工具包。
图9查看构建日志   
![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251222.png)
#### 相关操作
关于Maven构建相关常见问题，可参考[Maven构建常见问题](https://support.huaweicloud.com/codeci_faq/codeci_02_0002.html)。
