网站制作选哪家公司,中国建设人才网信息网站,大荔县住房和城市建设局网站,网站死链存在的问题maven的中央存储库您需要使您的Java库可公开访问吗#xff1f; 您的项目托管在GitHub上吗#xff1f; 您是否喜欢“将所有功能都部署到Maven Central Repository”按钮的想法#xff1f; 我将展示如何使用maven-release-plugin进行设置 。 源代码托管在GitHub上#xff0c;… maven的中央存储库 您需要使您的Java库可公开访问吗 您的项目托管在GitHub上吗 您是否喜欢“将所有功能都部署到Maven Central Repository”按钮的想法 我将展示如何使用maven-release-plugin进行设置 。 源代码托管在GitHub上因此还将描述对源代码控制的SSH访问。 为项目设置环境需要采取各种步骤。 我遵循了SonaType官方指南中的许多步骤因此在需要时会参考它。 但是本指南还介绍了配置“部署到Maven Central存储库”按钮不需要的许多技术。 考虑 我的第一种方法是创建代表“部署到Maven Central”按钮的Jenkins作业。 对于我来说这个想法比从我的开发机器推动来的要干净得多。 我几乎没有尝试过但是当maven-release-plugin将版本更新推送到GitHub时无法使Jenkins SSH Agent插件注册我的SSH身份。 因此非常简单的Linux Bash脚本涉及两个步骤。 1.创建SonaType JIRA票证以注册您的groupId SonaType驱动最大的Nexus存储库之一。 必须先在此处部署Java工件然后才能将其同步到Maven Central存储库。 为了将Java库发布到SonaType Nexus存储库中需要JIRA票证。 SonaType指南包含有关如何创建它的详细说明。 选择反映您的顶级域的Maven groupId。 它通常与Java主程序包相同例如com.google 而不是com.google.guava 。 这是因为您不想为您的域/主包/ groupId下的每个项目/库创建JIRA票证。 这里是有关Java包命名约定的更多信息。 2.从SonaType OSS pom.xml继承您的Maven工件 SonaType父POM包含 SonaType Nexus存储库的URL Maven插件的配置 Enforcer插件 parentgroupIdorg.sonatype.oss/groupIdartifactIdoss-parent/artifactIdversion9/version
/parent 该父POM的存在很方便因为否则您将需要在POM中指定所有插件。 唯一的问题是插件版本已经过时因此我决定以这种方式覆盖POM中的某些版本 pluginManagementpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-gpg-plugin/artifactIdversion1.5/version/pluginplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-release-plugin/artifactIdversion2.4.2/version/plugin/plugins
/pluginManagement 关键版本更新是GPG插件之一因为更新版本具有有关GPG签名一节所述的便捷功能。 3.配置Maven工件的GPG签名 由于Maven Central存储库的安全策略因此需要这样做。 包括各个子步骤 安装GnuPG工具 生成密钥对 分配您的公钥 在settings.xml 您的本地存储库配置中设置工件的签名。 profilesprofileidsonatype-oss-release/idpropertiesgpg.keynameF21879F3/gpg.keynamegpg.passphrase*********/gpg.passphrasegpg.defaultKeyringfalse/gpg.defaultKeyringgpg.useagenttrue/gpg.useagentgpg.lockModenever/gpg.lockModegpg.homedir/home/lkrnac/.gnupg/gpg.homedirgpg.publicKeyring/home/lkrnac/.gnupg/pubring.gpg/gpg.publicKeyringgpg.secretKeyring/home/lkrnac/.gnupg/secring.gpg/gpg.secretKeyring/properties/profile
/profiles F21879F3是我的公共GPG密钥ID。 gpg –list-keys命令将为您列出它。 Passphase是您的GPG专用密钥的密码。 .gnupg文件夹通常在您的主目录中生成。 4.设置SonaType Nexus存储库的凭据 需要推送到SonaType Nexus存储库。 与SonaType JIRA凭据相同。 再次在settings.xml中 serversserveridsonatype-nexus-snapshots/idusernamelkrnac/usernamepassword*************/password/serverserveridsonatype-nexus-staging/idusernamelkrnac/usernamepassword*************/password/server
/servers 6.设置对GitHub的SSH访问 请遵循以下子步骤 生成新的SSH密钥 将公共SSH密钥添加到GitHub 7.创建“部署到Maven Central”按钮 Maven-release-plugin需要将版本更新推送/签到源控制系统并标记修订。 就我而言代码托管在GitHub上。 因此在调用maven-release-plugin的目标之前我需要注册我的SSH身份在上一步中生成。 这是通过位于pom.xml旁边的bash脚本maven-central-deploy.sh完成的 !/bin/bash
# Deploy maven artefact in current directory into Maven central repository
# using maven-release-plugin goalsread -p Really deploy to maven cetral repository (yes/no)? if ( [ $REPLY yes ] ) thenssh-add ~/.ssh/lubos.krnacssh-add -lmvn release:clean release:prepare release:perform -B -e | tee maven-central-deploy.logssh-add -D
elseecho Exit without deploy
fi 使脚本可执行 chmod x maven-central-deploy.sh8.按下“部署到Maven Central”按钮 赶紧跑 ./maven-central-deploy.sh 确认并根据需要输入SSH私钥通行证。 9.通过SonaType Nexus存储库发布工件 将工件推送到SonaType Nexus存储库时。 您需要释放它 。 最后您需要在开始创建的SonaType JIRA问题中添加评论然后等到有人检查您的工件并设置与Maven Central的同步。 当然JIRA的一部分只需要做一次。 链接 以这种方式配置的示例项目托管在GitHub上 。 这是很小的测试库。 参考在Lubos Krnac Java博客博客上从我们的JCG合作伙伴 Lubos Krnac 部署到Maven Central Repository 。 翻译自: https://www.javacodegeeks.com/2014/03/deploy-to-maven-central-repository.htmlmaven的中央存储库