文档首页/ 制品仓库 CodeArts Artifact/ 用户指南/ 管理私有依赖库2.0/ 通过私有依赖库页面上传/下载私有组件
更新时间:2024-10-16 GMT+08:00

通过私有依赖库页面上传/下载私有组件

仓库管理员与开发者角色能够上传及下载私有组件,可以在“仓库权限”中设置仓库角色。

在页面上传私有组件

  1. 单击项目卡片进入项目(若没有项目,请新建项目)。
  2. 单击菜单栏制品仓库 > 私有依赖库,进入私有依赖库。
  3. 在左侧边栏中单击待上传私有组件的目标仓库。
  4. 单击页面右侧“上传制品”
  5. 在“上传制品”对话框中配置组件参数,并上传文件,单击“上传”。每种类型组件的详细配置请参考以下各节中的说明。

    • 私有依赖库通过页面上传单文件大小限制:Maven/npm/PyPI/RPM/Debian类型最大限制为100MB, NuGet最大限制为20MB。
    • 建议不要将带有明文账号密码等敏感信息的文件上传至私有依赖库。

Maven组件介绍

  • POM:POM( Project Object Model,项目对象模型 ) 是Maven工程的基本工作单元,是一个XML文件,包含了项目的基本信息,用于描述项目如何构建以及声明项目依赖等。执行构建任务时,Maven会在当前目录中查找 POM,读取 POM,获取所需的配置信息,构建产生出目标组件。
  • Maven坐标:在三维空间中使用X、Y、Z唯一标识一个点。在Maven中通过GAV标识唯一的Maven组件包,GAV是groupIdartifactIdversion的缩写。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模式。

表1 Maven组件上传模式说明

上传模式

说明

POM模式

GAV参数来自于POM文件,系统将保留组件的传递依赖关系。

GAV模式

GAV,即Group ID、Artifact ID、Version,是jar包的唯一标识。GAV参数来源于手动输入,系统将自动生成传递依赖的POM文件。

  • 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三个参数手动输入并决定上传文件名称,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模式上传制品

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组件

私有依赖库支持上传tgz格式的NPM组件包,上传时需要配置以下两个参数。

参数

说明

PackageName

请与打包时的配置文件“package.json”“name”保持一致。

Version

请与打包时的配置文件“package.json”“version”保持一致。

在上传组件时,PackageName需要以创建仓库时添加的路径列表中的路径开头,详细可见帮助指导中的“仓库配置说明”。

例如:

创建NPM仓库时,添加的路径为“@test”

上传组件到该仓库时,“PackageName”中的“@test”存在于新建仓库时的路径列表中,可以成功上传。若使用其他不存在与列表中的路径,如“@npm”,则会上传失败。

上传成功之后,可在仓库组件列表中看到tgz格式的组件包,同时在路径“.npm”下生成对应的元数据。

上传Go组件

Go(又称Golang)是Google开发的一种编程语言。GoLang1.11开始支持模块化的包管理工具,模块是Go的源代码交换和版本控制的单元,mod文件用来标识并管理一个模块,zip文件是源码包。Go模块主要分为两种:v2.0以上版本,及v2.0以下版本,二者对Go模块的管理存在差异。

上传Go组件分为两步:上传zip文件与上传mod文件,需要分别输入以下参数。

参数

说明

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 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}

上传PyPI组件

建议进入工程目录(该目录下需含有配置文件setup.py)执行以下命令将待上传组件打包成wheel格式(.whl)的安装包,安装包默认生成在工程目录的dist目录下;Python软件包管理工具pip仅支持wheel格式安装包。

python setup.py sdist bdist_wheel

上传组件时需要配置以下两个参数。

参数

说明

PackageName

请与打包时的配置文件“setup.py”“name”保持一致。

Version

请与打包时的配置文件“setup.py”“version”保持一致。

上传成功之后,可在仓库组件列表中看到whl格式的安装包,同时在路径“.pypi”下生成对应的元数据,可用于pip安装。

上传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

注:上传组件时需要配置以下两个参数。

参数

说明

Component

组件名称。

Version

RPM二进制包的版本。

  1. 进入私有依赖库,在左侧边栏中单击待上传私有组件的目标仓库。
  2. 单击页面右侧“上传制品”
  3. 在弹框中输入组件参数,并上传文件,单击“上传”

    图3 上传制品

    上传成功之后,可在仓库组件列表中看到RPM二进制包,同时在组件名称路径下生成对应的元数据“repodata”目录,可用于yum安装。

上传debian私有组件

上传debian私有组件时,需要配置以下5个参数:

参数

参数说明

Distribution

软件包发行版本。

Component

软件包组件名称。

Architecture

软件包体系结构。

Path

软件包的存储路径,默认上传至根路径。

File

软件包的本地存储路径。

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

上传NuGet私有组件

NuGet 包是具有 .nupkg 扩展的单个 ZIP 文件,作为一种可共享的代码单元,开发人员可以把它发布到一个专用的服务器来共享给团队内其它成员。

制品仓库服务创建NuGet私有依赖库来托管NuGet包。

  • 一般建议使用以下规范打包命名NuGet本地文件。

    软件名称-软件的主版本号.nupkg

    例如:automapper.12.0.0.nupkg

  1. 进入私有依赖库,在左侧边栏中单击待上传私有组件的目标NuGet仓库。
  2. 单击“上传制品”,从本地选择待上传的NuGet文件,单击“上传”

  3. 上传成功的组件显示在仓库列表中。

    metadata目录为元数据保存目录,由组件名称名称命名。元数据目录无法删除,会跟随对应组件的删除或还原进行删除或新增。

    package目录为组件保存目录。

上传原生-Docker组件

  1. 进入私有依赖库,在左侧边栏中单击待上传私有组件的目标Docker仓库。
  2. 单击“上传制品”,配置页面信息(详见下表)。

    参数

    说明

    上传方式

    默认为“单个文件上传”

    PackageName

    输入制品包名称。

    文件

    从本地选择待上传的Docker文件。

  3. 单击“上传”

    页面右下角进度条显示100%(上传完成)。

上传CocoaPods组件

  1. 进入私有依赖库,在左侧边栏中单击待上传私有组件的目标CocoaPods仓库。
  2. 单击“上传制品”,配置页面信息(详见下表)。

    参数

    说明

    上传方式

    默认为“单个文件上传”

    PackageName

    输入制品包名称。

    文件

    从本地选择待上传的CocoaPods文件。

  3. 单击“上传”

    页面右下角进度条显示100%(上传完成)。

在私有依赖库的页面下载私有组件

  1. 进入私有依赖库,在左侧边栏中找到需要下载的私有组件,单击组件名称。

    若仓库或组件过多,可以通过搜索私有组件找到组件。

  2. 单击页面右侧“下载”