如何解决如何在 gradle 中的同级多项目之间共享依赖项?
我的项目使用 Gradle 的多项目系统。我的大部分项目都包含这样的“狐猴公共”库
dependencies {
compile project(":lemur-common")
}
“lemur-common”还有一个单元测试目录,里面有一个有点复杂的依赖语句。
dependencies {
testCompile group: 'org.springframework.boot',name: 'spring-boot-starter-test',version: '2.3.9.RELEASE'
testCompile group: 'org.mockito',name: 'mockito-inline',version: '3.5.6'
constraints {
implementation('org.mockito:mockito-core:3.5.6') {
because 'Fixes illegal reflective access warning'
}
}
}
现在,我所有的其他项目都需要使用同一行,因为它们都使用 spring-boot-starter-test。我做了很多摆弄,试图表达诸如“project-a 的 testCompile 应该具有与 lemur-common 相同的依赖项”之类的东西,但我还没有让它工作。
是否可以在 Gradle 中表达这一点?有人知道怎么做吗?
解决方法
您需要创建自定义 Gradle 插件。
作为所有项目目录的兄弟,创建一个 buildSrc 目录,它本身将有一个 Gradle 文件(它需要像其他所有内容一样构建)。在 src 下制作 gradle 文件,这将是你的插件。将所有共享的 gradle 代码(您发布的依赖项块)放在该文件中。例如:
- buildSrc
|── build.gradle
|── settings.gradle
|── src
|── main
|── groovy
|── unit-test-dependencies.gradle
然后,在 lemur-common、projectA 等的 build.gradle 中加入这一行
plugins {
id 'unit-test-dependencies'
}
应该可以。此功能的 Gradle 文档位于此处:https://docs.gradle.org/current/samples/sample_convention_plugins.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。