如何将maven插件上传到Github包里?

问题描述 投票:3回答:1

考虑到我有一个maven插件项目,我想把它发布到Github的公共maven仓库,名为 "Github包"。我已经做了所有的事情,通过 指令 对于普通项目来说,一切都能正常工作,但对于包装为maven-plugin的maven插件项目来说,这个指令就不行了。但是对于包装为maven-plugin的maven插件项目,这个指令就不能用了。

在构建日志中,我看到了这样的内容:"[WARNING]Could not transfer metadata repo-namem-tem"。

[WARNING] Could not transfer metadata repo-namemaven-metadata.xml from to github(https:/maven.pkg.github.comuser-namerepo-name。): 传输文件失败。 https:/maven.pkg.github.comuser-namerepo-namegroup-idmaven-metadata.xml。. 返回代码是:422 , ReasonPhrase:Unprocessable Entity: 422 , ReasonPhrase:Unprocessable Entity.

好像maven部署插件需要maven-metadata.xml在group-id的根目录下,但是找不到,也没人放在那里。如何解决这个问题?

我用的是Apache Maven 3.3.9,用的是命令。

mvn clean deploy

--附加:我使用的pom文件的例子。

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

<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 my_repo Apache Maven Packages</name>
        <url>https://maven.pkg.github.com/my_nick/my_repo</url>
    </repository>
</repositories>

<version>1.0.0</version>
<groupId>x</groupId>
<artifactId>some-plugin</artifactId>
<packaging>maven-plugin</packaging>

<dependencies>
    <dependency>
        <groupId>x</groupId>
        <artifactId>my-dependency</artifactId>
        <version>1.0.0</version>
    </dependency>

    <dependency>
        <groupId>com.github.javaparser</groupId>
        <artifactId>javaparser-core</artifactId>
        <version>3.15.12</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugin-tools</groupId>
        <artifactId>maven-plugin-annotations</artifactId>
        <version>3.6.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-plugin-api</artifactId>
        <version>3.6.3</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven</groupId>
        <artifactId>maven-core</artifactId>
        <version>3.6.3</version>
    </dependency>
</dependencies>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-plugin-plugin</artifactId>
            <version>3.6.0</version>
        </plugin>
    </plugins>
</build>
</project>
java maven maven-plugin maven-deploy-plugin github-package-registry
1个回答
0
投票

如果你已经将工件上传到了GitHub Packages,那么说明你已经配置好了一切。

我想422错误的真正原因是,你试图上传相同的工件与 同版 已经上传的。如果它不是一个 快照 版本,那么版本库应该拒绝替换它,这样它才会表现正确。

当我试图重新部署已经部署的包时,也得到了同样的错误。

Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.7:deploy (default-deploy) on project MavenPluginForGithub: 
Failed to deploy artifacts: Could not transfer artifact ru.dmochalov:SampleMavenPluginForGithub:jar:1.0.3 from/to github (https://maven.pkg.github.com/dmochalov/hello-world): 
Failed to transfer file: https://maven.pkg.github.com/dmochalov/hello-world/ru/dmochalov/SampleMavenPluginForGithub/1.0.3/SampleMavenPluginForGithub-1.0.3.jar. 
Return code is: 422, ReasonPhrase: Unprocessable Entity. -> [Help 1]

如何解决?

假设你有两个选项。

  1. 增加版本 <version>1.0.0</version> 的插件从1.0.0到1.0.1。 考虑使用 1.0.1-Snapshot 版本,如果插件是不稳定的,正在开发中。GitHub允许用SNAPSHOT版本重新部署工件。所以你可以在开发时随时重新部署它。
  2. 从repo中删除该包。你只能对私有的包进行删除。贮藏室.

442 错误与 401 错误 .

我想,错误代码没有公认的规范或标准化,不同的仓库会有不同的表现。例如,Maven中央仓库的回复为 401错误 当试图替换已经部署的版本时,为什么GitHub决定使用422是一个谜。有一个 回答 在社区论坛,但没有适当的解释。


-1
投票

这里是 官方github链接 如何做到这一点。然而,由于这似乎没有什么帮助,这里有一个链接到一个 gradle论坛问题 应该能帮你解决这个问题. 祝你好运!

© www.soinside.com 2019 - 2024. All rights reserved.