通过私有依赖库页面上传/下载各类型组件
仓库管理员与开发者角色可上传及下载私有组件,可以在“仓库权限”中设置仓库角色。
通过私有依赖库页面上传各类型私有组件的通用操作
- 进入CodeArts首页。
- 登录CodeArts控制台,单击
,根据需要选择已开通CodeArts的区域。 - 单击“前往工作台”。
如果当前账号采用的是历史计费模式(详情请参考历史计费模式说明),则单击“立即使用”。
登录CodeArts控制台,单击“立即使用”。
- 登录CodeArts控制台,单击
- 单击项目卡片进入项目(若没有项目,请新建CodeArts项目)。
- 在左侧导航栏选择“制品仓库 > 私有依赖库”,进入私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标仓库。
- 单击页面右侧“上传制品”。
- 在“上传制品”对话框中配置组件参数,并上传文件,单击“上传”。每种类型组件的详细配置请参考以下各节中的说明。
- 当前页面上传功能不支持Conan类型组件。
- 私有依赖库通过页面上传单文件大小限制:Maven/npm/PyPI/RPM/Debian类型最大限制为100MB, NuGet最大限制为20MB。
- 请勿上传包含明文账号、密码等敏感信息的文件至私有依赖库,避免信息泄露。
通过私有依赖库页面上传Maven组件
Maven组件介绍
- POM:POM( Project Object Model,项目对象模型 ) 是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建以及声明项目依赖等。执行构建任务时,Maven会在当前目录中查找 POM,读取 POM,获取所需的配置信息,构建产生出目标组件。
- Maven坐标:在三维空间中使用X、Y、Z唯一标识一个点。在Maven中通过GAV标识唯一的Maven组件包,GAV是groupId、artifactId、version的缩写。groupId即公司或者组织,如Maven核心组件都是在org.apache.maven组织下。artifactId是组件包的名称。version是组件包的版本。
- Maven依赖:依赖列表是POM的基石,大多数项目的构建和运行依赖于对其他组件的依赖,在POM文件中添加依赖列表。如App组件依赖App-Core和App-Data组件,配置如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.companyname.groupname</groupId> <artifactId>App</artifactId> <version>1.0</version> <packaging>jar</packaging> <dependencies> <dependency> <groupId>com.companyname.groupname</groupId> <artifactId>App-Core</artifactId> <version>1.0</version> </dependency> </dependencies> <dependencies> <dependency> <groupId>com.companyname.groupname</groupId> <artifactId>App-Data</artifactId> <version>1.0</version> </dependency> </dependencies> </project>
上传Maven组件
私有依赖库支持两种上传模式:POM模式与GAV模式。
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标Maven仓库。
- 单击页面右侧“上传制品”。
- 在弹框中选择上传模式并配置相应模式的参数,如下表所示。
表1 Maven组件上传模式及其参数配置说明 上传模式
说明
POM模式
GAV参数来自于POM文件,系统将保留组件的传递依赖关系。
POM模式可以只上传pom文件,也可上传pom文件与相关的组件,上传文件名称需要和pom文件中的artifactId、version一致。如下图,POM中artifactId为demo,version为1.0,上传的文件必须是demo-1.0.jar。
图1 选择POM模式上传制品
pom文件最基本结构如下:
<project> <modelVersion>4.0.0</modelVersion> <groupId>demo</groupId> <artifactId>demo</artifactId> <version>1.0</version> </project>
说明:modelVersion这个标签必须存在,而且值必须是4.0.0,这标志着使用的是maven2。
当同时上传POM和File时,上传的pom文件中的artifactId和version需要与上传的File的名称对应,例如pom文件中的artifactId值为demo,version值为1.0,则File文件名称必须为demo-1.0,否则就会上传失败。
GAV模式
GAV,即Group ID、Artifact ID、Version,是jar包的唯一标识。GAV参数来源于手动输入,系统将自动生成传递依赖的POM文件。
GAV模式中Group ID、Artifact ID、Version三个参数手动输入并决定上传文件名称,Extension为打包类型,决定上传文件类型。
Classifier为分类,用于区分从同一POM构建出的具有不同内容的制品。该字段是可选的,支持大小写字母、数字、下划线(_)、连字符(-)和点(.),如果输入会附加到文件名后。
常见使用场景:
- 区分不同版本:如demo-1.0-jdk13.jar和demo-1.0-jdk15.jar。
- 区分不同用途:如demo-1.0-javadoc.jar和demo-1.0-sources.jar。
图2 选择GAV模式上传制品
- Extension:打包类型,默认与文件后缀保持一致。
- Group ID:项目名称,标识项目的唯一性,如org.apache.commons,仅允许字母,数字,下划线(_),连字符(-)和点(.),长度128字符以内。
- Artifact ID:组件名称,如commons-math,仅允许字母,数字,下划线(_),连字符(-)和点(.),长度128字符以内。
- Version:组件版本,例如1.0,仅允许字母,数字,下划线(_),连字符(-)和点(.),长度32字符以内。
- Classifier:分类,用于区分从同一POM构建出的具有不同内容的制品。常用值如sources、javadoc、tests、jdk,如果输入则会附加到文件名后,且填入Classifier后不再自动生成pom文件。
- 参数配置完成后,单击“上传”。
上传成功的制品显示在仓库列表中。
通过私有依赖库页面上传NPM组件
NPM组件介绍
NPM全称Node Package Manager,是一个JavaScript包管理工具,NPM组件包就是NPM管理的对象,而NPM私有依赖库就是管理和存储NPM组件包的一个私有仓库。
NPM组件包是由结构和文件描述组成:
- 包结构:是组织包中的各种文件,例如:源代码文件,资源文件等。
- 描述文件:描述包的相关信息,例如:package.json、bin、lib等文件。
包中的package.json文件是对项目或模块包的描述文件,它主要包含名称、描述、版本、作者等信息,npm install命令会根据这个文件下载所有依赖的模块。
package.json示例如下:
{
"name": "third_use", //包名
"version": "0.0.1", //版本号
"description": "this is a test project", //描述信息
"main": "index.js", //入口文件
"scripts": { //脚本命令
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [ //关键字
"show"
],
"author": "f", //开发者姓名
"license": "ISC", //许可协议
"dependencies": { //项目生产依赖
"jquery": "^3.6.0",
"mysql": "^2.18.1"
},
"devDependencies": { //项目开发依赖
"less": "^4.1.2",
"sass": "^1.45.0"
}
}
其中最重要的是name和version字段,这两个字段必须存在,否则当前包无法被安装,这两个属性一起形成了一个NPM包的唯一标识。
name是 package(包)的名称。名称的第一部分如“@scope”用作名称空间;另一部分“name”,一般通过搜索该“name”字段来安装使用需要的包。
{
"name": "@scope/name"
}
version是 package(包)的版本,一般为“x.y.z”格式。
{
"version": "1.0.0"
}
上传NPM组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标NPM仓库。
- 私有依赖库支持上传tgz格式的NPM组件包,上传时需要配置以下参数。
参数
说明
包名
请与打包时的配置文件“package.json”中“name”保持一致。
在上传组件时,PackageName需要以创建仓库时添加的路径列表中的路径开头,详细可见帮助指导中的表2。
例如:
创建NPM仓库时,添加的路径为“@test”。
上传组件到该仓库时,“PackageName”中的“@test”存在于新建仓库时的路径列表中,可以成功上传。若使用列表中不存在的路径(如“@npm”),则会上传失败。
上传成功之后,可在仓库组件列表中看到tgz格式的组件包,同时在路径“.npm”下生成对应的元数据。
Version
请与打包时的配置文件“package.json”中“version”保持一致。
文件
文件名必须以.tgz后缀结尾。
- 参数配置完成后,单击“上传”。
上传成功之后,可在仓库组件列表中看到tgz格式的组件包,同时在路径“.npm”下生成对应的元数据。
通过私有依赖库页面上传RPM组件
RPM组件介绍
- RPM 全名 RedHat Package Manager,是由Red Hat公司提出,被众多Linux发行版本所采用,是一种以数据库记录的方式来将所需要的软件安装到Linux系统的一套软件管理机制。
- 一般建议使用以下规范打包命名RPM二进制文件。
软件名称-软件的主版本号.软件的次版本号.软件的修订号-软件编译次数.软件适合的硬件平台.rpm
例如:hello-0.17.2-54.x86_64.rpm。其中,“hello”是软件名称,“0”是软件的主版本号,“17”是软件的次版本号,“2”是软件的修订号,“54”是软件编译次数,“x86_64”是软件适合的硬件平台。
|
软件名称 |
主版本号 |
次版本号 |
修订号 |
编译次数 |
适合的硬件平台 |
|---|---|---|---|---|---|
|
hello |
0 |
17 |
2 |
54 |
x86_64 |
上传RPM组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的RPM仓库。
- 单击页面右侧“上传制品”。
- 在弹框中配置相应参数,如下表所示。
参数
说明
Component
组件名称。
Version
RPM二进制包的版本。
文件
选择待上传的RPM制品文件。
图3 上传RPM制品
- 参数配置完成后,单击“上传”。
上传成功之后,可在仓库组件列表中看到RPM二进制包,同时在组件名称路径下生成对应的元数据“repodata”目录,可用于yum安装。
通过私有依赖库页面上传PyPI组件
PyPI组件介绍
建议进入工程目录(该目录下需含有配置文件setup.py)执行以下命令将待上传组件打包成wheel格式(.whl)的安装包,安装包默认生成在工程目录的dist目录下;Python软件包管理工具pip仅支持wheel格式安装包。
python setup.py sdist bdist_wheel
上传PyPI组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传制品的PyPI仓库。
- 单击页面右侧“上传制品”,配置下表所示参数。
参数
说明
包名
请与打包时的配置文件“setup.py”中“name”保持一致。
Version
请与打包时的配置文件“setup.py”中“version”保持一致。
文件
选择待上传的PyPI制品文件。
- 参数配置完成后,单击“上传”。
上传成功之后,可在仓库组件列表中看到whl格式的安装包,同时在路径“.pypi”下生成对应的元数据,可用于pip安装。
通过私有依赖库页面上传Go组件
Go组件介绍
Go(又称Golang)是Google开发的一种编程语言。GoLang1.11开始支持模块化的包管理工具,模块是Go的源代码交换和版本控制的单元,mod文件用来标识并管理一个模块,zip文件是源码包。Go模块版本主要分为v2.0及以上版本、v2.0以下版本,两类版本的模块管理规则存在差异。
上传Go组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传制品的目标Go仓库。
- 单击页面右侧“上传制品”。
- 上传Go制品分为两步:上传zip文件与上传mod文件,需要分别输入以下参数。
步骤
参数
说明
第一步:
上传zip文件
Zip Path
zip文件的完整路径。路径格式包括以下几种情况:
- v2.0以下版本:{moduleName}/@v/{version}.zip。
- v2.0以上版本:
- zip包里有go.mod且路径里以/vN结尾:{moduleName}/vX/@v/vX.X.X.zip。
- zip包里不含go.mod或go.mod第一行里不以/vN结尾:{moduleName}/@v/vX.X.X+incompatible.zip。
Zip File
zip文件的目录结构。包括以下几种情况:
- v2.0以下版本:{moduleName}@{version}。
- v2.0以上版本:
- zip包里有go.mod且路径里以/vN结尾:{moduleName}/vX@{version}。
- zip包里不含go.mod或go.mod第一行里不以/vN结尾: {moduleName}@{version}+incompatible。
第二步:
上传mod文件
Mod Path
mod文件的完整路径。路径格式包括以下几种情况:
- v2.0以下版本:{moduleName}/@v/{version}.mod。
- v2.0以上版本:
- zip包里有go.mod且路径里以/vN结尾:{moduleName}/vX/@v/vX.X.X.mod。
- zip包里不含go.mod或go.mod第一行里不以/vN结尾:{moduleName}/@v/vX.X.X+incompatible.mod。
Mod File
mod文件内容。包括以下几种情况:
- v2.0以下版本:module {moduleName}
- v2.0以上版本:
- zip包里有go.mod且路径里以/vN结尾: module {moduleName}/vX
- zip包里不含go.mod或go.mod第一行里不以/vN结尾:module {moduleName}
- 参数配置完成后,单击“上传”。
上传成功的制品显示在仓库列表中。
通过私有依赖库页面上传Debian组件
Debian组件介绍
Debian制品通常指的是通过Debian GNU/Linux发行版的包管理系统(如APT, Advanced Package Tool)发布的软件包。这些软件包包含了安装、配置和使用该软件所需的所有文件。
上传Debian组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标Debian仓库。
- 单击页面右侧“上传制品”。
- 上传Debian私有组件时,需要配置下表所示参数。
参数
参数说明
Distribution
软件包发行版本。
Component
软件包组件名称。
Architecture
软件包体系结构。
Path
软件包的存储路径,默认上传至根路径。
File
软件包的本地存储路径。

- 参数配置完成后,单击“上传”。
上传成功之后,可在仓库组件列表中看到deb格式的安装包,同时在路径“dists”下生成对应的元数据,可用于debian安装。

通过私有依赖库页面上传NuGet组件
NuGet组件介绍
NuGet 包是具有 .nupkg 扩展的单个 ZIP 文件,作为一种可共享的代码单元,开发人员可以把它发布到一个专用的服务器来共享给团队内其它成员。
制品仓库服务创建NuGet私有依赖库来托管NuGet包。
一般建议使用以下规范打包命名NuGet本地文件。
软件名称-软件的主版本号.nupkg
例如:automapper.12.0.0.nupkg
上传NuGet组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标NuGet仓库。
- 单击页面右侧“上传制品”,从本地选择待上传的NuGet文件,单击“上传”。

上传成功的组件显示在仓库列表中,如下图所示。

- metadata目录为元数据保存目录,由组件名称名称命名。元数据目录无法删除,会跟随对应组件的删除或还原进行删除或新增。
- package目录为组件保存目录。
通过私有依赖库页面上传CocoaPods组件
CocoaPods组件介绍
CocoaPods是一个为iOS和macOS项目管理第三方库的依赖管理工具。它可以帮助开发者轻松地集成和管理项目中所需的库,极大地提高了开发效率和代码的可维护性。CocoaPods制品(Pods)是通过CocoaPods包管理工具发布的第三方库。
上传CocoaPods组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标CocoaPods仓库。
- 单击“上传制品”,配置相关参数(详见下表)。
参数
说明
包名
输入制品包名称。
文件
从本地选择待上传的CocoaPods文件。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
通过私有依赖库页面上传OHPM组件
OHPM组件介绍
OHPM全称OpenHarmony Package Manager,是一个ArkTS包管理工具,OHPM组件包就是OHPM管理的对象,而OHPM私有依赖库就是管理和存储OHPM组件包的一个私有仓库。
OHPM组件包包含HAR包(Harmony Archive)和HSP包(Harmony Shared Package):
- HAR包:静态共享包,编译态复用。主要作为二方库或三方库供其他应用依赖使用;包含资源文件、*.so文件、元数据文件等。
- HSP包:动态共享包,运行时复用。主要提供共用的代码或资源,提高代码的可重用性和可维护性。
HAR包中的元数据文件oh-package.json5是对组件的描述文件,包含名称、版本、依赖等信息,ohpm install命令会自动解析oh-package.json5内的相关依赖并进行下载。
oh-package.json5示例如下:
{
"name": "@scope/demo", // 组件名
"version": "0.0.1", // 版本
"author": "artifact", // 作者
"license": "Apache-2.0", // 许可协议
"main": "index.ts", // 入口文件
"description": "basic information.", // 描述
"dependencies": { // 依赖
"@scope/demo1": "1.0.0",
"@scope/demo2": "file:./demo2.har"
},
"devDependencies": { // 开发依赖
"@scope/demo3": "1.0.0",
"@scope/demo4": "1.0.0"
},
"metadata": { // 元数据信息
"sourceRoots": ["./src/main"]
}
}
其中最重要的是name和version字段,这两个字段必须存在,否则当前包无法被安装,这两个属性一起形成了一个OHPM包的唯一标识。
name是 package(包)的名称。名称的第一部分如“@scope”用作名称空间;另一部分“name”,一般通过搜索该“name”字段来安装使用需要的包。
{
"name": "@scope/name"
}
version是 package(包)的版本,一般为“x.y.z”格式。
{
"version": "1.0.0"
}
上传OHPM组件
私有依赖库支持上传har、hsp格式的OHPM组件包,具体操作如下步骤。
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标OHPM仓库。
- 单击页面右侧“上传制品”,配置相关参数(详见下表)。
参数
说明
包名
输入制品包名称。请与打包时的元数据文件“oh-package.json5”中“name”保持一致。
PackageName需要以创建仓库时添加的路径列表中的路径开头,详细可见帮助指导中的表2。
例如:
创建OHPM仓库时,添加的路径为“@test”。
上传组件到该仓库时,“PackageName”中的“@test”存在于新建仓库时的路径列表中,可以上传成功。如果使用其他不存在于列表中的路径,如“@ohos”,则会上传失败。
Version
输入制品包版本号。请与打包时的元数据文件“oh-package.json5”中“version”保持一致。
文件
从本地选择待上传的OHPM文件。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
可在仓库组件列表中看到组件包,同时在路径“.ohpm”下生成对应的元数据。
通过私有依赖库页面上传原生-Docker组件
Docker组件介绍
Docker制品指的是通过Docker构建和发布的容器镜像。Docker镜像包含了运行应用程序所需的所有依赖项和配置,从而确保了应用在不同环境中的可移植性和一致性。
上传Docker组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标Docker仓库。
- 单击页面右侧“上传制品”,配置相关参数(详见下表)。
参数
说明
包名
输入制品包名称。
文件
从本地选择待上传的Docker文件。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
通过私有依赖库页面上传Generic组件
Generic组件介绍
Generic制品(也称为通用制品)是指在构建和发布过程中生成的任何类型的文件。
上传Generic组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标Generic仓库。
- 单击“上传制品”,配置页面信息(详见下表)。
参数
说明
上传方式
选择“单个文件上传”或“多个文件上传”,默认“单个文件上传”。
选择“多个文件上传”时,最多支持20个文件。
路径
用户设置路径名称后,仓库视图中会创建该名称的文件夹,上传的软件包会存放在该文件夹内。
文件
从本地选择待上传的Generic软件包。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
通过私有依赖库页面上传Composer组件
Composer组件介绍
- name:由vendor name和project name组成,以"/"分隔。如:monolog/monolog。
名称必须由小写字母、数字、和"_"、"."或"-"组成,正则匹配:^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$
- version:组件版本号,版本号规则为X.Y.Z或vX.Y.Z,可选择以-dev、-patch(-p)、-alpha(-a)、-beta(-b)或-RC结尾。如1.0.0、v2.0.0、3.0.0-dev。
上传Composer组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有组件的目标Composer仓库。
- 单击“上传制品”,配置页面信息(详见下表)。
参数
说明
Package Name
输入制品包名称,如:monolog/monolog。
Version
输入制品包版本,如:v2.0.0。
文件
从本地选择待上传的Composer文件。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
通过私有依赖库页面上传Helm组件
Helm组件介绍
Helm是一个开源的Kubernetes包管理器,它允许您在Kubernetes上查找、共享和使用应用程序的预配置部署。上传Helm私有制品,Helm的主要功能包括:
- 简化Kubernetes应用程序的部署和管理。
- 允许您在Kubernetes上安装、更新和卸载应用程序。
- 提供了一种简单的方式来管理应用程序的依赖关系。
- 允许您轻松地共享和重复使用应用程序的配置。
一般建议使用以下规范打包命名Helm本地文件。
软件名称-软件版本号.tgz
例如:helloworld-3.0.1.tgz
上传Helm组件
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有制品的目标Helm仓库。
- 单击“上传制品”,从本地选择待上传的Helm文件,单击“上传”。
- 上传成功的制品显示在仓库列表中,其中,index.yaml为元数据文件,*.tgz为helm软件包。如下图所示。

通过私有依赖库页面上传Conda组件
Conda组件介绍
Conda是在Windows、macOS和Linux上运行的开源软件包管理系统和环境管理系统。Conda可以安装、运行和更新软件包及其依赖项。Conda可以在本地计算机上的环境中创建,保存,加载和切换。它是为Python程序创建的,但可以打包和分发适用于任何语言的软件。
上传Conda组件
Conda仓支持 .conda压缩包及.tar.bz2格式压缩包, 支持多层级目录创建,有软件包的层级生成元数据文件,具体操作如下步骤。
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中单击待上传私有制品的目标Conda仓库。
- 单击“上传制品”,配置页面信息(详见下表)。
参数名称
说明
Path
必填项。指定Conda软件包的存储路径。请在最后一层路径中显式标识平台信息,如命名为linux-64、linux-32、win-64、win-32、osx-64、osx-arm64、linux-aarch64和noarch等。
文件
从本地选择待上传的Conda文件。
- 单击“上传”。
页面右下角进度条显示100%(上传完成)。
通过私有依赖库页面下载各类型私有组件的通用操作
- 使用华为云账号访问CodeArts Artifact的私有依赖库。
- 在左侧边栏中找到需要下载的私有组件,单击组件名称。
若仓库或组件过多,可以通过搜索私有组件找到组件。
- 单击页面右侧“下载”即可。