将工件从 gradle 项目发布到 bintray(maven 存储库)
Posted
技术标签:
【中文标题】将工件从 gradle 项目发布到 bintray(maven 存储库)【英文标题】:Publishing artifact from gradle project to bintray (maven repository) 【发布时间】:2013-12-06 13:39:34 【问题描述】:我已将 Gradle 配置为使用 new Maven Publisher Plugin 发布项目工件,不幸的是,此插件在生成的 pom.xml
中存在依赖问题 - 依赖的范围为 runtime
而不是 compile
。
我的配置是这样的:
apply plugin: 'maven-publish'
publishing
publications
mavenCustom(MavenPublication)
from components.java
repositories
maven
url "https://api.bintray.com/maven/codearte/public/fairyland"
credentials
username = bintrayUser
password = bintrayKey
只需一个命令即可轻松发布:
gradle publish
如何以旧(工作)方式实现这一目标?项目发布时是否可以自动进行项目标记?
【问题讨论】:
【参考方案1】:所有 POM 依赖项都具有 runtime
范围的事实是新的孵化 maven-publish
插件的已知限制。在此问题得到修复之前,您可以使用publication.pom.withXml
挂钩自行修复它,或者回退到maven
插件。这两个插件都记录在Gradle User Guide。
标签是一个完全不同的问题。您可以使用第三方 Gradle SCM 插件之一或调用命令行工具(例如使用 Exec
任务)。
【讨论】:
在我看来新的 gradlemaven-plugin
已经不是新的了,但问题仍然存在。
这个“新的、正在孵化的”插件会完成吗?
这是我在这里找到的示例“withXml hook”gist.github.com/bugs84/… discuss.gradle.org/t/… 它对我有用
是否存在跟踪此限制的错误?
来自discuss.gradle.org/t/… publishing Publications pom.withXml asNode().dependencies.''.findAll() it.scope.text() == 'runtime' && project .configurations.compile.allDependencies.find dep -> dep.name == it.artifactId.text() .each() it.scope.value = 'compile' 跨度>
【参考方案2】:
好的,我想通了:
apply plugin: 'maven'
uploadArchives
repositories
mavenDeployer
name = 'Codearte Public Repository'
repository(id: 'codearte-repository', url: 'https://api.bintray.com/maven/codearte/public/fairyland')
authentication(userName: bintrayUser, password: bintrayKey)
使用命令上传:
gradle uploadArchives
【讨论】:
我还建议你看看bintray gradle plugin。它使发布到 Bintray 变得更加容易。以上是关于将工件从 gradle 项目发布到 bintray(maven 存储库)的主要内容,如果未能解决你的问题,请参考以下文章
使用 Gradle 将工件上传到 JFrog Artifactory