Help us learn about your current experience with the documentation. Take the survey.

构建包

使用 GitLab 包注册表来安装和构建不同格式的包。

支持以下包管理器:

Composer

  1. 创建一个名为 my-composer-package 的目录并切换到该目录:

    mkdir my-composer-package && cd my-composer-package
  2. 运行 composer init 并回答提示。

    对于命名空间,输入您唯一的 namespace,例如您的 GitLab 用户名或组名。

    会创建一个名为 composer.json 的文件:

    {
      "name": "<namespace>/composer-test",
      "description": "Library XY",
      "type": "library",
      "license": "GPL-3.0-only",
      "authors": [
        {
          "name": "John Doe",
          "email": "john@example.com"
        }
      ],
      "require": {}
    }

Conan 1

安装 Conan 1

先决条件:

  • 您必须安装 Conan 版本 1.x。

通过 conan.io 上的说明,将 Conan 包管理器下载到您的本地开发环境。

安装完成后,通过运行以下命令验证您可以在终端中使用 Conan:

conan --version

输出中会打印 Conan 版本:

Conan version 1.20.5

安装 CMake

当您使用 C++ 和 Conan 开发时,可以从许多可用的编译器中选择。本示例使用 CMake 构建系统生成器。

安装 CMake:

  • 对于 Mac,使用 Homebrew 并运行 brew install cmake
  • 对于其他操作系统,请遵循 cmake.org 上的说明。

安装完成后,通过运行以下命令验证您可以在终端中使用 CMake:

cmake --version

输出中会打印 CMake 版本。

创建项目

要测试包注册表,您需要一个 C++ 项目。如果您还没有,可以克隆 Conan 的 hello world 入门项目

构建 Conan 1 包

要构建包:

  1. 打开终端并转到项目的根文件夹。

  2. 运行 conan new 并指定包名称和版本来生成新配方:

    conan new Hello/0.1 -t
  3. 运行 conan create 并指定 Conan 用户和频道来创建配方包:

    conan create . mycompany/beta

    如果您使用 实例远程,您必须遵循特定的 命名约定

会创建一个配方为 Hello/0.1@mycompany/beta 的包。

有关创建和管理 Conan 包的更多详细信息,请参阅 Conan 文档

Conan 2

安装 Conan 2

先决条件:

  • 您必须安装 Conan 版本 2.x。基础 Conan 版本 2 已可用,未来改进可以在 epic 8258 中跟踪。

通过 conan.io 上的说明,将 Conan 包管理器安装到您的本地开发环境。

完成安装后,运行以下命令验证您可以在终端中使用 Conan:

conan --version

输出中会打印 Conan 版本:

Conan version 2.17.0

创建 Conan 2 配置文件

您必须为 Conan 2 定义配置文件。如果您已经定义了配置文件,请跳过此步骤。

要创建配置文件,运行以下命令:

conan profile detect

检查配置文件:

conan profile list

命令会在输出中列出配置文件:

Profiles found in the cache:
default

生成的配置文件通常足以开始使用。有关 Conan 配置文件的更多信息,请参阅 Conan 2 配置文件

安装 CMake

当您使用 C++ 和 Conan 开发时,可以从许多可用的编译器中选择。以下示例使用 CMake 构建系统生成器。

先决条件:

  • 安装 CMake。
    • 对于 macOS,安装 Homebrew 并运行 brew install cmake
    • 对于其他操作系统,请遵循 cmake.org 上的说明。

安装完成后,通过运行以下命令验证您可以在终端中使用 CMake:

cmake --version

输出中会打印 CMake 版本。

创建项目

先决条件:

  • 要测试包注册表,您必须有一个 C++ 项目。

转到您的本地项目文件夹,并使用 conan new 命令创建一个使用 cmake_lib 模板的 "Hello World" C++ 库示例项目:

mkdir hello && cd hello
conan new cmake_lib -d name=hello -d version=0.1

有关更高级的示例,请参阅 Conan 2 示例项目

构建 Conan 2 包

先决条件:

要构建包:

  1. 确保您在上一步中创建的 hello 文件夹中。

  2. 运行 conan create 并指定 Conan 用户和频道来创建配方包:

    conan create . --channel=beta --user=mycompany

会创建一个配方为 hello/0.1@mycompany/beta 的包。

