Gradle和Eclipse- settings.gradle中不支持“..:DependentProject”?

时间:2015-05-01 16:05:17

标签: java eclipse maven gradle

我正在尝试导入兄弟项目tom-commons。我的项目budget_assistant需要tom-commons作为依赖项,它们都在同一个工作区文件夹中,而不是嵌套。它在Intellij IDEA和命令行中运行良好。但Eclipse似乎并不喜欢它。

enter image description here

我不认为它喜欢“..”相对路径,Eclipse必须认为它是嵌套在我的项目下的文件夹。有没有办法将此依赖关系解析为绝对URL?

这是我的settings.gradle

include ':..:tom-commons'

这是我的build.gradle

repositories {
    mavenCentral()
}

apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'

dependencies {
    compile group: 'com.google.guava', name: 'guava', version: '18.0'
    compile 'org.xerial:sqlite-jdbc:3.8.7'
    compile 'net.jcip:jcip-annotations:1.0'
    compile 'joda-time:joda-time:2.7'
    compile project(':..:tom-commons')
}

sourceSets {
    main.java.srcDir "src/main/java"
}

jar { 
    from configurations.compile.collect { entry -> zipTree(entry) }
}

1 个答案:

答案 0 :(得分:1)

问题在于您隐式创建了一个名为"的项目:.." Gradle工具API直接将其作为项目模型反映在" EclipseProject"谁的名字是" .."。但。 " .."不是Eclipse工作区中导致异常的项目的有效名称。

从某种意义上说,我仍然认为这是一个错误。因为我们可以将Gradle工具API归咎于返回非法的东西;以及不处理这个'垃圾的工具数据更优雅。

但实际上,我认为你不想要":.."项目。相反,你只需要一个&#34 ;: ChildA"和":ChildB"项目是"的直接孩子:" (就项目层次结构而言),但就它们驻留在磁盘上的位置而言,它们都是兄弟姐妹。

使用" includeFlat'这种布局最容易实现。 (请参阅settings.gradle中的Gradle docs)。

在settings.gradle中:

includeFlat 'ChildA','ChildB'

在build.gradle中,将孩子称为":ChildA"和":ChildB" e.g:

dependencies {
    compile project(':ChildA')
    compile project(':ChildB')
}

查看我的changes to your sample on github