具有相同名称的Gradle子子项目不适用于eclipse

Knu*_*sen 5 eclipse gradle

我有以下结构

root
|- foo    
|  |- implementation
|  |   \- build.gradle
|  \- interface
|      \- build.gradle
|
|- bar
|  |- implementation
|  |   \- build.gradle
|  \- interface
|      \- build.gradle
|
|- build.gradle
\- settings.gradle
Run Code Online (Sandbox Code Playgroud)

在settings.gradle中,我有以下内容:

include ':foo:implementation', ':foo:interface'
include ':bar:implementation', ':bar:interface'
Run Code Online (Sandbox Code Playgroud)

在我的build.gradle根文件夹中,我将所有这些作为依赖项

dependencies { 
    compile project(':foo:implementation')
    compile project(':foo:interface')
    compile project(':bar:implementation')
    compile project(':bar:interface')
}
Run Code Online (Sandbox Code Playgroud)

Eclipse需要每个项目都有不同的名称.默认情况下,Gradle使用项目名称在eclipse中命名.因此,eclipse无法区分':foo:implementation'和':bar:implementation:',因为它们都将在Eclipse中命名为'implementation'.在我看来,这应该可以通过将eclipse项目名称设置为更具体的东西来解决,例如:

allprojects {
    eclipse.project {
        if (project == rootProject) {
            name = rootProject.name
        } else {
            name = rootProject.name + project.path.replace(":", "-")
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有了这个,我得到了独特的项目名称,但是当我查看.classpath xml时,只有一个实现项目和一个接口项目存在.

任何的想法?

roo*_*msg 1

到目前为止,我只处理过“单目录级别”多项目;对于这种情况,有几种方法可以解决它:

  • 如果您只想针对 Eclipse 修复此问题并且使用“导入 gradle 项目”向导,则可能需要设置“使用分层项目名称”复选框。不确定它在您的情况下表现如何(双目录级别)
  • 下一篇希望可以帮助您:如何在 gradle 中重命名项目而不是使用文件夹名称?。可能需要对您的双目录级别进行一些额外的调查。顺便说一句,它还将更改 gradle 项目名称
  • 事实上,Eclipse 插件还提供了更改项目名称的方法,尽管我自己没有使用过......