Maven发布/部署到github软件包

时间:2020-11-03 07:35:25

标签: git maven github maven-release-plugin maven-deploy-plugin

我正在尝试将我的javadocs发布到gh-pages,并将maven存储库发布到github maven存储库。该站点似乎可以正常部署,但是发行插件失败了。似乎找不到我配置的github凭证。这是Maven插件之一中的错误,还是我以某种方式未能指定正确的凭据?

pom.xml:

<scm>
    <url>https://github.com/${repo.user}/${repo.name}</url>
    <connection>scm:git:ssh://git@github.com/${repo.user}/${repo.name}.git</connection>
    <developerConnection>scm:git:ssh://git@github.com/${repo.user}/${repo.name}.git</developerConnection>
    <tag>HEAD</tag>
</scm>
<distributionManagement>
    <repository>
        <id>github</id>
        <name>GitHub</name>
        <url>https://maven.pkg.github.com/${repo.user}/${repo.name}</url>
    </repository>
    <site>
        <id>gh-pages</id>
        <name>Github</name>
        <url>scm:git:ssh://git@github.com/${repo.user}/${repo.name}.git</url>
    </site>
</distributionManagement>

settings.xml:

<settings>
    <servers>
        <server>
            <id>github</id>
            <username>${env.GITHUB_API_USERNAME}</username>
            <password>${env.GITHUB_API_KEY}</password>
        </server>
        <server>
            <id>gh-pages</id>
            <username>git</username>
            <configuration>
                <scmVersionType>branch</scmVersionType>
                <scmVersion>gh-pages</scmVersion>
            </configuration>
        </server>
    </servers>
</settings>

〜/ .ssh / config:

Host *
    Hostname github.com
    User git
    IdentityFile ~/.ssh/git_ecdsa

输出,MVN发布:准备:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:3.0.0-M1:prepare (default-cli) on project ia: Unable to tag SCM
[ERROR] Provider message:
[ERROR] The git-push command failed.
[ERROR] Command output:
[ERROR] Pseudo-terminal will not be allocated because stdin is not a terminal.
[ERROR] Warning: Permanently added the RSA host key for IP address '140.82.112.4' to the list of known hosts.
[ERROR] <my username>:********@github.com: Permission denied (publickey).
[ERROR] fatal: Could not read from remote repository.
[ERROR] 
[ERROR] Please make sure you have the correct access rights
[ERROR] and the repository exists.
[ERROR] 
[ERROR] -> [Help 1]

编辑: 将settings.xml更改为使用'git'用户名会导致此错误:

[WARNING] Could not transfer metadata com.<user>:<repo>:<version>-SNAPSHOT/maven-metadata.xml from/to github (https://maven.pkg.github.com/<User>/<Repo>): Authentication failed for https://maven.pkg.github.com/<User>/<Repo>/com/<user>/<repo>/<version>-SNAPSHOT/maven-metadata.xml 401 Unauthorized
...
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:3.0.0-M1:deploy (default-deploy)

编辑: 如果有帮助,请在此处访问公司母公司POM(我目前在其中工作): https://github.com/InnovAnon-Inc/IA

和一个“简单”子项目在这里: https://github.com/InnovAnon-Inc/SimpleJavaPrograms

父级POM应该是一个相当简单且通用的类...希望那里没有什么奇怪的事情。

该子项目很奇怪:一个开发人员是初学者,使用的是玩具IDE。我希望该项目和测试能够在该IDE中运行,因此它使用“简单”目录结构,而不是标准目录结构。此外,我希望能够通过运行单元测试,创建易于使用的工件以及部署文档和工件的dev ops管道来运行该项目。这样,初学者不必学习任何课外主题,例如构建系统,即可从测试驱动的开发策略中受益。协作也将更加简单,因为我将能够查看测试结果,堆栈跟踪和当前源代码。

编辑: 任何将这些FOSS工件部署到免费存储库中的解决方案,我都会感到满意,因此它们可用于Maven。

最终,我想部署三件事:

  1. 将站点/ javadocs转换为gh-pages
  2. Maven存储库中的正常Maven工件
  3. (可能是可执行的)jar-with-depends到github版本/下载

第二个部署目标处理正常的企业级用例:客户端代码使用maven构建,并仅声明依赖项。

第三个部署目标处理简单的初学者级用例:用户手动下载jar-with-dependencies。

对于应用程序,它们被打包为带有适当清单的可执行jar,以便java -jar <artifact>.jar起作用。

对于库来说,它们只是jar-with-dependencies,因此初学者不必学习手动管理依赖项。

1 个答案:

答案 0 :(得分:0)

只要您看到<my username>:********@github.com而不是git:********@github.com,您的SSH密钥将无法在GitHub上对您进行身份验证。

GitHub SSH URL将始终使用远程用户“ git”,而不使用“ <my username>”。
检查发布的Manven插件是否正在使用用户名服务器设置,这将解释您为什么看到用户名。