我有一个利用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-发布或签名插件没有用于此目的的选项?怎么啦?
2条答案
按热度按时间yqhsw0fo1#
我找到的解决方案是使用shadow和
ant.checksum
:调用
gradle publishShadowPublicationToMavenLocal
将根据需要生成签名,但不会将它们发布到~/.m2
。起初,我认为这些签名应该是自动的,所以我打开了https://github.com/johnrengelman/shadow/issues/718进行讨论。
44u64gxh2#
我认为这是Gradle中的一个错误,我打开了一个问题,但正如这里描述的那样,这实际上模拟了
mvn install
的行为。听起来Maven Local的工作原理与Maven Repository略有不同。在本地测试这一点的正确方法是使用基于文件的存储库。由于您只使用它来测试(而不是实际与其他项目共享内容),我认为将其放入构建目录中是最好的。将下面的
repositories
部分添加到publishing
块中。然后,当您./gradlew publish
时,它将发布到您的构建目录。Kotlin
Groovy
这两个样本实际上来自您共享的链接。它们可能是后来添加的,或者您(像我一样)认为
publishToMavenLocal
的行为应该与publish
相同(不同于文件的实际位置)。