<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # GitLab Maven Repository > 原文:[https://docs.gitlab.com/ee/user/packages/maven_repository/](https://docs.gitlab.com/ee/user/packages/maven_repository/) * [Enabling the Maven Repository](#enabling-the-maven-repository) * [Getting Started with Maven](#getting-started-with-maven) * [Installing Maven](#installing-maven) * [Creating a project](#creating-a-project) * [Getting started with Gradle](#getting-started-with-gradle) * [Installing Gradle](#installing-gradle) * [Creating a project in Gradle](#creating-a-project-in-gradle) * [Adding the GitLab Package Registry as a Maven remote](#adding-the-gitlab-package-registry-as-a-maven-remote) * [Authenticating with a personal access token](#authenticating-with-a-personal-access-token) * [Authenticating with a personal access token in Maven](#authenticating-with-a-personal-access-token-in-maven) * [Authenticating with a personal access token in Gradle](#authenticating-with-a-personal-access-token-in-gradle) * [Authenticating with a CI job token](#authenticating-with-a-ci-job-token) * [Authenticating with a CI job token in Maven](#authenticating-with-a-ci-job-token-in-maven) * [Authenticating with a CI job token in Gradle](#authenticating-with-a-ci-job-token-in-gradle) * [Authenticating with a deploy token](#authenticating-with-a-deploy-token) * [Authenticating with a deploy token in Maven](#authenticating-with-a-deploy-token-in-maven) * [Authenticating with a deploy token in Gradle](#authenticating-with-a-deploy-token-in-gradle) * [Configuring your project to use the GitLab Maven repository URL](#configuring-your-project-to-use-the-gitlab-maven-repository-url) * [Project level Maven endpoint](#project-level-maven-endpoint) * [Group level Maven endpoint](#group-level-maven-endpoint) * [Instance level Maven endpoint](#instance-level-maven-endpoint) * [Uploading packages](#uploading-packages) * [Upload using Maven](#upload-using-maven) * [Upload using Gradle](#upload-using-gradle) * [Installing a package](#installing-a-package) * [Install using Maven with `mvn install`](#install-using-maven-with-mvn-install) * [Install with `mvn dependency:get`](#install-with-mvn-dependencyget) * [Install using Gradle](#install-using-gradle) * [Removing a package](#removing-a-package) * [Creating Maven packages with GitLab CI/CD](#creating-maven-packages-with-gitlab-cicd) * [Creating Maven packages with GitLab CI/CD using Maven](#creating-maven-packages-with-gitlab-cicd-using-maven) * [Creating Maven packages with GitLab CI/CD using Gradle](#creating-maven-packages-with-gitlab-cicd-using-gradle) * [Version validation](#version-validation) * [Troubleshooting](#troubleshooting) * [Useful Maven command line options](#useful-maven-command-line-options) * [Verifying your Maven settings](#verifying-your-maven-settings) # GitLab Maven Repository[](#gitlab-maven-repository-premium "Permalink") [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/5811) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.3. 使用 GitLab [Maven](https://maven.apache.org)存儲庫,每個項目都可以有自己的空間來存儲其 Maven 工件. [![GitLab Maven Repository](https://img.kancloud.cn/9b/8c/9b8c5268bd6343546b91dbfc763cad9a_2534x1358.png)](img/maven_package_view_v12_6.png) ## Enabling the Maven Repository[](#enabling-the-maven-repository "Permalink") **注意:**僅當您的 GitLab 管理員[啟用了對 Maven 存儲庫的支持時,](../../../administration/packages/index.html)此選項才可用. 啟用"軟件包"功能后,默認情況下,Maven 存儲庫將可用于所有新項目. 要為現有項目啟用它,或者要禁用它: 1. 導航到項目的**"設置">"常規">"可見性,項目功能,權限"** . 2. 找到"軟件包"功能并啟用或禁用它. 3. 單擊**保存更改**以使更改生效. 然后,您應該能夠在左側欄中看到" **程序包和注冊表"**部分. 接下來,您必須配置您的項目以使用 GitLab Maven 存儲庫進行授權. ## Getting Started with Maven[](#getting-started-with-maven "Permalink") 本節將介紹安裝 Maven 和構建軟件包. 如果您不熟悉構建 Maven 軟件包,這是一個快速入門. 如果您已經在使用 Maven 并且了解如何構建自己的軟件包,請轉到[下一節](#adding-the-gitlab-package-registry-as-a-maven-remote) . Maven 倉庫也可以與 Gradle 一起很好地工作. 如果要設置 Gradle 項目,請繼續[使用 Gradle 入門](#getting-started-with-gradle) . ### Installing Maven[](#installing-maven "Permalink") 所需的最低版本為: * Java 11.0.5 以上 * Maven 3.6+ 按照[maven.apache.org](https://maven.apache.org/install.html)上的說明下載并安裝適用于您本地開發環境的 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" ``` ### Creating a project[](#creating-a-project "Permalink") 了解如何創建完整的 Java 項目不在本指南的范圍內,但是您可以按照以下步驟創建一個新項目,該項目可以發布到 GitLab Package Registry. 首先打開終端并創建一個目錄,您要將目錄存儲在環境中. 從目錄內部,您可以運行以下 Maven 命令來初始化新程序包: ``` mvn archetype:generate -DgroupId=com.mycompany.mydepartment -DartifactId=my-project -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false ``` 參數如下: * `DgroupId` :標識您的包裹的唯一字符串. 您應該遵循[Maven 命名約定](https://maven.apache.org/guides/mini/guide-naming-conventions.html) . * `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` ). ## Getting started with Gradle[](#getting-started-with-gradle "Permalink") 本節將介紹如何安裝 Gradle 和初始化 Java 項目. 如果您不熟悉 Gradle,這是一個快速入門. 如果您已經在使用 Gradle 并且了解如何構建自己的軟件包,請轉到[下一部分](#adding-the-gitlab-package-registry-as-a-maven-remote) . ### Installing Gradle[](#installing-gradle "Permalink") 僅當您要創建新的 Gradle 項目時才需要安裝. 按照[gradle.org](https://s0gradle0org.icopy.site/install/)上的說明為您的本地開發環境下載并安裝 Gradle. 通過運行以下命令驗證您可以在終端中使用 Gradle: ``` gradle -version ``` 如果要使用現有的 Gradle 項目,則不需要安裝. 只需在項目目錄中執行`gradlew` (在 Linux 上)或`gradlew.bat` (在 Windows 上)即可. You should see something imilar to the below printed in the output: ``` ------------------------------------------------------------ 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 ``` ### Creating a project in Gradle[](#creating-a-project-in-gradle "Permalink") 了解如何在 Gradle 中創建完整的 Java 項目不在本指南的范圍內,但是您可以按照以下步驟創建一個可以發布到 GitLab Package Registry 的新項目. 首先打開終端并創建一個目錄,您要將目錄存儲在環境中. 從目錄內部,您可以運行以下 Maven 命令來初始化新程序包: ``` gradle init ``` 輸出應為 ``` Select type of project to generate: 1: basic 2: application 3: library 4: Gradle plugin Enter selection (default: basic) [1..4] ``` 輸入`3`創建一個新的 Library 項目. 輸出應為: ``` Select implementation language: 1: C++ 2: Groovy 3: Java 4: Kotlin 5: Scala 6: Swift ``` 輸入`3`創建一個新的 Java 庫項目. 輸出應為: ``` Select build script DSL: 1: Groovy 2: Kotlin Enter selection (default: Groovy) [1..2] ``` 選擇`1`創建一個新的 Java 庫項目,該項目將在 Groovy DSL 中進行描述. 輸出應為: ``` Select test framework: 1: JUnit 4 2: TestNG 3: Spock 4: JUnit Jupiter ``` 選擇`1`以使用 JUnit 4 測試庫初始化項目. 輸出應為: ``` Project name (default: test): ``` 輸入項目名稱或按 Enter 鍵以使用目錄名稱作為項目名稱. ## Adding the GitLab Package Registry as a Maven remote[](#adding-the-gitlab-package-registry-as-a-maven-remote "Permalink") 下一步是將 GitLab 軟件包注冊表添加為 Maven 遙控器. 如果項目是私有的,或者您想將 Maven 工件上傳到 GitLab,則也需要提供憑據進行授權. 僅對[個人訪問令牌](#authenticating-with-a-personal-access-token) , [CI 作業令牌](#authenticating-with-a-ci-job-token)和[部署令牌提供支持](../../project/deploy_tokens/index.html) . 常規的用戶名/密碼憑據不起作用. ### Authenticating with a personal access token[](#authenticating-with-a-personal-access-token "Permalink") 要使用[個人訪問令牌進行](../../profile/personal_access_tokens.html)身份驗證,請在創建[令牌](../../profile/personal_access_tokens.html)時將范圍設置為`api` ,并將其添加到您的 Maven 或 Gradle 配置文件中. #### Authenticating with a personal access token in Maven[](#authenticating-with-a-personal-access-token-in-maven "Permalink") 將相應的部分添加到[`settings.xml`](https://maven.apache.org/settings.html)文件中: ``` <settings> <servers> <server> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <name>Private-Token</name> <value>REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN</value> </property> </httpHeaders> </configuration> </server> </servers> </settings> ``` #### Authenticating with a personal access token in Gradle[](#authenticating-with-a-personal-access-token-in-gradle "Permalink") 創建具有以下內容的文件`~/.gradle/gradle.properties` : ``` gitLabPrivateToken=REPLACE_WITH_YOUR_PERSONAL_ACCESS_TOKEN ``` 在您的[`build.gradle`](https://s0docs0gradle0org.icopy.site/current/userguide/tutorial_using_tasks.html)文件中添加一個存儲庫部分: ``` repositories { maven { url "https://<gitlab-url>/api/v4/groups/<group>/-/packages/maven" name "GitLab" credentials(HttpHeaderCredentials) { name = 'Private-Token' value = gitLabPrivateToken } authentication { header(HttpHeaderAuthentication) } } } ``` You should now be able to upload Maven artifacts to your project. ### Authenticating with a CI job token[](#authenticating-with-a-ci-job-token "Permalink") 如果您使用的是 GitLab CI / CD,則可以使用 CI 作業令牌代替個人訪問令牌. #### Authenticating with a CI job token in Maven[](#authenticating-with-a-ci-job-token-in-maven "Permalink") 要使用 CI 作業令牌進行身份驗證,請將相應部分添加到[`settings.xml`](https://maven.apache.org/settings.html)文件中: ``` <settings> <servers> <server> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <name>Job-Token</name> <value>${env.CI_JOB_TOKEN}</value> </property> </httpHeaders> </configuration> </server> </servers> </settings> ``` 您可以閱讀有關[如何使用 GitLab CI / CD 創建 Maven 軟件包的](#creating-maven-packages-with-gitlab-cicd)更多信息. #### Authenticating with a CI job token in Gradle[](#authenticating-with-a-ci-job-token-in-gradle "Permalink") 要使用 CI 作業令牌進行身份驗證,請在[`build.gradle`](https://s0docs0gradle0org.icopy.site/current/userguide/tutorial_using_tasks.html)文件中添加一個存儲庫部分: ``` repositories { maven { url "https://<gitlab-url>/api/v4/groups/<group>/-/packages/maven" name "GitLab" credentials(HttpHeaderCredentials) { name = 'Job-Token' value = '${CI_JOB_TOKEN}' } authentication { header(HttpHeaderAuthentication) } } } ``` ### Authenticating with a deploy token[](#authenticating-with-a-deploy-token "Permalink") [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/213566) in [GitLab Premium](https://about.gitlab.com/pricing/) 13.0. 要使用[部署令牌進行](./../../project/deploy_tokens/index.html)身份驗證,請在創建[令牌](./../../project/deploy_tokens/index.html)時將范圍設置為`api` ,然后將其添加到您的 Maven 或 Gradle 配置文件中. #### Authenticating with a deploy token in Maven[](#authenticating-with-a-deploy-token-in-maven "Permalink") 將相應的部分添加到[`settings.xml`](https://maven.apache.org/settings.html)文件中: ``` <settings> <servers> <server> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <name>Deploy-Token</name> <value>REPLACE_WITH_YOUR_DEPLOY_TOKEN</value> </property> </httpHeaders> </configuration> </server> </servers> </settings> ``` #### Authenticating with a deploy token in Gradle[](#authenticating-with-a-deploy-token-in-gradle "Permalink") 要使用部署令牌進行身份驗證,請將存儲庫部分添加到[`build.gradle`](https://s0docs0gradle0org.icopy.site/current/userguide/tutorial_using_tasks.html)文件中: ``` repositories { maven { url "https://<gitlab-url>/api/v4/groups/<group>/-/packages/maven" name "GitLab" credentials(HttpHeaderCredentials) { name = 'Deploy-Token' value = '<deploy-token>' } authentication { header(HttpHeaderAuthentication) } } } ``` ## Configuring your project to use the GitLab Maven repository URL[](#configuring-your-project-to-use-the-gitlab-maven-repository-url "Permalink") 要從 GitLab 下載和上傳軟件包,您需要在`pom.xml`文件中的" `repository` and `distributionManagement`部分. 如果您按照上面的步驟操作,則需要將以下信息添加到`my-project/pom.xml`文件中. 根據您的工作流程和所擁有的 Maven 軟件包的數量,可以通過 3 種方式配置項目以將 GitLab 端點用于 Maven 軟件包: * **項目級別** :當您有幾個不在同一 GitLab 組中的 Maven 軟件包時,此選項很有用. * **組級別** :當您在同一個 GitLab 組中有多個 Maven 軟件包時,此選項很有用. * **實例級別** :當您在不同的 GitLab 組下或它們自己的名稱空間上有許多 Maven 軟件包時很有用. **注意:**在所有情況下,都需要一個項目特定的 URL 才能在`distributionManagement`部分中上載軟件包. ### Project level Maven endpoint[](#project-level-maven-endpoint "Permalink") 下面的示例顯示了`pom.xml`的相關`repository`部分在 Maven 中的樣子: ``` <repositories> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </repository> </repositories> <distributionManagement> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </repository> <snapshotRepository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </snapshotRepository> </distributionManagement> ``` Gradle 中的相應部分如下所示: ``` repositories { maven { url "https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven" name "GitLab" } } ``` 該`id`必須與您[在`settings.xml`定義](#adding-the-gitlab-package-registry-as-a-maven-remote)的`id`相同. 將`PROJECT_ID`替換為可以在項目主頁上找到的項目 ID. 如果您具有自行管理的 GitLab 安裝, `gitlab.com`使用您的域名替換`gitlab.com` . **注意:**要檢索工件,可以使用項目的[URL 編碼](../../../api/README.html#namespaced-path-encoding)路徑(例如`group/project` )或項目的 ID(例如`42` ). 但是,只能使用項目的 ID 進行上傳. ### Group level Maven endpoint[](#group-level-maven-endpoint "Permalink") [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8798) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.7. 如果您依賴于許多軟件包,則在`repository`部分中為每個軟件包添加唯一的 URL 可能效率不高. 相反,您可以將組級別端點用于存儲在一個 GitLab 組中的所有 Maven 軟件包. 只有您有權訪問的軟件包才可以下載. 組級別端點可與任何程序包名稱一起使用,這意味著與[實例級別端點](#instance-level-maven-endpoint)相比,您具有更大的命名靈活性. 但是,GitLab 不能保證軟件包名稱在組中的唯一性. 您可以有兩個具有相同軟件包名稱和軟件包版本的項目. 因此,GitLab 將服務于較新的那個. 下面的示例顯示`pom.xml`的相關`repository`部分的外觀. 您仍需要一個特定于項目的 URL 來在`distributionManagement`部分中上傳軟件包: ``` <repositories> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/groups/GROUP_ID/-/packages/maven</url> </repository> </repositories> <distributionManagement> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </repository> <snapshotRepository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </snapshotRepository> </distributionManagement> ``` 對于 Gradle,相應的存儲庫部分如下所示: ``` repositories { maven { url "https://gitlab.com/api/v4/groups/GROUP_ID/-/packages/maven" name "GitLab" } } ``` 該`id`必須與您[在`settings.xml`定義](#adding-the-gitlab-package-registry-as-a-maven-remote)的`id`相同. 在您的項目主頁上可以找到您的組名,將`my-group`替換為您的組名,將`PROJECT_ID`替換為您的項目 ID. 如果您具有自行管理的 GitLab 安裝, `gitlab.com`使用您的域名替換`gitlab.com` . **注意:**對于檢索工件,您可以使用組的[URL 編碼](../../../api/README.html#namespaced-path-encoding)路徑(例如`group/subgroup` )或組的 ID(例如`12` ). ### Instance level Maven endpoint[](#instance-level-maven-endpoint "Permalink") [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8274) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.7. 如果您依賴于許多軟件包,則在`repository`部分中為每個軟件包添加唯一的 URL 可能效率不高. 相反,您可以對存儲在 GitLab 中的所有 maven 程序包使用實例級別端點,并且可以訪問您有權訪問的程序包. 請注意, **只有與項目路徑相同的軟件包才**通過實例級別端點公開. | Project | Package | 實例級別端點可用 | | --- | --- | --- | | `foo/bar` | `foo/bar/1.0-SNAPSHOT` | Yes | | `gitlab-org/gitlab` | `foo/bar/1.0-SNAPSHOT` | No | | `gitlab-org/gitlab` | `gitlab-org/gitlab/1.0-SNAPSHOT` | Yes | 下面的示例顯示`pom.xml`的相關`repository`部分的外觀. 您仍需要一個特定于項目的 URL 來在`distributionManagement`部分中上傳軟件包: ``` <repositories> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/packages/maven</url> </repository> </repositories> <distributionManagement> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </repository> <snapshotRepository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven</url> </snapshotRepository> </distributionManagement> ``` Gradle 中相應的存儲庫部分如下所示: ``` repositories { maven { url "https://gitlab.com/api/v4/packages/maven" name "GitLab" } } ``` 該`id`必須與您[在`settings.xml`定義](#adding-the-gitlab-package-registry-as-a-maven-remote)的`id`相同. 將`PROJECT_ID`替換為可以在項目主頁上找到的項目 ID. 如果您具有自行管理的 GitLab 安裝, `gitlab.com`使用您的域名替換`gitlab.com` . **Note:** For retrieving artifacts, you can use either the [URL encoded](../../../api/README.html#namespaced-path-encoding) path of the project (e.g., `group%2Fproject`) or the project’s ID (e.g., `42`). However, only the project’s ID can be used for uploading. ## Uploading packages[](#uploading-packages "Permalink") 一旦設置了[遠程和身份驗證](#adding-the-gitlab-package-registry-as-a-maven-remote)并[配置了項目](#configuring-your-project-to-use-the-gitlab-maven-repository-url) ,請測試以從[您的項目](#configuring-your-project-to-use-the-gitlab-maven-repository-url)中上傳 Maven 工件. ### Upload using Maven[](#upload-using-maven "Permalink") ``` mvn deploy ``` 如果部署成功,您應該再次看到構建成功消息: ``` ... [INFO] BUILD SUCCESS ... ``` 您還應該看到上傳已上傳到正確的注冊表: ``` Uploading to gitlab-maven: https://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven/com/mycompany/mydepartment/my-project/1.0-SNAPSHOT/my-project-1.0-20200128.120857-1.jar ``` ### Upload using Gradle[](#upload-using-gradle "Permalink") 將 Gradle 插件[`maven-publish`](https://s0docs0gradle0org.icopy.site/current/userguide/publishing_maven.html)添加到插件部分: ``` plugins { id 'java' id 'maven-publish' } ``` 添加`publishing`部分: ``` publishing { publications { library(MavenPublication) { from components.java } } repositories { maven { url "https://gitlab.com/api/v4/projects/<PROJECT_ID>/packages/maven" credentials(HttpHeaderCredentials) { name = "Private-Token" value = gitLabPrivateToken // the variable resides in ~/.gradle/gradle.properties } authentication { header(HttpHeaderAuthentication) } } } } ``` 將`PROJECT_ID`替換為可以在項目主頁上找到的項目 ID. 運行發布任務: ``` gradle publish ``` 然后,您可以導航到項目的**Packages&Registries**頁面,并查看上載的工件,甚至刪除它們. ## Installing a package[](#installing-a-package "Permalink") 從 GitLab 程序包注冊表安裝程序包要求您如上所述設置[遠程和身份驗證](#adding-the-gitlab-package-registry-as-a-maven-remote) . 一旦完成,就有兩種安裝軟件包的方法. ### Install using Maven with `mvn install`[](#install-using-maven-with-mvn-install "Permalink") 手動將依賴項添加到您的項目`pom.xml`文件中. 要添加上面創建的示例,XML 如下所示: ``` <dependency> <groupId>com.mycompany.mydepartment</groupId> <artifactId>my-project</artifactId> <version>1.0-SNAPSHOT</version> </dependency> ``` 然后,在您的項目中,運行以下命令: ``` mvn install ``` 如果一切設置正確,您應該會看到從 GitLab 軟件包注冊表下載的依賴項: ``` Downloading from gitlab-maven: http://gitlab.com/api/v4/projects/PROJECT_ID/packages/maven/com/mycompany/mydepartment/my-project/1.0-SNAPSHOT/my-project-1.0-20200128.120857-1.pom ``` #### Install with `mvn dependency:get`[](#install-with-mvn-dependencyget "Permalink") 安裝軟件包的第二種方法是直接使用 Maven 命令. 在您的項目目錄中,運行: ``` mvn dependency:get -Dartifact=com.nickkipling.app:nick-test-app:1.1-SNAPSHOT ``` 您應該看到相同的下載消息,確認從 GitLab 軟件包注冊表中檢索了該項目. **提示:** XML 塊和 Maven 命令都可以從"軟件包詳細信息"頁面中方便地復制和粘貼,從而可以快速簡便地進行安裝. ### Install using Gradle[](#install-using-gradle "Permalink") 添加[依賴](https://s0docs0gradle0org.icopy.site/current/userguide/declaring_dependencies.html)于依賴部分的 build.gradle: ``` dependencies { implementation 'com.mycompany.mydepartment:my-project:1.0-SNAPSHOT' } ``` ## Removing a package[](#removing-a-package "Permalink") 在項目頁面的軟件包視圖中,您可以通過單擊紅色垃圾圖標或單擊軟件包詳細信息頁面上的**刪除**按鈕來**刪除**軟件包. ## Creating Maven packages with GitLab CI/CD[](#creating-maven-packages-with-gitlab-cicd "Permalink") 一旦您的存儲庫配置為使用 GitLab Maven 存儲庫,就可以配置 GitLab CI / CD 來自動構建新軟件包. ### Creating Maven packages with GitLab CI/CD using Maven[](#creating-maven-packages-with-gitlab-cicd-using-maven "Permalink") 下面的示例顯示了每次更新`master`分支時如何創建新程序包: 1. 創建一個`ci_settings.xml`文件,它將用作 Maven 的`settings.xml`文件. 添加與您在`pom.xml`文件中定義的 ID 相同的服務器部分. 例如,在我們的例子中是`gitlab-maven` : ``` <settings xmlns="http://maven.apache.org/SETTINGS/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"> <servers> <server> <id>gitlab-maven</id> <configuration> <httpHeaders> <property> <name>Job-Token</name> <value>${env.CI_JOB_TOKEN}</value> </property> </httpHeaders> </configuration> </server> </servers> </settings> ``` 2. 確保您的`pom.xml`文件包含以下內容: ``` <repositories> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url> </repository> </repositories> <distributionManagement> <repository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url> </repository> <snapshotRepository> <id>gitlab-maven</id> <url>https://gitlab.com/api/v4/projects/${env.CI_PROJECT_ID}/packages/maven</url> </snapshotRepository> </distributionManagement> ``` **提示:**您可以讓 Maven 利用 CI 環境變量,也可以硬編碼項目的 ID. 3. 將`deploy`作業添加到您的`.gitlab-ci.yml`文件中: ``` deploy: image: maven:3.3.9-jdk-8 script: - 'mvn deploy -s ci_settings.xml' only: - master ``` 4. 將這些文件推送到您的存儲庫. 下次運行`deploy`作業時,它將`ci_settings.xml`復制到用戶的本地位置(在這種情況下,用戶是`root`用戶,因為它在 Docker 容器中運行),并且 Maven 將利用配置的 CI [環境變量](../../../ci/variables/README.html#predefined-environment-variables) . ### Creating Maven packages with GitLab CI/CD using Gradle[](#creating-maven-packages-with-gitlab-cicd-using-gradle "Permalink") 下面的示例顯示了每次更新`master`分支時如何創建新程序包: 1. 確保按照["使用 Gradle 中的 CI 作業令牌進行身份](#authenticating-with-a-ci-job-token-in-gradle)驗證"中所述使用 Job-Token 身份[驗證](#authenticating-with-a-ci-job-token-in-gradle) . 2. 將`deploy`作業添加到您的`.gitlab-ci.yml`文件中: ``` deploy: image: gradle:latest script: - 'gradle publish' only: - master ``` 3. 將這些文件推送到您的存儲庫. 下次運行`deploy`作業時,它將`ci_settings.xml`復制到用戶的本地位置(在這種情況下,用戶是`root`用戶,因為它在 Docker 容器中運行),并且 Maven 將使用配置的 CI [環境變量](../../../ci/variables/README.html#predefined-environment-variables) . ### Version validation[](#version-validation "Permalink") 使用以下正則表達式驗證版本字符串. ``` \A(\.?[\w\+-]+\.?)+\z ``` 您可以使用正則表達式,并在[此正則表達式編輯器](https://rubular.com/r/rrLQqUXjfKEoL6)上嘗試使用版本字符串. ## Troubleshooting[](#troubleshooting "Permalink") ### Useful Maven command line options[](#useful-maven-command-line-options "Permalink") 有一些[Maven 命令行選項](https://maven.apache.org/ref/current/maven-embedder/cli.html)在使用 GitLab CI / CD 執行任務時可能有用. * 文件傳輸進度會使 CI 日志難以閱讀. 選項`-ntp,--no-transfer-progress`已在[3.6.1](https://maven.apache.org/docs/3.6.1/release-notes.html#User_visible_Changes)中添加. 或者,查看`-B,--batch-mode` [或較低級別的日志記錄更改.](https://stackoverflow.com/questions/21638697/disable-maven-download-progress-indication) * 指定在哪里可以找到 POM 文件( `-f,--file` ): ``` package: script: - 'mvn --no-transfer-progress -f helloworld/pom.xml package' ``` * 指定在哪里可以找到用戶設置( `-s,--settings` ),而不是[默認位置](https://maven.apache.org/settings.html) . 還有一個`-gs,--global-settings`選項: ``` package: script: - 'mvn -s settings/ci.xml package' ``` ### Verifying your Maven settings[](#verifying-your-maven-settings "Permalink") 如果您在 CI 中遇到與`settings.xml`文件有關的問題,則添加其他腳本任務或作業以[驗證有效設置](https://maven.apache.org/plugins/maven-help-plugin/effective-settings-mojo.html)可能會很有用. 幫助插件還可以提供[系統屬性](https://maven.apache.org/plugins/maven-help-plugin/system-mojo.html) ,包括環境變量: ``` mvn-settings: script: - 'mvn help:effective-settings' package: script: - 'mvn help:system' - 'mvn package' ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看