【问题标题】:Replace gradle dependency with local clone用本地克隆替换 gradle 依赖
【发布时间】:2019-04-19 06:33:56
【问题描述】:

我有一个 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 中,但没有成功。

【问题讨论】:

  • 这个问题真的需要一个清晰有效的答案

标签: java gradle


【解决方案1】:

您可以在settings.gradle 中尝试includeBuild + dependencySubstitution

// 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 了解更多信息。

【讨论】:

  • 您的路径设置正确吗?您查看手册了解更多信息了吗?
  • 不得不把它改成with project(':')
猜你喜欢
  • 2022-08-16
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多