1

我会尽量简短

我的问题是 Cloud Build 没有在应该的地方寻找我的项目的父级。我解释了我安装的内容:

一方面,我在 Artifact Registry 中上传了一个“POM”类型的 Maven 项目。该项目已成功上传,因为我已经能够将其用作当前项目中的依赖项

在此处输入图像描述 在此处输入图像描述

另一方面,我有一个带有 Spring Boot 的 Maven 项目,它使用上传到 Artifact Registry 的项目作为父项目

<parent>
    <groupId>blorks.corp</groupId>
    <artifactId>pom-repo</artifactId>
    <version>1.0</version>
</parent>

问题是,虽然如果我在我的 PC 上启动我的项目,我可以使用依赖项,但是当我尝试使用 Cloud Build 部署它时,它无法找到依赖项

当我在我的 PC 上构建我的应用程序时,我可以在控制台中看到正在从 Artifact Repository 下载父级

在此处输入图像描述

但是当我尝试使用 Cloud Build 部署应用程序时,它不是在 Artifact Repository 中查找依赖项,而是在 Maven 中央存储库中查找它

我将项目代码上传到 Bitbucket,Cloud Build 尝试构建我的 bitbucket 存储库的“主”分支

在此处输入图像描述

为了提供更多信息,我放置了我尝试部署的项目的 POM 文件

<parent>
    <groupId>blorks.corp</groupId>
    <artifactId>pom-repo</artifactId>
    <version>1.0</version>
</parent>

<dependencies>
    <dependency>
        <groupId>com.google.cloud.artifactregistry</groupId>
        <artifactId>artifactregistry-maven-wagon</artifactId>
        <version>2.1.4</version>
    </dependency>

</dependencies>

<distributionManagement>
    <snapshotRepository>
        <id>artifact-registry</id>
        <url>artifactregistry://europe-west1-maven.pkg.dev/blorks-corp-gaming-wow/pom-repo</url>
    </snapshotRepository>
    <repository>
        <id>artifact-registry</id>
        <url>artifactregistry://europe-west1-maven.pkg.dev/blorks-corp-gaming-wow/pom-repo</url>
    </repository>
</distributionManagement>

<repositories>
    <repository>
        <id>artifact-registry</id>
        <url>artifactregistry://europe-west1-maven.pkg.dev/blorks-corp-gaming-wow/pom-repo</url>
        <releases>
            <enabled>true</enabled>
        </releases>
        <snapshots>
            <enabled>true</enabled>
        </snapshots>
    </repository>     
</repositories>

<build>
    <extensions>
        <extension>
            <groupId>com.google.cloud.artifactregistry</groupId>
            <artifactId>artifactregistry-maven-wagon</artifactId>
            <version>2.1.4</version>
        </extension>
    </extensions>
</build>

我有点失落。我不知道错误可能来自哪里...... Maven?云构建?工件注册表?

4

1 回答 1

1

要将包添加到存储库,请使用mvn deploymvn release

Artifact Registry Wagon 提供程序必须包含在核心扩展文件中,才能正确部署引用父级的 Maven 项目,如身份验证要求中所示。

要上传在 Maven 之外创建的资产,请使用mvn deploy:deploy-file.

例如,此示例命令将 example/external.jar 及其项目文件 example/pom.xml 部署到 us-central1-maven.pkg.dev/my-project/my-repo 存储库。

mvn deploy:deploy-file \
-Durl=artifactregistry://us-central1-maven.pkg.dev/my-project/my-repo \
-DpomFile=example/pom.xml -Dfile=example/external.jar

使用第三方应用程序连接到存储库时,您必须首先使用 Artifact Registry 进行身份验证。

如果您的项目需要解决这些依赖关系,您必须使用核心扩展技术来确保 Maven 可以识别父 POM 文件和插件。

使用以下信息在您的项目中创建文件 `$maven.projectBasedir/.mvn/extensions.xml̀。wagon 由 extension> 元素定义。

 <extensions xmlns="http://maven.apache.org/EXTENSIONS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/EXTENSIONS/1.0.0 http://maven.apache.org/xsd/core-extensions-1.0.0.xsd">
   <extension>
     <groupId>com.google.cloud.artifactregistry</groupId>
     <artifactId>artifactregistry-maven-wagon</artifactId>
     <version>2.1.4</version>
   </extension>
 </extensions>

Maven 现在可以使用 Artifact Registry 来解析父级或插件依赖项。

于 2022-02-18T16:56:07.353 回答