web-dev-qa-db-fra.com

Gradle Impossible de trouver la méthode compile () pour les arguments

j'ai un appli studio studio 1.5.1 Bonjour tout le monde. J'ai ajouté un sous-projet Gradle/Eclipse-Mars à. aucun autre fichier n'a été modifié, à l'exception de l'ajout de include: javalib à settings.gradle. ajout d'une dépendance du projet :

project(':app') {
    dependencies {
        compile project(':javalib') // line 23
    }
}

dans le fichier de construction de la racine et en exécutant gradle à partir de la ligne de commande, obtient:

  • Où: Créez le fichier 'D:\AndroidStudioProjects\AndroidMain\build.gradle': 23

  • Qu'est-ce qui a mal tourné: Un problème est survenu lors de l'évaluation du projet racine 'AndroidMain'.

    Impossible de trouver la méthode compile () pour les arguments [projet ': javalib'] sur org.grad le.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler_Decorated@46 3ca82f.

en ajoutant le plugin Java au fichier de construction racine n'a pas aidé.

je ne pense pas que ce soit au mauvais endroit .

le projet racine et le sous-projet ajouté ont tous deux le wrapper Gradle.

tout pointeur sera apprécié.

merci

edit: pour plus de clarté, le fichier de construction racine est:

// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.Android.tools.build:gradle:1.5.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        jcenter()
    }
    task hello << { task -> println "I'm $task.project.name" }
}

project(':app') {
    dependencies {
        //compile project(':javalib') // causes problems
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

et le fichier de construction de l'application est:

apply plugin: 'com.Android.application'

Android {
    compileSdkVersion 23
    buildToolsVersion "23.0.1"

    defaultConfig {
        applicationId "acme.androidmain"
        minSdkVersion 22
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    //compile project(':javalib') // use :javalib:jar?
    //testCompile project(':javalib')
    testCompile 'junit:junit:4.12'
    compile 'com.Android.support:appcompat-v7:23.1.1'
    compile 'com.Android.support:support-v4:23.1.1'
}

edit: le but de cet exercice est d’obtenir du code Java de base dans un projet Android. Actuellement, le code de base est un projet autonome Gradle/Eclispe. J'ai un lot dans le projet Android qui fait un gradle -p standaloneprojectdir/jar et copié le jar dans libs /.

je viens juste de penser qu'il y aurait un moyen plus facile autre que de publier le pot et de l'obtenir à partir d'un référentiel puisque tout cela est fait sur mon pc.

ce serait bien d'avoir tout le code en direct et juste faire un build :(

modifier: selon la suggestion de RaGe , voici un projet de studio Android vierge et un projet Vierge Gradle/Eclipse . aucune édition n'a été faite sur ces fichiers. votre mission si vous choisissez de l’accepter, c’est d’obtenir que l’application Android accède facilement aux classes du projet Java (par exemple, nouvelle bibliothèque (); dans MainActivity.onCreate () sera compilé et exécuté). Je me fiche de l'endroit où vit le projet Java. idéalement, les deux sources seraient live dans les deux idées.

tentant cela échoue aussi. dit:> Impossible de trouver: virginjavaproject, mais le répertoire existe.

edit: ce qui a réellement fonctionné, c’est la demande d’aide de RaGe au projet Android vierge .

11
Ray Tayek

Tu as déjà 

compile project(':javalib') 

dans votre projet :app, vous n'avez pas à injecter également la dépendance à partir de votre build.gradle racine. Si vous voulez toujours le faire à partir de la racine build.gradle, la bonne façon de le faire est la suivante:

configure(':app') {
    dependencies {
        compile project(':javalib') // causes problems - NOT ANYMORE!
    }
}

le vierge studio Android tête est ce qui a fonctionné.

4
RaGe

Nous avons 2 fichiers nommés "build.gradle" . Assurez-vous d'avoir copié votre "code de compilation" dans le fichier build.gradle qui se trouve dans "app" dossier

1
Mahdi

Comme indiqué par @ peter-niederwieser :

Le script de génération mélange des dépendances de compilation (c'est-à-dire des dépendances de la construction elle-même; généralement, cela signifie des plugins Gradle) avec des dépendances régulières (c'est-à-dire des dépendances du code à compiler/exécuter). Ces derniers doivent aller dans les dépendances {...}, pas dans les buildscript {dépendances {...}}. Tout, sauf les dépendances classpath, sont des dépendances régulières.

Regardez aussi ceci: Impossible de trouver la méthode compile () pour les arguments Gradle .

0
TejjD

Il suffit de coller ceci sur build.gradle (Projet: "Le nom de votre projet")

 // Top-level build file where you can add configuration options common to all sub-projects/modules.

  buildscript {
    repositories {
        jcenter()
}
   dependencies {
    classpath 'com.Android.tools.build:gradle:2.1.2'

    // NOTE: Do not place your application dependencies here; they belong
    // in the individual module build.gradle files
     }
 }

   allprojects {
repositories {
    jcenter()
   }
}

task clean(type: Delete) {
delete rootProject.buildDir
}
0
ebin Francis

J'ai eu ce problème mais avec ma propre bibliothèque. La manière de compiler correctement était:

compile project(path: ':MyLib')
0
Ari