当前位置: 首页 > 知识库问答 >
问题:

尝试使用github操作将(maven)部署到github包时出现错误代码400

伏默
2023-03-14

我正在努力使用github actions工作流将maven项目部署到github包中。首先,这里是我在Maven Deploy阶段遇到的错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project [project name]: Failed to retrieve remote metadata [groupId]:[artifactId]:1.0-SNAPSHOT/maven-metadata.xml: Could not transfer metadata [groupId]:[artifactId]:1.0-SNAPSHOT/maven-metadata.xml from/to github (https://maven.pkg.github.com/[username]/[repository]): Failed to transfer file https://maven.pkg.github.com/[username]/[repository]/[groupId as path]/[artifactId]/1.0-SNAPSHOT/maven-metadata.xml with status code 400 -> [Help 1]

(信息:我用[括号]中的一般术语取代了非必要和/或私人的具体信息)

name: Deploy SNAPSHOT (develop)

on:
  push:
    branches:
      - develop

jobs:
  build:

    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11
      - name: Maven Deploy
        env:
          GITHUB_USERNAME: x-access-token
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: mvn --settings settings.xml -B -e -Dmaven.wagon.http.pool=false clean deploy
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <activeProfiles>
        <activeProfile>github-packages</activeProfile>
    </activeProfiles>

    <profiles>
        <profile>
            <id>github-packages</id>
            <repositories>
                <repository>
                    <id>central</id>
                    <url>https://repo1.maven.org/maven2/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </repository>
                <repository>
                    <id>github</id>
                    <name>GitHub [username] Apache Maven Packages</name>
                    <url>https://maven.pkg.github.com/[username]</url>
                </repository>
            </repositories>
        </profile>
    </profiles>

    <servers>
        <server>
            <id>github</id>
            <username>${env.GITHUB_USERNAME}</username>
            <password>${env.GITHUB_TOKEN}</password>
        </server>
    </servers>
</settings>

(信息:括号中的值与前面相同)

最后,我的maven项目的父pom.xml:

<?xml version="1.0" encoding="UTF-8"?>
<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>[groupId]</groupId>
    <artifactId>[artifactId]</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>
    <modules>
        [child modules]
    </modules>

    <properties>
        <maven.compiler.source>11</maven.compiler.source>
        <maven.compiler.target>11</maven.compiler.target>
        <maven.compiler.release>11</maven.compiler.release>
    </properties>

    <dependencies>
        [my dependencies]
    </dependencies>

    <distributionManagement>
        <repository>
            <id>github</id>
            <name>GitHub [username] Apache Maven Packages</name>
            <url>https://maven.pkg.github.com/[username]/[repository]</url>
        </repository>
    </distributionManagement>


</project>

也许说GitHub存储库完全属于我也很重要,因此我应该拥有它的所有管理权限。

    null

首先,我使用这个网站作为我的参考。

我基本上坚持我在这个问题和答案中找到的所有建议。

这个问题的公认答案提供了一个核对表。我试图检查所有的要点是否对我有效,尽管我无法验证所有的内容。根据这份清单,我没有发现任何问题。

这个答案建议使用个人访问令牌而不是github_token。我试过了,但什么也改变不了。

当然,如果有人能告诉我我的案子的确切问题是什么,我会很高兴,但不需要那么具体。我试图建立最基本的管道,目前我不想做更多的事情,只是将maven快照存储库部署到github包(使用github操作)。所以,如果有人能告诉我如何正确地做这件事,那也很好。谢了!

共有1个答案

薛英卫
2023-03-14

我自己想通了,但结果很不令人满意。这里的主要问题是:

注意:GitHub包不支持Apache Maven的快照版本。确保在~/.m2/settings.xml文件中禁用SNAPHOT。

(资料来源)

因此,GitHub包似乎不支持maven快照存储库的构造,而maven快照存储库在其他方面是非常实用的。我的计划是设置一个工作流,当推开发发生时,在包注册表上部署一个新的快照。Maven快照存储库不需要部署的唯一版本号,这意味着我可以为每次推送构建一个新版本,但实际的依赖版本保持不变。然后,每个人都可以轻松地尝试我的develop分支的最新状态,只需在他们的pom文件中包含固定的快照版本。

如果有人知道如何“破解”这个snapshot问题,请告诉我。否则,这是目前为止我找到的唯一可行的解决方案。

 类似资料:
  • 我正在尝试使用Maven作为构建工具,为一个简单的Spring启动应用程序编写github操作管道。构建和验证成功,但将Jar部署到Github注册表失败,出现错误: 这是我的pom。xml 这是我创建的工作流文件: 我还尝试将服务器标记settings.xml,在maven部署阶段将其作为参数传递,但同样的错误也失败了。

  • 我想从公共repo的GitHub操作部署到GitHub包注册表。 我有一个工作流的yml文件: 我使用Leiningen构建项目并生成POM文件。然后我想使用Maven将工件部署到GitHub包注册表。 命令失败(我已将个人信息替换为): 我看到身份验证失败了。我也尝试过这一步,但效果相同: 我不想提供用户名/密码或令牌,因为这是一个公共存储库。有什么办法可以出版吗? 谢谢!

  • 我正在尝试将Maven构建JAR部署到Github包注册表。 我得到异常时,我执行命令。 我正在使用一个简单的Maven项目,我想创建一个组件JAR并存储在Github包注册表中。 构建成功了,我现在想将这个工件部署到注册表。 我在。 在中的下添加了元素。 另外,我在Maven项目的中添加了以下内容: 预期:部署成功后,构建工件将部署到Github包注册表。 实际情况:例外情况如下: 有人能帮我解

  • 在本教程中,我们将会使用 Travis CI 将 Hexo 博客部署到 GitHub Pages 上。Travis CI 对于开源 repository 是免费的,但是这意味着你的站点文件将会是公开的。如果你希望你的站点文件不被公开,请直接前往本文 [私有 Repository](#私有 Repository) 部分。 新建一个 repository。如果你希望你的站点能通过域名 <你的 GitH

  • 几天前,我为一个java库创建了一个Github包。现在我想将Github包中的依赖项添加到另一个Maven项目中,但出现以下错误: 无法传输工件io。geilehner:StoryBlokJavaSDK:pom:1.0。1从/到github(https://maven.pkg.github.com/geilix10/):为的传输失败https://maven.pkg.github.com/gei

  • 我正在尝试从Github操作将静态内容部署到AWS3。我创建了AWS id和秘密环境变量 并将其作为main.yml 但Github操作失败并出错 工作流文件无效 详细信息每个步骤都必须定义uses或run键