用本地克隆替换gradle依赖项

时间:2019-04-19 06:33:56

标签: 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吗?我是否需要对本地依赖项做其他任何事情?每次测试时都需要建立一个罐子吗?

注释:

  • 没有使用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中,但这无济于事。

1 个答案:

答案 0 :(得分:1)

您可以在includeBuild中尝试dependencySubstitution + 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')
    }
}

有关更多信息,请参见manual