内容提要
文章介绍用 GitHub 作为 Maven 仓库发布 jar 的两种方式:一是 GitHub Packages registry,免费 500MB,但下载需 GitHub token 验证,配置 settings.xml 和 pom 的 distributionManagement 后执行 mvn deploy;二是用 GitHub 仓库,通过 site-maven-plugin 将 jar 发布到仓库分支,使用时在 pom 添加仓库地址即可,无需验证。
延伸解读
两种发布方式的核心差异
GitHub Packages registry 与 GitHub 仓库作为 Maven 仓库的主要区别在于权限验证和存储限制。前者免费空间 500MB,但下载 jar 时需要 GitHub token 验证,配置较复杂;后者通过 site-maven-plugin 将 jar 发布到仓库分支,使用时无需验证,但需注意 token 需具备 user:email 权限。选择时需权衡便利性与安全性。
使用 GitHub Packages 的注意事项
使用 GitHub Packages 发布 jar 时,需在 Maven 的 settings.xml 中配置 token 和仓库地址,并在项目 pom 的 distributionManagement 中指定发布仓库。下载时同样需要 token 验证,因此使用方也需在 settings.xml 中添加 server 配置。token 只需读取包的权限即可下载,但需妥善保管,避免泄露。
GitHub 仓库作为 Maven 仓库的配置要点
采用 GitHub 仓库方式时,需在 pom 中配置 maven-deploy-plugin 将 jar 部署到本地临时目录,再通过 site-maven-plugin 上传到 GitHub 指定分支。注意 branch 格式必须为 refs/heads/分支名,且 outputDirectory 需与 altDeploymentRepository 路径一致。使用方在 pom 中添加 raw.githubusercontent.com 的仓库地址即可,无需验证。
Q&A
用 GitHub 作为 Maven 仓库发布 jar 有哪几种方式?
文章介绍了两种方式:一是 GitHub Packages registry,免费空间 500MB,但下载时需要 GitHub token 验证;二是使用 GitHub 仓库,通过 site-maven-plugin 将 jar 发布到仓库分支,使用时在 pom 添加仓库地址即可,无需验证。
GitHub Packages registry 发布 jar 有什么优缺点?
优点是免费空间 500MB,简单方便;不足是使用时需要权限验证,且验证的是 GitHub 账户的 token,只要有一个读取包的权限即可下载 Apache Maven registry 的 jar。
使用 GitHub Packages registry 发布 jar 需要配置哪些文件?
需要配置两个文件:在 Maven 的 settings.xml 中增加 token 验证和仓库地址(包括 activeProfiles、profiles、servers);在待发布 jar 项目的 pom 中添加 distributionManagement 的发布仓库地址。配置完成后执行 mvn deploy 即可。
使用 GitHub Packages registry 发布的 jar 时,为什么还需要在 Maven 配置中添加 token?
因为下载 GitHub Packages 需要权限验证,所以在使用该 jar 的项目的 Maven 配置文件(settings.xml)中需要添加 token 信息,即在 servers 中配置 id、username 和 password(TOKEN)。
如何用 GitHub 仓库作为 Maven 仓库发布 jar?
在 Maven 配置文件 conf.xml 中增加 token 配置(token 需增加 user:email 权限);在待发布 jar 项目的 pom 中配置 maven-deploy-plugin(将 jar 发布到本地存储库位置)和 site-maven-plugin(将本地存储库位置的 jar 文件发布到 GitHub 上,配置分支、仓库名、所有者等);然后执行 mvn clean deploy 发布到 GitHub 仓库。
使用 GitHub 仓库方式发布的 jar 时,pom 中仓库地址的格式是什么?
格式是 https://raw.githubusercontent.com/[github 用户名]/[github 仓库名]/[分支名]/repository,例如 https://raw.githubusercontent.com/trumandu/maven-repository/main/repository。在 pom 的 repositories 中添加该地址,并配置 snapshots 的 enabled 和 updatePolicy 即可。