如何更改生成的工件的依赖项?

时间:2015-04-01 13:34:47

标签: java gradle dependency-management gradle-shadow-plugin

Gradle 2.3; shadow插件1.2.1。

在我的build.gradle中,我使用shadow插件来重新打包依赖项,如:

shadowJar {
    relocate("com.google.common", "r.com.google.common");
}

我还将影子jar添加到要发布的工件列表中:

artifacts {
    archives jar;
    archives sourcesJar;
    archives javadocJar;
    archives shadowJar;
}

然而,影子jar的依赖项列表仍包含" normal"的所有依赖项。 jar,即使它内置了所有依赖项。

这是预期的行为吗?如何让影子jar排除这个或那个依赖?

1 个答案:

答案 0 :(得分:1)

在工作中我们遇到了同样的问题,我们只是把它放在我们的一个项目的build.gradle中:

def installer = install.repositories.mavenInstaller
def deployer = uploadArchives.repositories.mavenDeployer

[installer, deployer]*.pom*.whenConfigured { pom ->
    pom.dependencies.retainAll {
        it.groupId == 'our.group.id' && it.artifactId == 'some-api'
    }
}

这将删除pom.xml中的所有依赖项,除了对我们的某个API项目的依赖。

(这是official Gradle documentation中一个例子的非常逐字的副本。)