有关创建和管理 Conan 包的更多详细信息,请参阅 创建包

Maven

安装 Maven

所需的最低版本是:

  • Java 11.0.5+
  • Maven 3.6+

遵循 maven.apache.org 上的说明,为您的本地开发环境下载并安装 Maven。安装完成后,通过运行以下命令验证您可以在终端中使用 Maven:

mvn --version

输出应类似于:

Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T20:00:29+01:00)
Maven home: /Users/<your_user>/apache-maven-3.6.1
Java version: 12.0.2, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home
Default locale: en_GB, platform encoding: UTF-8
OS name: "mac os x", version: "10.15.2", arch: "x86_64", family: "mac"

构建 Maven 包

  1. 打开您的终端并创建一个目录来存储项目。

  2. 从新目录中,运行以下 Maven 命令来初始化新包:

    mvn archetype:generate -DgroupId=com.mycompany.mydepartment -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    参数说明:

    • DgroupId: 唯一标识您的包的字符串。遵循 Maven 命名约定
    • DartifactId: JAR 的名称,附加在 DgroupId 的末尾。
    • DarchetypeArtifactId: 用于创建项目初始结构的原型。
    • DinteractiveMode: 使用批处理模式创建项目(可选)。

此消息表示项目设置成功:

...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.429 s
[INFO] Finished at: 2020-01-28T11:47:04Z
[INFO] ------------------------------------------------------------------------

在您运行命令的文件夹中,应该会显示一个新目录。目录名称应与 DartifactId 参数匹配,在本例中是 my-project

Gradle

安装 Gradle

如果您想创建新的 Gradle 项目,必须安装 Gradle。遵循 gradle.org 上的说明,为您的本地开发环境下载并安装 Gradle。

在您的终端中,通过运行以下命令验证您可以使用 Gradle:

gradle -version

要使用现有的 Gradle 项目,在项目目录中,在 Linux 上执行 gradlew,或在 Windows 上执行 gradlew.bat

输出应类似于:

------------------------------------------------------------
Gradle 6.0.1
------------------------------------------------------------

Build time:   2019-11-18 20:25:01 UTC
Revision:     fad121066a68c4701acd362daf4287a7c309a0f5

Kotlin:       1.3.50
Groovy:       2.5.8
Ant:          Apache Ant(TM) version 1.10.7 compiled on September 1 2019
JVM:          11.0.5 (Oracle Corporation 11.0.5+10)
OS:           Windows 10 10.0 amd64

创建包

  1. 打开您的终端并创建一个目录来存储项目。

  2. 从这个新目录中,运行以下命令来初始化新包:

    gradle init

    输出应为:

    Select type of project to generate:
      1: basic
      2: application
      3: library
      4: Gradle plugin
    Enter selection (default: basic) [1..4]
  3. 输入 3 创建新的库项目。输出应为:

    Select implementation language:
      1: C++
      2: Groovy
      3: Java
      4: Kotlin
      5: Scala
      6: Swift
  4. 输入 3 创建新的 Java 库项目。输出应为:

    Select build script DSL:
      1: Groovy
      2: Kotlin
    Enter selection (default: Groovy) [1..2]
  5. 输入 1 创建用 Groovy DSL 描述的新 Java 库项目,或输入 2 创建用 Kotlin DSL 描述的项目。输出应为:

    Select test framework:
      1: JUnit 4
      2: TestNG
      3: Spock
      4: JUnit Jupiter
  6. 输入 1 使用 JUnit 4 测试库初始化项目。输出应为:

    Project name (default: test):
  7. 输入项目名称或按 Enter 使用目录名作为项目名称。

sbt

安装 sbt

安装 sbt 以创建新的 sbt 项目。

为您的开发环境安装 sbt:

  1. 遵循 scala-sbt.org 上的说明。

  2. 从您的终端,验证您可以使用 sbt:

    sbt --version

输出类似于:

[warn] Project loading failed: (r)etry, (q)uit, (l)ast, or (i)gnore? (default: r)
sbt script version: 1.9.8

创建 Scala 项目

  1. 打开您的终端并创建一个目录来存储项目。

  2. 从新目录中,初始化新项目:

    sbt new scala/scala-seed.g8

    输出为:

    Minimum Scala build.
    
    name [My Something Project]: hello
    
    Template applied in ./hello
  3. 输入项目名称或按 Enter 使用目录名作为项目名称。

  4. 打开 build.sbt 文件并根据 sbt 文档 编辑它,以将您的项目发布到包注册表。

npm

安装 npm

遵循 npmjs.com 上的说明,在您的本地开发环境中安装 Node.js 和 npm。

安装完成后,通过运行以下命令验证您可以在终端中使用 npm:

npm --version

输出中会显示 npm 版本:

6.10.3

创建 npm 包

  1. 创建一个空目录。

  2. 进入目录并通过运行以下命令初始化空包:

    npm init
  3. 回答问题。确保 包名称 遵循 命名约定 并限定到注册表所在的项目或组。

Yarn

安装 Yarn

作为 npm 的替代方案,您可以通过遵循 classic.yarnpkg.com 上的说明,在您的本地环境中安装 Yarn。

安装完成后,通过运行以下命令验证您可以在终端中使用 Yarn:

yarn --version

输出中会显示 Yarn 版本:

1.19.1

创建包

  1. 创建一个空目录。

  2. 进入目录并通过运行以下命令初始化空包:

    yarn init
  3. 回答问题。确保 包名称 遵循 命名约定 并限定到注册表所在的项目或组。

会创建一个 package.json 文件。

NuGet

安装 NuGet

遵循 Microsoft 的说明安装 NuGet。如果您有 Visual Studio),NuGet 可能已经安装。

通过运行以下命令验证 NuGet CLI 是否已安装:

nuget help

输出应类似于:

NuGet Version: 5.1.0.6013
usage: NuGet <command> [args] [options]
Type 'NuGet help <command>' for help on a specific command.

Available commands:

[output truncated]

PyPI

安装 pip 和 twine

安装最新版本的 piptwine

创建项目

创建一个测试项目。

  1. 打开您的终端。

  2. 创建一个名为 MyPyPiPackage 的目录,然后进入该目录:

    mkdir MyPyPiPackage && cd MyPyPiPackage
  3. 创建另一个目录并进入它:

    mkdir mypypipackage && cd mypypipackage
  4. 在此目录中创建所需的文件:

    touch __init__.py
    touch greet.py
  5. 打开 greet.py 文件,然后添加:

    def SayHello():
        print("Hello from MyPyPiPackage")
        return
  6. 打开 __init__.py 文件,然后添加:

    from .greet import SayHello
  7. 在您的 MyPyPiPackage 目录中,启动 Python 提示符。

    python
  8. 运行以下命令:

    >>> from mypypipackage import SayHello
    >>> SayHello()

一条消息表示项目设置成功:

Python 3.8.2 (v3.8.2:7b3ab5921f, Feb 24 2020, 17:52:18)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from mypypipackage import SayHello
>>> SayHello()
Hello from MyPyPiPackage

创建 PyPI 包

创建项目后,您可以创建包。

  1. 在您的终端中,转到 MyPyPiPackage 目录。

  2. 创建一个 pyproject.toml 文件:

    touch pyproject.toml

    此文件包含有关包的所有信息。有关此文件的更多信息,请参阅 创建 pyproject.toml。 由于 GitLab 基于 Python 标准化名称 (PEP-503) 来识别包,请确保您的包名称符合这些要求。详细信息请参阅 安装部分

  3. 打开 pyproject.toml 文件,然后添加基本信息:

    [build-system]
    requires = ["setuptools>=61.0"]
    build-backend = "setuptools.build_meta"
    
    [project]
    name = "mypypipackage"
    version = "0.0.1"
    authors = [
        { name="Example Author", email="author@example.com" },
    ]
    description = "A small example package"
    requires-python = ">=3.7"
    classifiers = [
       "Programming Language :: Python :: 3",
       "Operating System :: OS Independent",
    ]
    
    [tool.setuptools.packages]
    find = {}
  4. 保存文件。

  5. 安装包构建库:

    pip install build
  6. 构建包:

    python -m build

输出应显示在新创建的 dist 文件夹中:

ls dist

输出应类似于以下内容:

mypypipackage-0.0.1-py3-none-any.whl mypypipackage-0.0.1.tar.gz

包现在已准备好发布到包注册表。