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

如何使用github操作将工件(Maven)部署到Github包

蒋弘致
2023-03-14

我正在尝试使用Maven作为构建工具,为一个简单的Spring启动应用程序编写github操作管道。构建和验证成功,但将Jar部署到Github注册表失败,出现错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy (default-deploy) on project space-management-system: Failed to deploy artifacts/metadata: Cannot access registry=https://maven.pkg.github.com/Pranav3105/osmosis with type default using the available connector factories: BasicRepositoryConnectorFactory: Cannot access registry=https://maven.pkg.github.com/Pranav3105/osmosis using the registered transporter factories: WagonTransporterFactory: java.util.NoSuchElementException
[ERROR]       role: org.apache.maven.wagon.Wagon
[ERROR]   roleHint: registry=https

这是我的pom。xml

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

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.2.1.RELEASE</version>
    </parent>
    <groupId>com.mindtree</groupId>
    <artifactId>space-management-system</artifactId>
    <version>0.0.1</version>
    <packaging>jar</packaging>

    <name>space-management-system</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
    </properties>

    <dependencies>
       .........
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
        <finalName>${project.artifactId}-${project.version}</finalName>
    </build>
    <profiles>
        <profile>
            <id>sonar</id>
            <properties>
                ...sonar properties.....
            </properties>
            <activation>
                <activeByDefault>false</activeByDefault>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonarsource.scanner.maven</groupId>
                        <artifactId>sonar-maven-plugin</artifactId>
                        <version>3.7.0.1746</version>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sonar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

    <distributionManagement>

        <repository>
            <id>github</id>
            <name>pranav3105</name>
            <url>registry=https://maven.pkg.github.com/Pranav3105/osmosis</url>
        </repository>
    </distributionManagement>
</project>

这是我创建的工作流文件:

name: Master Branch

on:
  push:
    branches:
      - 'master'

jobs:

  test:
    name: Test - Units & Integrations
    runs-on: ubuntu-18.04

    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11.0.4
      - name: Maven Package
        run: mvn -B clean package -DskipTests
      - name: Maven Verify
        run: mvn -B clean verify -DskipTests

  sonar:
    name: Test - SonarCloud Scan
    runs-on: ubuntu-18.04

    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11.0.4
      - name: SonarCloud Scan
        run: mvn -B clean verify -DskipTests -Psonar -Dsonar.login=${{ secrets.SONAR_TOKEN }}
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

  artifact:
    name: Publish - GitHub Packages
    runs-on: ubuntu-18.04
    needs: [test, sonar]
    steps:
      - uses: actions/checkout@v1
      - name: Set up JDK 11
        uses: actions/setup-java@v1
        with:
          java-version: 11.0.4
      - name: Publish artifact on GitHub Packages
        run: mvn -B -e -X clean deploy -DskipTests
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

我还尝试将服务器标记settings.xml,在maven部署阶段将其作为参数传递,但同样的错误也失败了。

共有1个答案

后学
2023-03-14

我认为您应该从distributionManagement的开始删除“registry=”

<distributionManagement>
   <repository>
     <id>github</id>
     <name>pranav3105</name>
     <url>https://maven.pkg.github.com/Pranav3105/osmosis</url>
   </repository>
</distributionManagement>

看看这个回购协议,这是一个很好的例子。

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

  • 我正在努力使用github actions工作流将maven项目部署到github包中。首先,这里是我在阶段遇到的错误: (信息:我用[括号]中的一般术语取代了非必要和/或私人的具体信息) (信息:括号中的值与前面相同) 最后,我的maven项目的父pom.xml: 也许说GitHub存储库完全属于我也很重要,因此我应该拥有它的所有管理权限。 null 首先,我使用这个网站作为我的参考。 我基本上

  • 我有一个Github repo项目,使用Github操作和一个docker文件来构建SpringBoot Java项目 我想从Github repo下载来自Github repo的定制工件包,并能够将工件上传到其中。 所以我按照配置Apache Maven用于GitHub包的链接,将该部分添加到settings.xml文件中: 为了从dockerfile构建中发布包,我在pom.xml中添加了以下

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

  • 我的用例是,我希望每个构建/运行的工件都有一个唯一的版本号。对于CircleCI、Travis等当前工具,有一个可用的构建编号,它基本上是一个不断上升的计数器。因此,我可以创建版本字符串,如0.1.0-27。即使对于相同的提交,此计数器也会每次增加。 如何使用GitHub Actions做类似的事情?Github操作只提供GITHUB_SHA和GITHUB_REF。

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