如何让Gradle的flatDir仓库支持读取嵌套文件夹内的依赖?
Gradle flatDir 仓库递归扫描子目录配置方案
Gradle 原生flatDir仓库默认仅扫描指定目录的第一层文件,没有提供内置的递归扫描配置项,你可以通过动态遍历根目录下所有层级子目录的方式实现全仓库搜索,无需手动添加每个分组路径:
repositories { flatDir { // 替换为你的本地仓库根目录路径 def localRepoRoot = file('D:/path/to/local/directory') def scanDirs = [] // 递归收集所有子目录 localRepoRoot.eachDirRecurse { dir -> scanDirs << dir } // 额外加入根目录本身,避免漏扫根目录下的jar包 scanDirs << localRepoRoot dirs scanDirs } }
注意事项
- 该方案会在构建的配置阶段完成目录扫描,普通规模的本地仓库不会产生可感知的额外耗时,如果后续新增分组子目录,不需要修改配置,Gradle会自动扫描新目录下的依赖。
- 依赖声明方式和原
flatDir用法完全一致,示例:implementation name: 'common-util', version: '1.0.0',不需要额外指定group参数。 - 如果你后续依赖规模持续增大,也可以考虑将本地仓库改为标准Maven结构,通过
maven { url '文件路径' }的方式引入,依赖管理会更规范。
内容的提问来源于stack exchange,提问作者user7551211
相关产品推荐
相关产品推荐

