问题描述
我正在尝试在MavenCentral中发布一个库。 所以我正在关注这个 。
一切正常但我有一点问题:图书馆使用谷歌播放服务lib:
compile 'com.google.android.gms:play-services:10.2.0'
但我不需要依赖,它只是可选的,如果开发人员使用我的应用程序也将播放服务添加到他的依赖项,我想检测它并使用一些类。 但是开发人员没有添加这种依赖关系,我发现缺少类,我不使用它们。
所以基本上我想使用依赖为了编译构建,但我不希望POM文件添加这种依赖。 我怎样才能做到这一点?
1楼
从 ,您可以使用pom.whenConfigured
重新组织依赖项。
例如,以下内容不会将junit
和play-services
artifactId作为依赖项:
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
或dep.version