Gradle瞬态依赖

时间:2019-03-06 09:01:03

标签: gradle

我有一个项目“ lib”,该项目声明了对第三方库的依赖(比如说redis)。

dependencies{
        implementation group: 'redis.clients', name: 'jedis', version: '2.9.0'
    }

我有另一个项目“应用程序”,它以非常相似的方式声明了对“ lib”项目的依赖。

问题:除非我也将redis依赖项添加到“应用程序”项目中,否则它会由于缺少redis依赖项而在运行时失败(尽管它本身并未直接使用redis)。

我想以这种方式在“ lib”项目中声明“ redis”依赖项,因此“ lib”已经与“ redis”捆绑在一起,因此每个使用“ lib”的人都必须只声明“ lib”依赖性。

该怎么做?

1 个答案:

答案 0 :(得分:0)

假设您应用了javajava-library插件,则无需执行任何操作。

添加到Gradle implementation范围中的依赖项对于该项目的使用者来说,对于其 runtime 类路径是可见的。但是,它对于编译类路径是不可见的

为了更好地了解正在发生的事情,您可以通过在两个项目上运行./gradlew <project>:dependencies --configuration runtimeClasspath来检查不同的类路径,并查看输出结果,当然用项目名称替换<project>或将其留空根项目。