maven - 使用 Gradle maven-publish 和签名插件时缺少校验和文件
问题描述
我有一个使用 Gradle 构建和打包的 Java 项目。我的目的是创建发布到 Maven Central 的工件。
作为第一步,我配置了我的 Gradle 项目,如文档中的以下示例所示:
https://docs.gradle.org/current/userguide/publishing_maven.html#publishing_maven:complete_example
当我运行时gradle publishToMavenLocal
,我在本地存储库中安装了以下文件:
maven-metadata-local.xml
my-library-1.0.2-SNAPSHOT.jar
my-library-1.0.2-SNAPSHOT.jar.asc
my-library-1.0.2-SNAPSHOT-javadoc.jar
my-library-1.0。 2-SNAPSHOT-javadoc.jar.asc
my-library-1.0.2-SNAPSHOT.pom
my-library-1.0.2-SNAPSHOT.pom.asc
my-library-1.0.2-SNAPSHOT-sources.jar
my-library- 1.0.2-SNAPSHOT-sources.jar.asc
文件一切正常。我唯一的问题是没有生成校验和文件(md5 和 sha1)。但是,校验和文件是通过 OSS Sonatype 在 Maven Central 上部署工件的要求。
如何生成丢失的校验和文件?似乎maven-publish或签名插件没有用于此目的的选项?怎么了?
解决方案
我找到的解决方案是同时使用阴影ant.checksum
:
tasks.withType(Jar) { task ->
task.doLast {
ant.checksum algorithm: 'md5', file: it.archivePath
ant.checksum algorithm: 'sha1', file: it.archivePath
ant.checksum algorithm: 'sha-256', file: it.archivePath, fileext: '.sha256'
ant.checksum algorithm: 'sha-512', file: it.archivePath, fileext: '.sha512'
}
}
调用gradle publishShadowPublicationToMavenLocal
将根据需要生成签名,但不会将它们发布到~/.m2
.
起初我以为那些签名应该是自动的,所以我打开了https://github.com/johnrengelman/shadow/issues/718进行讨论。
推荐阅读
- python - 我的程序无法正确读取文件
- javascript - Vue - 同时使用具有多个配置和不同名称的相同插件?
- java - eclipse 2020-12 上的 Gradle 错误:Task:compileJava FAILED Unrecognized option:-h
- node.js - ElasticSearch 查询在开发控制台上工作,但在 NodeJS 实例中失败
- xamarin.forms - Plugin.MediaManager.Forms 在 xamarin uwp 中不起作用
- typo3 - TYPO3:为 tx_news 内容元素关系配置可用类型
- spring-auto-restdocs - Spring Auto Rest Docs 中的 Auto Section 标题级别
- python - 表单错误显示在错误的位置
- vue.js - 使用 vue 和 vue-router 重新加载路由后从父组件获取数据
- php - 如何使用谷歌翻译或任何其他翻译服务翻译 php 字符串?