Gradle- 发布 jar 到中央仓库

本贴最后更新于 2506 天前,其中的信息可能已经时过境迁

用 Gradle 部署到 OSSRH - 介绍

就像 Gradle 可以 Central Repository 中的 jar 一样,它也可以配置为发布到 OSSRH,一样简单。

元数据和签名

为了使用 Gradle 将您的组件部署到 OSSRH,您必须满足 pom.xml 中所有的东西,并提供所需的已签名组件。

MavenGradle 的插件可以处理元数据,生成所需的 pom.xml 文件,并负责将构建输出部署到存储库。signing 插件允许您获取由标准 Gradle 任务创建的组件,并签名:

apply plugin: 'maven' apply plugin: 'signing'

Jar 文件

对于典型的 Java 项目,您可以添加 javadocJar 以及 sourcesJar 任务

task javadocJar(type: Jar) { classifier = 'javadoc' from javadoc } task sourcesJar(type: Jar) { classifier = 'sources' from sourceSets.main.allSource }

并将它们与项目 jar 本身一起挂接到 artifacts 集合中:

artifacts { archives javadocJar, sourcesJar }

签署文物

已定义的工件可以使用签名

signing { sign configurations.archives }

元数据定义和上传

为了准备实际上传,您必须在 maven 插件的帮助下定义所有元数据。组和版本在顶层项目中设置,而 artifactId 为 archiveTask 配置。

group = "com.example.applications" archivesBaseName = "example-application" version = "1.4.7"

生成的 pom 文件必须进行签名,然后必须上传所有已签名的工件。所有这些都可以配置为配置的一部分 uploadArchives

uploadArchives { repositories { mavenDeployer { beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } repository(url: "https://oss.sonatype.org/service/local/staging/deploy/maven2/") { authentication(userName: ossrhUsername, password: ossrhPassword) } snapshotRepository(url: "https://oss.sonatype.org/content/repositories/snapshots/") { authentication(userName: ossrhUsername, password: ossrhPassword) } pom.project { name 'Example Application' packaging 'jar' // optionally artifactId can be defined here description 'A application used as an example on how to set up pushing its components to the Central Repository.' url 'http://www.example.com/example-application' scm { connection 'scm:svn:http://foo.googlecode.com/svn/trunk/' developerConnection 'scm:svn:https://foo.googlecode.com/svn/trunk/' url 'http://foo.googlecode.com/svn/trunk/' } licenses { license { name 'The Apache License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'manfred' name 'Manfred Moser' email 'manfred@sonatype.com' } } } } } }

您的项目的依赖项将被插入到生成的项目中。

证书

用于签名和上传的凭证可以存储在 gradle.properties 用户主目录中的文件中。内容将如下所示

signing.keyId=YourKeyId signing.password=YourPublicKeyPassword signing.secretKeyRingFile=PathToYourKeyRingFile ossrhUsername=your-jira-id ossrhPassword=your-jira-password

部署

有了这个配置,就可以开始部署

gradle uploadArchives

将部署发布到中央存储库

部署完成后,您可以继续手动发布组件。

链接

  • Gradle
    41 引用 • 20 回帖 • 2 关注
  • Java

    Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。

    3195 引用 • 8215 回帖 • 1 关注
  • 中央仓库
    2 引用 • 18 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • xjtushilei

    正常的就可以。没什么限制。编译通过就行。如果有注释的话,注释格式不能有问题,不然 maven-doc 本地编译过不去。没注释的话就没问题,233333.

    还有一个认证问题,推荐用 github,证明 group 的权限你有。

    之前我有一篇 https://hacpai.com/article/1492069833312 我上传了 https://github.com/xjtushilei/ScriptSpider , maven 比较麻烦,gradle 我没试过。

    1 回复
  • 其他回帖
  • someone9891 via macOS

    好的,多谢

  • someone9891 via macOS

    像 Gradle、maven 上传中央仓库有内容限制吗?比如我自己的工具类封装了,可能对别人来说没用,我又不想搭建私服,他会对上传对内容进行审核吗?还是只要没 bug ,正常对 jar 都可以?

    1 回复