2014-08-27 3 views
1

J'essayais d'exécuter quelques commandes graduelles qui incluaient la spécification d'une configuration, mais recevait des erreurs indiquant "Configuration avec nom 'tous les noms que j'ai essayés' ne trouvaient pas." Ceci est généralement causé par un fichier build.gradle manquant dans l'une des dépendances. J'ai trouvé assez que le projet incriminé:Pourquoi Gradle pense que mon répertoire 'libraries' est un projet?

Evaluating project ':libraries' using empty build file. 

Mais les bibliothèques n'est pas en fait un projet, il est juste le dossier qui contient toutes les dépendances du projet. Le répertoire des bibliothèques est sur le même niveau que mon projet principal, et mon fichier est settings.gradle:

include ':libraries:some-sdk' 
include ':libraries:another-sdk' 

Et mes dépendances dans mon build.gradle sont:

dependencies { 
    compile project(':libraries:some-sdk') 
    compile project(':libraries:another-sdk') 
    compile files('libs/some-library.jar') 
    compile 'some-maven-repo:some-artifact:X.X.X' 
} 

J'ai également reproduit la problème en utilisant la démo multiprojet de commonsware: https://github.com/commonsguy/cw-omnibus/tree/master/Gradle/HelloMultiProject

Qu'est-ce qui me manque ici?

Répondre

3

Cela est dû à la syntaxe que vous utilisez. Gradle interprète :libraries comme un projet, qui est le parent de vos projets 'sdk'. Si vous souhaitez que ces deux projets tombent directement sous le projet racine, mais existent toujours dans un répertoire enfant, vous pouvez spécifier explicitement le projectDir.

Changer votre settings.gradle ressembler à:

def String[] modules = ['some-sdk', 'another-sdk'] 

include modules 

modules.each { name -> 
    def p = findProject(":${name}") 
    p.projectDir = new File("libraries/${name}") 
} 
Questions connexes