java - 用本地克隆替换 gradle 依赖
问题描述
我有一个 java 项目,用 gradle 管理,远程依赖通过存储库解决。
implementation 'org.company:very-big-dependency:2.7.1'
我想克隆该依赖项,在本地项目上工作,并实现一个新功能。
有没有办法让 gradle 像从存储库中一样从本地获取依赖项?
我已经尝试将项目包含在我的settings.gradle
include ':app', ":very-big-dependency"
project(':very-big-dependency').projectDir = new File(settingsDir, '../../very-big-dependency')
并定义了对我的依赖build.gradle
dependencies {
...
implementation project(':very-big-dependency')
但是当我运行build
gradle 时抱怨它找不到依赖项的子项目
A problem occurred evaluating script.
> Project with path ':sub-project' could not be found in project
由于项目在通过存储库解析时正确构建,这告诉我 gradle 在构建本地项目时的行为方式不同。
在本地克隆上调用自己的构建脚本时,依赖项的项目会正确构建,测试通过并且一切正常。
在我的项目中我还有什么需要告诉 gradle 的吗?我是否需要对本地依赖项做其他事情?每次我想测试它时都需要构建一个 jar 吗?
笔记:
- 没有 IDE 用于处理此问题
- 项目是通过创建的
gradle init
- 我尝试导入
:sub-project
,只是为了得到:
A problem occurred configuring project ':very-big-dependency'.
> Could not get unknown property 'compileJava' for project ':sub-project' of type org.gradle.api.Project.
- 我试过添加一个
flatDir
,repositories
但没有任何结果。
解决方案
你可以试试includeBuild
+ dependencySubstitution
in settings.gradle
。
// include local clone of the library
includeBuild('../../very-big-dependency') {
dependencySubstitution {
// substitute remote dependency with local module
substitute module('org.company:very-big-dependency') with project(':very-big-dependency')
}
}
有关详细信息,请参阅手册。
推荐阅读
- rust - 如何将 #[must_use] 应用于异步函数?
- javascript -
- html - CSS在悬停时显示错误的颜色
- arrays - Typescript:为数组类型扩展 IterableIterator 但返回一个简单类型
- c++ - 如何在 C++ 中创建对的优先级队列。弹出具有最小值的元素。默认弹出最大
- json - 放心 + 解析 JSON 文档失败
- kubernetes - How to run a command on PersistentVolume creation?
- c# - 取消 Graph 方法 GetAsync(CancellationToken t) 似乎不起作用
- java - 我的 MediatorLiveData 没有更新
- c++ - is_same 上的 Cppcheck 语法错误与模板