J'ai essayé de trouver les paramètres corrects pour le traitement des annotations d'IntelliJ afin qu'il puisse coexister avec le processus de construction de Gradle.
Chaque fois que je construis à partir d'IntelliJ, je ne peux pas le faire reconnaître les sources générées à partir de gradle-apt-plugin .
Mes exigences pour mon projet sont:
Voici les étapes à suivre pour un MCVE afin de reproduire le problème avec IntelliJ 2017.2.4 et Gradle 3.5:
plugins
suivant:plugins {
id 'Java'
id 'net.ltgt.apt' version '0.12'
}
dependencies
suivantdependencies {
compileOnly 'com.google.auto.value:auto-value:1.5'
apt 'com.google.auto.value:auto-value:1.5'
}
@AutoValue
public abstract class GeneratedSourcesTest {
static GeneratedSourcesTest create(String field) {
return new AutoValue_GeneratedSourcesTest(field);
}
public abstract String field();
}
GeneratedSourcesTest
, sur la méthode de la fabrique statique, tout se compile bien mais j'obtiens l'erreur:cannot resolve symbol ‘AutoValue_GeneratedSourcesTest’
Comment puis-je rendre la classe AutoValue_GeneratedSourcesTest
accessible depuis IntelliJ?
Après avoir importé votre projet Gradle sous IDEA, procédez comme suit:
Définissez la configuration du traitement des annotations comme suit:
Menu Exécuter: Build - Build Project
Cliquez avec le bouton droit de la souris sur chaque nouveau dossier généréet sélectionnez: Marquer le répertoire comme - Source des sources généréesafin qu'il soit marqué comme suit:
/generated
au projet .gitignorefile) du projetC’est une configuration minimale viable qui fournira un support complet de IDE pour les classes générées. L’inconvénient est que chaque fois que le projet Gradle est réimporté, les dossiers générésdoivent être marqués comme Generated Sources Rootagain. Cela pourrait peut-être être amélioré en ajoutant ces chemins en tant que jeux sources sous build.gradle.
Il arrive parfois que les modules IDEA perdent leur chemin de sortie du compilateurparamètres en raison de ce qui précède. Il suffit de le rétablir dans leurs dossiers par défaut.
Les réponses sont (devraient être) dans le README pour le gradle-apt-plugin: https://github.com/tbroyer/gradle-apt-plugin
À savoir, appliquez également le plugin net.ltgt.apt-idea
.
Au fait, je recommande de déléguer des actions de construction/exécution à Gradle dans IntelliJ. Bien sûr, c'est un peu plus lent, mais ne nécessite aucune configuration dans le IDE et fonctionne de manière fiable. Cela dit, cela devrait également marcher si vous ne le faites pas.
Ayez juste votre build.gradle avec ceux-ci et ça marche très bien, pas besoin de toucher à intellij, à la source, etc.
plugins {
id 'Java'
id "net.ltgt.apt" version "0.20"
}
apply plugin: 'idea'
apply plugin: 'net.ltgt.apt-idea'
group 'abc'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
compile "com.google.auto.value:auto-value-annotations:1.6.2"
annotationProcessor "com.google.auto.value:auto-value:1.6.2"
}