如何在mavenCentral中发布时从pom中删除依赖项

时间:2017-02-15 23:46:03

标签: java android gradle

我正在尝试在MavenCentral中发布一个库。所以我正在关注Chris Banes post

一切正常但我有一点问题:图书馆使用谷歌播放服务lib:

compile 'com.google.android.gms:play-services:10.2.0'

但是我不需要依赖,它只是可选的,如果开发人员使用我的应用程序也将播放服务添加到他的依赖项,我想检测它并使用一些类。但是开发人员没有添加这种依赖关系,我发现缺少了类,我没有使用它们。

所以基本上我想使用依赖项来编译构建,但我不希望POM文件添加此依赖项。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

Maven plugin doc开始,您可以使用update table set BoolFields = BoolFields + 1.0 where cast(BoolFields as int) & 1 <> 1 重新组织依赖关系。

例如,以下内容不会采用pom.whenConfigured&amp; junit artifactId作为依赖项:

play-services

在您的示例中,您将拥有以下内容以排除whenConfigured { p - > p.dependencies = p.dependencies.findAll { dep - > (dep.artifactId.notIn(["junit", "play-services"])) } }

play-services

您也可以排除pom { project { name POM_NAME packaging POM_PACKAGING description POM_DESCRIPTION url POM_URL scm { url POM_SCM_URL connection POM_SCM_CONNECTION developerConnection POM_SCM_DEV_CONNECTION } licenses { license { name POM_LICENCE_NAME url POM_LICENCE_URL distribution POM_LICENCE_DIST } } developers { developer { id POM_DEVELOPER_ID name POM_DEVELOPER_NAME } } } whenConfigured { p - > p.dependencies = p.dependencies.findAll { dep - > (dep.artifactId.notIn(["play-services"])) } } } //https://stackoverflow.com/a/26810828/2614364 Object.metaClass.notIn = { Object collection -> !(delegate in collection) } dep.groupId