2

梯度 2.3;影子插件 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 的依赖项列表仍然包含“普通”jar 的所有依赖项,即使它具有内置的每个依赖项。

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

4

1 回答 1

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 项目之一的依赖之外,这将删除所有依赖项。

(它是Gradle 官方文档中一个示例的完整副本。)

于 2017-02-15T11:32:38.620 回答