jja*_*man 2 java dependencies dependency-management gradle
我有一个多项目 Gradle 构建。我有Sub-Project-A这取决于Sub-Project-B。Sub-Project-B具有编译时依赖性SLF4J。我不希望能够Sub-Project-A针对任何SLF4J库进行编译,但在运行时我确实希望Sub-Project-B代码能够运行。
我认为我可以做的是将编译时依赖项添加到 Sub-Project-B 中,然后添加:
configurations {
compile.exclude group: 'org.slf4j'
}
Run Code Online (Sandbox Code Playgroud)
到子项目-A。这确实阻止了任何代码针对 slf4j API 进行编译,但它也阻止了 slf4j 库出现在 Sub-Project-A 运行时上,因此一旦Sub-Project-B访问代码,我就会收到 ClassNotFoundException。
由于这很难工作,我想我一定做错了什么,但这并不感觉像是一个不合理的设置。我只希望我的构建中的子项目之一能够在编译时访问第三方库。
我认为您需要排除它,然后重新包含它。我看不到任何方法可以一步完成此操作。
作为对erdi 解决方案的轻微修改,您可以将 B 的整个依赖项重新包含在 A 的运行时配置中:
dependencies {
compile(project(':A')) {
exclude group: 'org.slf4j'
}
runtime project(':A')
}
Run Code Online (Sandbox Code Playgroud)
这样就少了一些重复。
| 归档时间: |
|
| 查看次数: |
789 次 |
| 最近记录: |