java - 用本地克隆替换 gradle 依赖项

标签 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 + dependencySubstitutionsettings.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了解更多信息。

    关于java - 用本地克隆替换 gradle 依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55757586/

    相关文章:

    java - Appcelerator Titan 为我的 Android 项目构建 java 文件时崩溃

    java - 这是循环死锁还是循环等待?

    android - 减少 android studio 3.2.1 中的构建时间

    gradle - 包括来自存储库依赖项的备用jar

    android - Gradle 多项目 android 库设置与 maven 本地

    java - Autowiring 的 JavaMailSender 对象抛出空指针异常(RestController 类除外)

    Java和简单的json

    java - 将 "this"关键字与构造函数一起使用 - "this"如何引用 Point 对象?

    gradle - gradle如何排除重复的资源文件?

    Android Gradle lintVital OutofMemoryError 导致构建崩溃