<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Build on arjenzhou</title><link>/categories/build/</link><description>Recent content in Build on arjenzhou</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Thu, 20 Jul 2023 00:00:00 +0000</lastBuildDate><atom:link href="/categories/build/feed.xml" rel="self" type="application/rss+xml"/><item><title>将 Gradle 构建的 Java 产物发布到 Maven 中央仓库和 GitHub Packages</title><link>/article/2023/07/how-to-release-a-gradle-project/</link><pubDate>Thu, 20 Jul 2023 00:00:00 +0000</pubDate><guid>/article/2023/07/how-to-release-a-gradle-project/</guid><description>&lt;p&gt;日常开发中经常会抽象出一些常用的工具代码，这些代码可以作为三方包发布到中央仓库，在开一个新项目的时候直接引进来使用。&lt;br&gt;
除中央仓库之外，GitHub 也为开源项目提供了免费的 GitHub Packages 作为托管这些产物的平台。&lt;/p&gt;
&lt;p&gt;所以本文会介绍一个将使用 Gradle 构建的 Java 项目产物，托管到 Maven 中央仓库和 GitHub Packages 的方案。&lt;/p&gt;
&lt;p&gt;撰写本文时的环境如下：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;依赖&lt;/th&gt;
 &lt;th&gt;版本&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Gradle&lt;/td&gt;
 &lt;td&gt;8.2.1&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Java&lt;/td&gt;
 &lt;td&gt;java version &amp;ldquo;17.0.7&amp;rdquo; 2023-04-18 LTS&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;commit&lt;/td&gt;
 &lt;td&gt;&lt;a href="https://github.com/arjenzhou/bm-kit/tree/35256125ba7f3b0ba131b8721775576c0936c3a0"&gt;35256125ba7f3b0ba131b8721775576c0936c3a0&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h1 id="更严格的-maven-central"&gt;更严格的 Maven Central&lt;/h1&gt;
&lt;p&gt;对于 Release 发布来说，Maven 中央仓库对发布产物有着更严苛的要求。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要对每个产物进行合法性校验
&lt;ul&gt;
&lt;li&gt;每个产物需要上传 PGP 加密文件 *.asc&lt;/li&gt;
&lt;li&gt;GPG 的公钥需要公网可见&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;POM 中需要包含项目的名称、描述、地址、协议、开发者信息、仓库信息等&lt;/li&gt;
&lt;li&gt;Maven Central 区分 snapshot 和 release 的发布地址&lt;/li&gt;
&lt;li&gt;Maven Central 需要在 Nexus Repository Manager 上管理 release 产物&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;这里的 GPG 和 PGP 并不是 typo&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;所以，想要将代码发布到中央仓库的前提就清楚了（GitHub Packages 的前提更少）：&lt;/p&gt;</description></item></channel></rss>