我正在尝试导入兄弟项目tom-commons
。我的项目budget_assistant
需要tom-commons
作为依赖项,它们都在同一个工作区文件夹中,而不是嵌套。它在Intellij IDEA和命令行中运行良好。但Eclipse似乎并不喜欢它。
我不认为它喜欢“..”相对路径,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) }
}
答案 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')
}