
# 基于私有依赖库使用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操作流程 
| **流程**                                                                                            | **说明**                                  |
|:---|:---|
| [新建项目]                                                | 为本实践新建项目。                               |
| [新建私有依赖库]                | 新建本实践中使用的私有依赖库。                         |
| [查询私有依赖仓库信息]            | 查询私有依赖库的id和url信息，用于配置在代码仓的"pom.xml"文件中。 |
| [上传settings.xml文件至编译构建]  | 上传"settings.xml"文件到编译构建服务的"文件管理"中。      |
| [新建CodeArts Repo代码仓]     | 新建本实践需要使用的代码仓。                          |
| [配置Maven构建产物发布的私有依赖库地址] | 配置构建产物上传的私有依赖库的地址。                      |
| [新建编译构建任务]            | 新建本实践需要使用的编译构建任务。                       |
| [配置构建步骤并执行构建任务]         | 配置"下载文件管理的文件"和"Maven构建"步骤并执行构建任务。       |
| [查看编译构建结果]              | 在私有依赖库中查看编译构建结果。                        |
   
 #### 新建项目
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新建私有依赖库参数说明 
   | **参数**  | **说明**                                                                   |
   |:---|:---|
   | 仓库类型    | 选择"本地仓"。                                                                 |
   | 仓库名称    | 自定义仓库名称，例如"private_repository"。                                          |
   | 制品类型    | 选择"Maven"。                                                               |
   | 归属项目    | 默认填写为"build-bestpractice"，无需手动填写。                                        |
   | 添加路径白名单 | 本实践不涉及，无需填写。                                                             |
   | 版本策略    | 选择发布的版本，Release（功能稳定的发行版本）或者Snapshot（功能不稳定、处于开发阶段中的快照版本）。本实践选择"Release"。 |
   | 描述      | 自定义描述信息。最多200个字符。                                                        |
      
   
   
3. 单击"确定"，进入到private_repository依赖库的详情页面。
 
 #### 查询私有依赖仓库信息
1. 单击页面右上角"操作指导"。
2. 在弹出的窗口中保持默认选项，单击"下载配置文件"。
3. 在弹出的窗口中单击"下载"。 
   图1下载配置文件   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093656.png)
   
   
4. 打开下载到本地的"settings.xml"文件，找到"\<profile\>"节点下定义的仓库信息\<repository\>中的"id"和"url"，并记录。
   
   图2查看仓库的id和url   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251970.png)
   
   
 
 #### 上传"settings.xml"文件至编译构建
1. 选择导航栏"持续交付 \> 编译构建"。
2. 在编译构建任务列表页选择"更多 \> 文件管理"。
3. 单击"上传文件"。
4. 在弹出的窗口中，上传[查询私有依赖仓库信息]中下载的"settings.xml"文件，勾选协议后单击"保存"。
 
 #### 新建CodeArts Repo代码仓
1. 选择导航栏"代码 \> 代码托管"。
2. 单击"新建仓库"，选择"模板仓库"，单击"下一步"。
3. 选择"Java Maven Demo"模板，单击"下一步"。
4. 在按模板新建页面，"代码仓库名称"命名为"private_repository_repo"，其他参数保持默认即可。
5. 单击"确定"，新建后代码仓文件目录如[图3]所示。
   
   图3文件目录   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087371045.png)
   
   
 
 #### 配置Maven构建产物发布的私有依赖库地址
1. 单击"pom.xml"文件，在右侧区域单击![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087252469.png)进入到文件编辑模式。
2. 将如下代码示例粘贴到build标记下方。 
   图4pom文件代码示例   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093660.png)
   ```
   <distributionManagement>
       <repository>
         <id>ID</id>
         <url>https://example/</url>
       </repository>
     </distributionManagement>
   ```
   其中"id"和"url"为[4]中查看到的"id"和"url"。
   
   
3. 单击"确定"。
 
 #### 新建编译构建任务
1. 选择导航栏"持续交付 \> 编译构建"。
2. 单击"新建任务"，按照如下参数说明配置参数，其他参数保持默认即可。 
   - 名称：自定义，例如"private_repository_task"。
   
   - 代码源：选择"Repo"。
   
   - 代码仓：选择[新建CodeArts Repo代码仓]中新建的代码仓"private_repository_repo"。
   
   
   
   
3. 单击"下一步"，选择"空白构建模板"。
4. 单击"确定"，进入到构建步骤配置页面。
 
 #### 配置构建步骤并执行构建任务
1. 单击"点击添加构建步骤"，添加"下载文件管理的文件"构建步骤，"步骤显示名称"和"工具版本"保持默认，"下载文件"选择[上传settings.xml文件至编译构建]中上传的文件"settings.xml"。
2. 单击"添加步骤"，添加"Maven构建"构建步骤，"命令"窗口中mvn package -Dmaven.test.skip=true -U -e -X -B命令前加"#"注释，删除mvn deploy -Dmaven.test.skip=true -U -e -X -B前的"#"，并将mvn deploy -Dmaven.test.skip=true -U -e -X -B改为mvn deploy -Dmaven.test.skip=true -s settings.xml -U -e -X -B，其他参数保持默认即可。
   
   图5打包命令   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051251978.png)
   图6发布依赖包命令   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087371057.png)
   
   
3. 单击"保存并执行"。在弹出的窗口中单击"确定"，等待构建任务执行完成。
 
 #### 查看编译构建结果
1. 单击构建任务名称"private_repository_task"。
2. 在"构建历史"页签单击构建编号，查看步骤日志如下信息，其中"com/huawei/demo/javaMavenDemo/1.0"为构建产物在私有依赖库"private_repository"中上传的路径。 
   图7依赖包上传路径   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002087252481.png)
   
   
3. 选择导航栏"制品仓库 \> 私有依赖库"。
4. 展开"private_repository"，打开"com/huawei/demo/javaMavenDemo/1.0"，可查看到本实践上传的软件包。 
   图8查看上传的软件包   
   ![](https://support.huaweicloud.com/bestpractice-codeci/zh-cn_image_0000002051093672.png)
   
   
 
#### 相关操作
关于Maven构建相关常见问题，可参考[Maven构建常见问题](https://support.huaweicloud.com/codeci_faq/codeci_02_0002.html)。
