2014-01-08 3 views
4

После объяснения в "Building and Testing with Gradle" у меня есть Мультипроекта Gradle установка, как это:Зависимости подпроекта не может быть разрешены для зависимого проекта (но разрешается при строительстве самого подпроекта)

rootFolder 
    build.gradle 
    settings.gradle 
    EMS 
     build.gradle 
    cloud-sdk 
     build.gradle 

Проект cloud-sdk зависит от нескольких банок , частично решено с помощью мавенно частично с помощью локали банки:

// 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 -project зависит от облачной SDK, который я думаю должно быть определен следующим образом:

// file: EMS/build.gradle 
apply plugin: 'java' 

dependencies { 
    compile project(':cloud-sdk') 
} 

Кроме того, мой корень build.gradle и settings.gradle файлы выглядеть следующим образом:

settings.gradle

include 'cloud-sdk', 'EMS' 

build.gradle

apply plugin: 'java' 

dependencies { 
    compile project(':EMS') 
} 

В этом случае Я не уверен, нужна ли мне также зависимость compile project (':cloud-sdk'). Я пробовал обе версии, но так как я получаю то же сообщение об ошибке в обоих случаях, я предполагаю, что это не имеет значения.

Когда я пытаюсь запустить скрипт из RootFolder через 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 

Но когда я просто построить проект облака SDk через gradle cloud-sdk:build Gradle загружает необходимые банки и строит проект без проблем.

Но даже если я попробую gradle build, хотя град отмечает, что проект cloud-sdk уже обновлен, он жалуется на недостающие зависимости.

Почему? Он уже загрузил их, чтобы они были доступны где-то, и даже если не cloud-sdk знает, что ему нужно, и как его получить. Что мне не хватает? Нужно ли мне указывать зависимости каким-то другим способом?

ответ

1

Хорошо, получается, что gradle не смог получить зависимости в проекте EMS, так как я не указал никаких репозиториев для их извлечения. Я предположил, что это было бы необязательно, так как только единственные зависимости, которые мне были нужны для извлечения, были объявлены в проекте cloud-sdk и , что действительно предоставил репозиторий.

В основном это решение моей проблемы, но если кто-нибудь может мне объяснить, почему это необходимо указать хранилище снова или объяснить, почему это ошибка в Gradle, которые должны быть исправлены, я признаю, что ответьте, поскольку это ответит «почему», а не только «как мне заставить его работать».

+0

Что вы вложили в раздел хранилищ проекта EMS? – confile

+0

Я просто скопировал его из проекта 'cloud-sdk':' repositories {mavenCentral()} ' –

+0

Я тоже забыл. благодаря – Ethan

Смежные вопросы