Java 子项目的依赖项不能为依赖项目解析(但在构建子项目本身时解析)

Java 子项目的依赖项不能为依赖项目解析(但在构建子项目本身时解析),java,gradle,Java,Gradle,按照中的说明,我有一个多项目渐变设置,如下所示: rootFolder build.gradle settings.gradle EMS build.gradle cloud-sdk build.gradle // file: EMS/build.gradle apply plugin: 'java' dependencies { compile project(':cloud-sdk') } CloudSDK项目依赖

按照中的说明,我有一个多项目渐变设置,如下所示:

rootFolder
    build.gradle
    settings.gradle
    EMS
        build.gradle
    cloud-sdk
        build.gradle
// file: EMS/build.gradle
apply plugin: 'java'

dependencies {
    compile project(':cloud-sdk')
}
CloudSDK
项目依赖于几个JAR,部分通过maven解决,部分通过locale JAR解决:

// file: cloud-sdk/build.gradle
apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    compile group:'org.apache.tomcat', name:'tomcat-catalina', version:'7.0.47'
    compile group:'org.mongodb', name:'mongo-java-driver', version:'2.11.3'
    compile group:'com.google.code.gson', name:'gson', version:'2.2.4'
    compile group:'com.thoughtworks.xstream', name:'xstream', version:'1.4.6'
    compile fileTree(dir:'lib/', include:'JavaPNS_2.2.jar')
    compile fileTree(dir:'lib/', include:'gcm-server.jar')
}
EMS
-项目依赖于云sdk,我认为应该这样定义:

rootFolder
    build.gradle
    settings.gradle
    EMS
        build.gradle
    cloud-sdk
        build.gradle
// file: EMS/build.gradle
apply plugin: 'java'

dependencies {
    compile project(':cloud-sdk')
}
此外,我的root build.gradle和settings.gradle文件如下所示:

rootFolder
    build.gradle
    settings.gradle
    EMS
        build.gradle
    cloud-sdk
        build.gradle
// file: EMS/build.gradle
apply plugin: 'java'

dependencies {
    compile project(':cloud-sdk')
}
格雷德尔酒店

include 'cloud-sdk', 'EMS'
格雷德尔先生

apply plugin: 'java'

dependencies {
    compile project(':EMS')
}
在这种情况下,我不确定是否还需要依赖项
编译项目(“:cloud sdk”)
。我尝试了这两种版本,但由于在这两种情况下都会收到相同的错误消息,所以我认为这并不重要

当我尝试通过
gradle build
从根文件夹运行脚本时,会收到以下错误消息:

Could not resolve all dependencies for configuration ':EMS:compile'.
> Could not find org.apache.tomcat:tomcat-catalina:7.0.47.
  Required by:
    rootFolder:EMS:unspecified > rootFolder:cloud-sdk:unspecified
> Could not find org.mongodb:mongo-java-driver:2.11.3.
  Required by:
    rootFolder:EMS > rootFolder:cloud-sdk:unspecified
> Could not find com.google.code.gson:gson:2.2.4.
  Required by:
    rootFolder:EMS > rootFolder:cloud-sdk:unspecified
> Could not find com.thoughtworks.xstream:xstream:1.4.6.
  Required by:
    rootFolder:EMS:unspecified > rootFolder:cloud-sdk:unspecified
但是当我通过
gradle-cloud-sdk:build
gradle下载所需的jar并毫无问题地构建云sdk项目时

但即使我在那之后尝试
gradlebuild
,尽管gradle注意到
cloudsdk
项目已经是最新的,但它抱怨缺少依赖项


为什么呢?它已经下载了它们,因此它们应该可以在某处使用,即使
云sdk
不知道它需要什么以及如何获取它。我错过了什么?我是否需要以其他方式指定依赖项

好的,原来gradle无法在
EMS
项目中获取依赖项,因为我没有指定要从中获取它们的任何存储库。我认为这是不必要的,因为我需要它来获取的唯一依赖项是在
cloudsdk
项目中声明的,并且该项目确实提供了一个存储库


这基本上就是我问题的解决方案,但如果有人能向我解释为什么有必要再次指定存储库,或者解释为什么它是gradle中应该修复的bug,我会接受这个答案,因为它会回答“为什么”,而不仅仅是“我如何让它工作”

您在EMS项目的存储库部分插入了什么?我刚刚从
CloudSDK
项目中复制了它:
repositories{mavenCentral()}
我也忘了我的。谢谢