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

时间:2014-10-16 14:47:11

标签: eclipse gradle

我有以下结构

root
|- foo    
|  |- implementation
|  |   \- build.gradle
|  \- interface
|      \- build.gradle
|
|- bar
|  |- implementation
|  |   \- build.gradle
|  \- interface
|      \- build.gradle
|
|- build.gradle
\- settings.gradle
在settings.gradle中我有以下内容:

include ':foo:implementation', ':foo:interface'
include ':bar:implementation', ':bar:interface'

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

dependencies { 
    compile project(':foo:implementation')
    compile project(':foo:interface')
    compile project(':bar:implementation')
    compile project(':bar:interface')
}

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

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

到目前为止,我一直只使用"单一目录级别"多项目;对于这种情况,有几种方法可以解决它:

  • 如果您只想修复eclipse,并且您正在使用"导入gradle项目"向导,您可能想要设置"使用分层项目名称"复选框。不确定它在你的情况下的表现(双层级别)
  • 下一个可以帮助你:how to rename the project in gradle instead of using folder name?。可能需要对你的双dir级别进行一些额外的调查。它还将更改gradle项目名称BTW
  • 事实上,eclipse plugin也提供了更改项目名称的方法,但我自己并没有使用它......

答案 1 :(得分:0)

可悲的是,这是Gradle的错误;看到打开的GitHub issue

答案 2 :(得分:0)

一种解决方法是为子项目使用不同的组:

// root/foo/build.gradle
subprojects {
    group = 'org.example.foo'
}

// root/bar/build.gradle
subprojects {
    group = 'org.example.bar'
}