如果 jar 包在本地,只能每次手动导入,不太方便。可以使用以下方式搭建一个 Maven 仓库
1、使用 GitHub Pages 搭建公有仓库
jar 包本质上是一个静态文件,所以可以使用 GitHub 来存放,再利用 GitHub Pages 提供一个地址让其可直接访问下载。
jar 发布方
pom.xml 配置:
|
<distributionManagement>
是配置本地打包后的文件的路径,当运行 mvn clean package deploy
后,将发布到根路径的 maven-repo
文件夹。id 和 name 可以随便填写。
默认打包后将包含 jar 包,和 pom 文件。可以添加 2 个插件,使其可以生成 source 源文件 jar 和 javadoc 文档 jar 包。
maven-repo |
md5 为消息摘要算法,用于检验 jar 包是否被修改?将消息摘要散列生成一串字符串,下载时,再次散列一次,判断结果是否一致?
因代码里包含 Lambda 表达式,不能使用默认 Maven 1.5 的编译器,需要使用 8 或以上的编译器。maven-compiler-plugin
当 push 到 GitHub 后,给项目开启 GitHub Pages,直接访问 https://depp.wang/substruction-common/ 将打开根目录 index.html 文件
引用方
<dependency> |
除了正常引用依赖外,还需要指明依赖 jar 获取地址
<repositories> |
2、使用 GitHub Packages 搭建私有仓库
相关教程:发布 Artifact
GitHub Setting -> Developer settings -> Personal access tokens
新建 Token,至少选择 repo、write:packages、read:packages
发布方
settings.xml 配置 GitHub 账号密码(token)
|
pom.xml 配置仓库地址
<distributionManagement> |
id 需要和 settings.xml 的 id 相同。通过此 id 查找 settings.xml 的账号密码。url 所包含的 provider-client
无需在 package 中新建,但必须存在一个同名仓库,因为 Package 本质上是依赖于仓库实现的。
否则可能遇到的错误:
Failed to deploy artifacts: Could not find artifact ** in github-release (https://maven.pkg.github.com/DeppWang/provider-client) |
当发布后,更新版本再次发布时,可能遇到 409 的错误:
provider-client: Failed to deploy artifacts: Could not transfer artifact wang.depp:provider-client:jar:sources:1.0.2 from/to github-release (https://maven.pkg.github.com/DeppWang/provider-client): Failed to transfer file https://maven.pkg.github.com/DeppWang/provider-client/wang/depp/provider-client/1.0.2/provider-client-1.0.2-sources.jar with status code 409 |
此时可能已经发布成功了,可查看 package
引用方
pom.xml 配置 repository
<repositories> |
如果引用方和发布方不是一台电脑需要额外申请一个具有 repo、read:packages 的 Token?可否使用同一个 token?
3、使用 Nexus 免费版搭建私有仓库
上面这种方式依赖于项目,无法集中管理所有的 jar 包,还需要设置 settings.xml。使用 Nexus 免费版搭建私有仓库是一个更好的方式。相关教程:Installation。
当需要将自己开发的 jar 包同步到中央仓库,以供所有人下载使用时,可使用 Sonatype 来实现,相关教程:发布 Artifact