簡體   English   中英

如何在mavenCentral中發布時從pom中刪除依賴項

[英]How to remove a dependency from the pom when publishing in mavenCentral

我正在嘗試在MavenCentral中發布一個庫。 所以我正在關注這個Chris Banes的帖子

一切正常但我有一點問題:圖書館使用谷歌播放服務lib:

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

但我不需要依賴,它只是可選的,如果開發人員使用我的應用程序也將播放服務添加到他的依賴項,我想檢測它並使用一些類。 但是開發人員沒有添加這種依賴關系,我發現缺少類,我不使用它們。

所以基本上我想使用依賴為了編譯構建,但我不希望POM文件添加這種依賴。 我怎樣才能做到這一點?

Maven插件doc ,您可以使用pom.whenConfigured重新組織依賴項。

例如,以下內容不會將junitplay-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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM