web-dev-qa-db-fra.com

Comment ajouter -Xlint: décoché à mon projet basé sur Android Gradle?

J'ai essayé d'ajouter ce qui suit au fichier racine build.gradle:

subprojects {
    gradle.projectsEvaluated {
        tasks.withType(Compile) {
            options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"
        }
    }
}

Mais je reçois ceci:

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':Libraries:ActionBarSherlock:compileRelease'.
> invalid flag: -Xlint:unchecked -Xlint:deprecation

Qu'est-ce que je fais mal?

112
Ricardo Amaral

C'est ce qui a fonctionné pour moi: (Dans le build.gradle de votre projet)

allprojects {
    gradle.projectsEvaluated {
        tasks.withType(JavaCompile) {
            options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
        }
    }
}
200
Felipe Lima

Avertissement: Même si cette réponse a plus de 10 votes positifs, elle ne résout pas le problème dans le contexte d'un projet Android. Cependant, Google trouve cette question dans le contexte de projets non-Android. Ainsi, je garde cette réponse pour ces gars.

Selon JavaCompile , la solution suivante semble être la solution:

compileJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

Si vous voulez qu'il en soit ainsi pour les cas de test, utilisez compileTestJava

compileTestJava {
    options.encoding = 'UTF-8'
    options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
46
koppor

J'avais un argument de compilation différent à définir. Ce qui suit fonctionne pour moi.

gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
        options.compilerArgs << "-XDignore.symbol.file"
        options.bootClasspath = "$System.env.Java_HOME/jre/lib/rt.jar"
    }
}

Vous devez définir le chemin d'accès aux classes de démarrage pour JDK 1.8 et versions supérieures, par exemple pour les classes Unsafe et Sun.swing. *. Corrigez le code source spécialement pour ce dernier, car Jigsaw Java 9, la nouvelle implémentation de la modularité du JRE, rendra ces méthodes inaccessibles (!). Considérez-vous prévenu.

3
peter_pilgrim

Mettez ceci dans votre build.gradle fichier (répertoire racine):

allprojects { // Projects
   gradle.projectsEvaluated {
      tasks.withType(JavaCompile) {
         options.encoding = 'UTF-8'
         options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
      }
   }
}
1
Yousha Aleayoub

Je ne suis pas sûr que le problème concerne l'utilisation du paramètre de configuration Gradle subprojects, mais la syntaxe que vous avez utilisée:

options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"

Cela a fonctionné pour moi:

subprojects {
  gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
      options.compilerArgs += [
        '-Xlint:unchecked', // Shows information about unchecked or unsafe operations.
        '-Xlint:deprecation', // Shows information about deprecated members.
      ]
    }
  }
}

ou

subprojects {
  gradle.projectsEvaluated {
    tasks.withType(JavaCompile) {
      options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
    }
  }
}

Si vous voulez seulement ajouter une option (vous en ajouterez normalement plus), dans la tâche JavaCompile, il vous suffit d'ajouter:

options.compilerArgs << "-Xlint:unchecked"

Vous pouvez trouver plus d’informations sur Lint here et here .

0
cesards