当前位置: 首页 > 知识库问答 >
问题:

使用Gradle自动发布到Maven Central

袁卓
2023-03-14

我想使用gradleuploadarchives将我的jar上传到Maven中央存储库,并在其他项目中作为依赖项使用它。我遵循了这个不错的教程,结果我的JAR被上传到Sonatype Nexus(见下面的屏幕截图)。

我的jar的0.1版本可用;线路

依赖项{compile'eu.matthiasbraun:Utils:0.1'}

构建中工作正常。gradle我的从属项目的文件。我通过点击屏幕截图中的关闭释放按钮发布了0.1版本。之后,我评论了我在这里创建的Jira票据,并被告知中央同步将每两小时运行一次。

我的理解是,如果我现在想发布我的jar的0.2版本,我只需执行gradleuploadarchives并更改构建中的行。我的从属项目的渐变到

依赖项{compile'eu.matthiasbraun:Utils:0.2'}

然而,当我gradlebuild我的依赖项目时(两个小时后),我得到了一个错误,即依赖关系无法解决。

这是我完整的build.gradle,它将我的jar上传到Sonatype Nexus: link。

如何使用Gradle自动将JAR发布到Maven Central?

共有3个答案

羊昊苍
2023-03-14

屏幕截图显示您尚未发布您的库。您只将其提交给OSSRH。你接下来需要做的是

  • 按下“关闭”按钮关闭暂存存储库,这向Nexus发出信号,表示不希望向暂存存储库添加任何其他内容

顺便说一下。如果你可以在命令行上用Nexus分期Maven插件或蚂蚁任务自动完成。您可以包装蚂蚁任务并在Gradle中使用它们。关于这一切的更多信息请参见Nexus书的分期章节。

潘俊楚
2023-03-14

Gradle Nexus Staging插件可用于自动关闭存储库,并将工件升级/发布到Maven Central。

必须将其添加到您的项目中:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath "io.codearte.gradle.nexus:gradle-nexus-staging-plugin:0.5.1"
    }
}

apply plugin: 'io.codearte.nexus-staging'

并配置:

nexusStaging {
    packageGroup = "org.mycompany.myproject"
    stagingProfileId = "yourStagingProfileId" //optional, but reduce number of calls to Nexus
}

在工件上传后(使用上传存档或任何其他方式),调用以下命令就足够了:

./gradlew closeRepository promoteRepository

如果启用了与Maven Central的同步,则工件应在几分钟内自动显示在Maven Central中。

更多信息(包括如何提供凭据的方式)请参阅该博客文章或项目网页。

免责声明我是这个插件的作者。

卜鹏
2023-03-14

我使用了nexus-workflow gradle插件来自动发布存储库。

我把它放在构建的顶部。我要发布的项目的gradle

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.adaptc.gradle:nexus-workflow:0.6'
    }
}
apply plugin: 'nexus-workflow'

另外,我把这三个属性放在~/. gradle/gradle.properties

oss-releases.username=mySonatypeUsername
oss-releases.password=mySonatypePassword
oss-releases.url=https://oss.sonatype.org/index.html#stagingRepositories

当我想将发布推送到Maven Central时,我首先使用gradle uploadArchives将JAR上传到Nexus,然后执行gradle nexusStagingRelease。这将关闭并释放我在Nexus上的所有开放式回购。

编辑:我还发现了Benjamin Muschko的插件,它似乎是上述插件的替代品。不过我还没试过。

 类似资料:
  • 作为从ant迁移到gradle的短期选择,我们希望仅在ant构建的开始和结束时使用gradle,而不是从gradle内部运行ant。 基本上,我们希望使用gradle将依赖项提取到一个目录,然后运行ant构建,将所有指定的jar放置在一个目录中,然后使用gradle将工件从该目录发布到Artifactory。 这意味着gradle不会实际构建工件——而是在目录中找到它们,但我们仍然希望对它们进行版

  • 我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复

  • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

  • 你可以在“精彩活动-新建活动”挑选兑吧预设的活动 只需要点击创建活动,根据弹窗提示就可以配置活动的展示。点击新窗口预览就可以查看这个活动的奖品及规则。 以圆形大转盘为例,操作如何添加奖品; 点击创建活动,进入活动规则,规则中的红色*号是必填选项,开启直充防刷之后直充类奖项无法使用多个用户充值至一个充值账户 活动模式分积分商城活动和独立活动工具两种类型,两者区别是:独立活动工具还没有积分体系,可以单

  • 如果Maven大师社区可以帮助我完成以下任务,那就太好了。 我想以一种发布过程以批处理模式运行的方式(不需要从控制台询问任何问题)自动化哈德逊中Maven模块的发布过程。目前我使用常见步骤发布:准备 在准备步骤中: 对于与当前模块和父模块的匹配的所有依赖项,请将替换为正式版本(例如)。 发布后的某些时间: 对于与当前模块和父模块的组ID匹配的所有依赖项,请将发布版本替换为快照版本(例如,版本:使用

  • 我试图使用Gradle将Jar文件发布到Azure DevOps工件中,但我得到了以下错误信息: 失败:生成失败,出现异常。 > 问题:在根项目“Project1”中找不到任务“publish”。 尝试:运行gradle tasks以获取可用任务的列表。使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。运行--扫描以获得完整的洞察力。