Android 在不开源的情况下发布jar包到maven中央仓库

申请发布资格

由于需要一天时间审核,把这个放在第一步。

先在https://issues.sonatype.org注册账号。注册完成后回到首页点击顶部的create按钮开始创建申请单:

Android 在不开源的情况下发布jar包到maven中央仓库

Project:选择默认选项  Community Support - Open Source Project Repository Hosting (OSSRH)

Issue Type:选择默认选项  New Project

Summary:简单描述一下项目的作用即可

Group Id:这个是重点,因为它是你的项目的唯一标识。命名的规则可以参考https://central.sonatype.org/pages/choosing-your-coordinates.html。因为我没有自己的域名,所以用自己GitHub主页来命名,格式就是:com.github.[你的用户名]

Project URL:你的项目GitHub地址。由于不想开放源码,建一个空项目就行。例如:https://github.com/username/sample

SCM url:项目管理地址。例如:https://github.com/username/sample.git

填好提交,等待审核。如果审核未通过,审核人员会在下面的Comments中说明理由,并给出一些提示。


签名并打包

官方参考:https://central.sonatype.org/pages/manual-staging-bundle-creation-and-deployment.html

准备jar包

需要准备四个文件: 

①源码jar包。

在android studio右侧点击build,编译完成后就能在build/intermediates/intermediate-jars/release/找到classes.jar,然后重命名。例如sample-1.0.0.jar。

Android 在不开源的情况下发布jar包到maven中央仓库 Android 在不开源的情况下发布jar包到maven中央仓库

②配置pom文件

官方参考:https://central.sonatype.org/pages/requirements.html

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.simpligility.training</groupId>
  <artifactId>ossrh-demo</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>

  <name>ossrh-demo</name>
  <description>A demo for deployment to the Central Repository via OSSRH</description>
  <url>http://github.com/simpligility/ossrh-demo</url>

  <licenses>
    <license>
      <name>The Apache Software License, Version 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
    </license>
  </licenses>

  <developers>
    <developer>
      <name>Manfred Moser</name>
      <email>[email protected]</email>
      <organization>Sonatype</organization>
      <organizationUrl>http://www.sonatype.com</organizationUrl>
    </developer>
  </developers>

  <scm>
    <connection>scm:git:git://github.com/simpligility/ossrh-demo.git</connection>
    <developerConnection>scm:git:ssh://github.com:simpligility/ossrh-        
     demo.git</developerConnection>
    <url>http://github.com/simpligility/ossrh-demo/tree/master</url>
   </scm>


</project>

这是官方完整的例子。

groupId:就是之前申请的唯一标识。仔细填写

artifactId:可以填写你的项目名称。

version:版本号,仔细填写。

上面三个信息组合起来,例如:com.github.username:sample:1.0.0,是不是很眼熟。

packaging:jar

licenses节点:按照官方给的Apache规范就可以了。

developers节点:参考上面

scm节点:参考上面

上面的信息必须都要填写,否则上传的时候会提示你pom文件解析失败。

如果你的代码里面还引用了第三方的依赖,需要添加dependencies节点

例如

	<dependencies>
		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.8.2</version>
		</dependency>
		
		<dependency>
			<groupId>com.squareup.okhttp3</groupId>
			<artifactId>okhttp</artifactId>
			<version>3.9.1</version>
		</dependency>
	</dependencies>

编辑好后,重命名pom文件,例如:sample-1.0.0.pom

③javadoc和sources

新建一个README文件,内容为空就可以。然后用jar打包命令:jar -cvf sample-1.0.0-javadoc.jar README

得到:sample-1.0.0-javadoc.jar

同理生成:sample-1.0.0-sources.jar

2.签名

①下载签名工具

先去https://www.gnupg.org/download/下载签名工具。我直接下载的Gpg4win,安装好会自动配好环境变量。

②生成**,并上传公钥

可参考https://www.cnblogs.com/wanghongli/archive/2018/01/08/8241809.html

上传完成后可以在http://keys.gnupg.net:11371/#用你生成**时的邮箱查询

②签名

上面我们已经得到了4个文件:

sample-1.0.0.jar

sample-1.0.0.pom

sample-1.0.0-javadoc.jar

sample-1.0.0-sources.jar

我们用命令:gpg -ab sample-1.0.0.jar 分别对四个文件进行签名

现在我们又得到了4个签名文件

sample-1.0.0.jar.asc

sample-1.0.0.pom.asc

sample-1.0.0-javadoc.jar.asc

sample-1.0.0-sources.jar.asc

③打包

将同一目录下的8个文件打包:jar -cvf bundle.jar sample*

最后我们得到了打包完成的bundle.jar


发布jar包

如果你的发布工单已经通过审核,就可以进行上传了。

①上传

https://oss.sonatype.org/#welcome

用你的sonatype账号登录 > 左侧的Staging Upload > 选择Upload Mode为Artifact Bundle>选择bundle.jar上传。

点击左侧的Staging Repositories,拉到最下面找到自己刚刚上传的包,点到下面Activity页签中看一下是否有报错信息。

有错误就按照提示,修改后再重新上传。

②发布

多刷新几次,直到上面的状态变为closed时就可以点击Release进行发布。发布完成后到issue.sonatype去评论一下,示意你刚刚发布了第一个版本。

等差不多一个小时你就可以在https://search.maven.org/查询到你发布的包了,更新版本时只需要修改一下pom文件重新生成签名打包然后上传即可,几分钟就可以看到更新后的版本。

引用

感谢简书大神的文章

https://www.jianshu.com/p/b26efa87ce4a

以及

https://www.cnblogs.com/wanghongli/archive/2018/01/08/8241809.html