Android 在不开源的情况下发布jar包到maven中央仓库
申请发布资格
由于需要一天时间审核,把这个放在第一步。
先在https://issues.sonatype.org注册账号。注册完成后回到首页点击顶部的create按钮开始创建申请单:
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。
②配置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