在 github 存储库中托管私有 maven 工件
Posted
技术标签:
【中文标题】在 github 存储库中托管私有 maven 工件【英文标题】:Host private maven artifact in github repository 【发布时间】:2016-04-22 07:43:30 【问题描述】:我正在使用以下解决方案 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>
当我尝试安装项目时,我得到关于 artifact cannot be found 的错误,当我将 artifact github 存储库设置为公共存储库时,一切正常,所以显然这是一个身份验证问题。奇怪的是我使用相同的凭据在第一步中成功地将工件部署到同一个 github 存储库。
我还尝试通过从 github 生成访问令牌并在 settings.xml 中使用它来使用“个人访问令牌”概念,如下所示:
<server>
<id>github</id>
<password>personal_access_token</password>
</server>
但是没有成功...所以基本上我已经成功在 github 存储库中创建了 maven 工件,它可以分发,但我需要它是私有存储库。
任何人都可以提供帮助,非常感谢您的回答。
【问题讨论】:
也许使用jitpack 会更容易。 【参考方案1】:这不能单独使用 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,我使用带有 sendfile 选项的 nginx 来获得性能良好的静态文档服务器,请记住 maven 已针对本地进行了优化内容,它只下载一个文件并在剩余时间切换到其本地文件。
免责声明:我不隶属于 Raspberry PI 公司。
【讨论】:
【参考方案2】:只需修改 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>
谢谢!
【讨论】:
以上是关于在 github 存储库中托管私有 maven 工件的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter Notebook ipynb 中的图像未显示在 GitHub 私有存储库中,但相同的代码适用于公共存储库