gpt4 book ai didi

java - 使用 Gradle 防止第 3 方库位于编译类路径上

转载 作者:行者123 更新时间:2023-12-02 15:04:06 24 4
gpt4 key购买 nike

我有一个多项目 Gradle 构建。我有依赖于 Sub-Project-BSub-Project-ASub-Project-BSLF4J 具有编译时依赖性。我希望 Sub-Project-A 能够针对任何 SLF4J 库进行编译,但在运行时我确实希望 Sub -Project-B 代码能够运行。

我认为我可以做的是将编译时依赖项添加到 Sub-Project-B,然后添加:

configurations {
compile.exclude group: 'org.slf4j'
}

到子项目-A。这确实可以防止任何代码针对 slf4j API 进行编译,但它也可以防止 slf4j 库出现在 Sub-Project-A 运行时上,因此一旦访问 Sub-Project-B 中的代码,我获取 ClassNotFoundException。

由于这很难工作,我想我一定做错了什么,但这感觉并不是一个不合理的设置。我只希望我的构建中的子项目之一能够在编译时访问第三方库。

最佳答案

我认为您需要排除它,然后重新包含它。我看不出有什么方法可以一步完成此操作。

erdi's solution 稍作修改,您可以将 B 的整个依赖项重新包含在 A 的运行时配置中:

dependencies {
compile(project(':A')) {
exclude group: 'org.slf4j'
}
runtime project(':A')
}

这有点重复。

关于java - 使用 Gradle 防止第 3 方库位于编译类路径上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16046273/

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