4

我有一个使用 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签名插件没有用于此目的的选项?怎么了?

4

1 回答 1

0

我找到的解决方案是同时使用阴影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进行讨论。

于 2021-10-06T19:45:25.153 回答