繁体   English   中英

在github存储库中托管私有maven工件

[英]Host private maven artifact in github repository

我正在使用以下解决方案在github上托管Maven存储库以在github上托管私有maven存储库

我已设法将maven工件部署到mvn-repo分支下的github存储库。

问题是我很难将这个工件用作其他项目中的maven依赖项。 我在依赖的pom.xml中添加了存储库设置

  <repository>
        <id>github</id>
        <name>{name}</name>
        <url>https://raw.github.com/{repo-owner}/{repo-name}/mvn-repo/</url>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>fail</checksumPolicy>
        </releases>
        <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
        </snapshots>
    </repository>

我已经配置了settings.xml文件

<server>
   <id>github</id>
  <username>{github-user-name}</username>
  <password>{github-user-password}</password>
</server>

当我尝试安装项目时,我无法找到工件上的错误,当我将工件github存储库设置为公共存储库时,一切都很好,所以很明显这是一个身份验证问题。 奇怪的是我使用相同的凭据,以便在第一步中将工件部署到同一个github存储库并成功。

我还试图通过从github生成访问令牌并在settings.xml中使用它来使用“Personal access tokens”概念,如下所示:

 <server>
  <id>github</id>
  <password>{personal_access_token}}</password>
</server>   

但是没有成功......所以基本上我已经成功了一半,我已经设法在github存储库中创建maven工件,可以分发但我需要它是私有存储库。

任何人都可以提供帮助,我们非常感谢您的回答。

这不能单独使用maven来完成,raw.github.com在访问私有存储库时期望在URL的末尾有一个访问令牌,但maven中没有提供此令牌的选项。

替代方式

为用户提供安装脚本

您可以为用户提供一种安装程序脚本,该脚本可下载依赖项并将其安装到本地maven存储库。 您可以使用以下方式在本地安装jar:

mvn install:install-file -Dfile=<path-to-file> -DpomFile=<path-to-pomfile>

您的安装人员应该将这些命令中的一些捆绑在一起以获得您想要的内容。

相关: 安装第三方JAR的指南

托管您自己的maven依赖服务器

你不需要快速的计算机来托管maven项目的依赖项,过去我有一个Raspberry PI,我使用nginx和sendfile选项来获得性能良好的静态文档服务器,请记住maven是针对本地内容优化的,它只下载一个文件并在剩余时间内切换到其本地文件。

免责声明:我不隶属于Raspberry PI公司。

它通过简单地修改github存储库url格式就像魅力一样,如下所示:

 <repository>
    <id>github</id>
    <name>{name}</name>
    <url>https://github.com/{repo-owner}/{repo-name}/raw/mvn-repo/</url>
    <releases>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>fail</checksumPolicy>
    </releases>
    <snapshots>
        <enabled>true</enabled>
        <updatePolicy>always</updatePolicy>
        <checksumPolicy>warn</checksumPolicy>
    </snapshots>
</repository>

谢谢!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM