在GitHub仓库中托管私有的Maven构件

4
我正在使用以下解决方案在Github上托管私有的Maven仓库来托管Github上的私有maven仓库。
我已成功部署了Maven artifact到Github仓库的分支下。
问题是我在其他项目中使用这个artifact作为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中使用它来解决问题。
 <server>
  <id>github</id>
  <password>{personal_access_token}}</password>
</server>   

但是没有成功...基本上我已经成功在Github仓库中创建了Maven构件,可以分发,但我需要它成为私有仓库。
任何人都可以帮忙吗?您的答案将不胜感激。

1
也许使用jitpack会更容易。 - Hendrik Jander
2个回答

0

使用Maven无法完成此操作,当访问私有存储库时,raw.github.com在URL末尾需要访问令牌,但是Maven中没有选项可以提供此令牌。

备选方法

为用户提供安装脚本

您可以向用户提供一种安装程序脚本,该脚本下载依赖项并将其安装到他们的本地Maven存储库中。您可以使用以下命令在本地安装JAR包:

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

你的安装程序应该将一些命令捆绑在一起,以获得你想要的结果。

相关链接:安装第三方JAR包指南

托管自己的Maven依赖服务器

你不需要快速计算机来托管Maven项目的依赖项,我曾经使用树莓派,其中我使用了带有sendfile选项的nginx来获得良好的性能静态文档服务器,记住Maven是针对本地内容进行优化的,它只下载文件一次并在其余时间切换到本地文件。

免责声明:我与树莓派公司无关。


0

只需将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>

谢谢!


但是这并没有将mvn-repo中的文件添加到项目中。 - Mani

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接