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

时间:2016-01-16 22:06:01

标签: java maven github private

我使用以下解决方案Hosting a Maven repository on github在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工件,可以分发但我需要它作为私有存储库。

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

2 个答案:

答案 0 :(得分:0)

单独使用maven无法做到这一点,raw.github.com在访问私有存储库时需要在URL末尾有访问令牌,但maven中没有选项可以提供此令牌。

替代方式

向用户提供安装脚本

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

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

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

相关:Guide to installing 3rd party JARs

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

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

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

答案 1 :(得分: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>

谢谢!