gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:53:37 29 4
gpt4 key购买 nike

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

一切正常,但我有一个小问题:该库使用 google play 服务库:

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

但我不需要依赖项,它只是可选的,如果使用我的应用程序的开发人员也将播放服务添加到他的依赖项中,我想检测它并使用一些类。但如果开发人员不添加此依赖项,我检测到类丢失并且我不使用它们。

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

最佳答案

来自 Maven plugin doc ,您可以使用 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.groupIddep.version

关于java - 在 mavenCentral 中发布时如何从 pom 中删除依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42262253/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com