java—在eclipse中使用gradle的构建路径中的其他项目

bxgwgixi  于 2021-07-07  发布在  Java
关注(0)|答案(0)|浏览(249)

我有几个项目(比如说15个)。为了简单起见,让我们考虑每一个都像一个生成一个jar的库。因此,没有“根”项目。任何项目都可以依赖于任何其他项目(当然不需要循环依赖)。
开发人员只能处理一个项目,并且只能将其依赖项作为存储库中的jar。
但他们也可能需要修改其中一个依赖项目中的某些内容,并将其导入到eclipse中。
在这一点上,有没有任何方法来定义这个依赖关系,使它最终成为eclipse构建路径中的一个项目?我希望项目2使用项目1中的实时代码,而不是生成的jar。
在我看来,这似乎是一个非常基本的要求,但我找不到任何相关的,除了一个7岁的问题没有答案。
我见过一些或多或少能与gradle一起工作的解决方案,但是它们仍然不能正确地生成构建路径,而且都意味着一个根项目。没有根项目,处理项目1和项目2的人不必在ide中将项目3导入到15,这样gradle就可以正常工作。
一种在settings.gradle中在jar或项目之间切换的简单方法是理想的。
更新:我上次尝试的复合构建没有工作,但现在看起来更好了。仍然只在一个层次上起作用。
/项目a/build.gradle

plugins {
    id 'java-library'
}

dependencies {
}

/项目b/build.gradle

plugins {
    id 'java-library'
}

dependencies {
    implementation 'undefined:project-A'
}

/项目\u b/settings.gradle

rootProject.name = 'Project_B'

includeBuild('../Project_A'){
    dependencySubstitution{
        substitute module('undefined:project-A') with project(':')
    }
}

这似乎管用。我可以在依赖项中看到项目(与添加实际项目不同,但看起来它完成了任务)。
/项目\u c/build.gradle

plugins {
    id 'java-library'
}

dependencies {
    implementation 'undefined:project-A'
    implementation 'undefined:project-B'
}

/项目\u c/settings.gradle

rootProject.name = 'Project_C'

includeBuild('../Project_A'){
    dependencySubstitution{
        substitute module('undefined:project-A') with project(':')
    }
}

includeBuild('../Project_B'){
    dependencySubstitution{
        substitute module('undefined:project-B') with project(':')
    }
}

这不起作用,因为生成中的多个项目位于同一目录:c:\workspace\project\u a
如果我需要做a、b和c项目,这没关系。但是如果我只想使用项目c和a,而使用jar中的b呢?
这是最简单的版本,我有更多的项目和更复杂的依赖关系。
这是迄今为止我得到的最好的结果。
我还尝试在依赖项中使用“project()”而不是“implementation”,或者在settings.gradle中包含project。
我不确定使用“api”而不是“implementation”是否会有效果。
有没有一种方法可以将这个include编写成一个更复杂的函数,根据settings.gradle中的变量使用project或jar,而不必对projects中的每个includefild进行注解/取消注解,使其根据情况工作?
有没有一种方法仅仅通过项目的(唯一的)名称或坐标而不是路径来引用项目?
也许我需要写一个依赖解析程序?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题