2013-05-22 29 views
19

Utilizzando IntelliJ per aprire un file build.gradle, nella finestra "Importa progetto da Gradle", le "Routine escluse" sono pre-compilate con le directory .gradle e build.Come specificare IntelliJ Escludi directory usando Gradle?

Come specificare quali directory devono essere escluse (o non escluse) nel file build.gradle?

In particolare, utilizzo un plug-in del buffer di protocollo che colloca le origini generate nella directory /build/generated-sources/. Se la directory build è esclusa, la mia classe di origine non vede le classi generate.

Dettagli: IntelliJ 12.1.3, Gradle 1.4

+0

Per le persone che utilizzano il costruito nel funzionalità di importazione Gradle in IDEA (cioè non il plugin Gradle) - andare a votare per https://youtrack.jetbrains.com/issue/IDEA-104847 – Shorn

risposta

21

Come mostrato nella Gradle Build Language Reference, è possibile configurare la proprietà idea.module.excludeDirs, che è di tipo List<File>. Apparentemente IDEA non supporta le sottodirectory di directory escluse, quindi dovrai escludere tutti i fratelli di . Ad esempio:

idea { 
    module { 
     excludeDirs = [file(".gradle")] 
     ["classes", "docs", "dependency-cache", "libs", "reports", "resources", "test-results", "tmp"].each { 
      excludeDirs << file("$buildDir/$it") 
     } 
    } 
} 

Se supportato dal plugin Protocol Buffer, può essere più facile da mettere le sorgenti generati in un luogo esterno build, e fanno si che luogo noto al clean compito (ad esempio clean.delete "generated-sources").

+0

Purtroppo la directory-sources generati è hard-coded nel plugin. –

+1

Non sto usando il plugin Idea per gradle, sto aprendo il progetto usando la funzionalità nativa di IntelliJ 12. Funzionerà quando lo apro in questo modo? –

+0

A quanto pare, JetGradle considera questo aspetto per la creazione del progetto. –

11

Un'altra soluzione. Funziona con Idea 13.

idea.module { 
    excludeDirs -= file(buildDir) //1 
    buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2 
  1. Rimuovere buildDir da excludeDirs.
  2. Escludere ogni bambino buildDir (eccetto generating-source).
+0

Grazie, sempre bene avere approcci alternativi. –

+0

Penso che funzionerà solo se esegui il task 'idea' dopo aver generato i file sotto' build' - non in un checkout pulito. – Ramon

+0

Questa è solo la gestione delle directory incluse/escluse nel layout del progetto. L'idea non salva il layout del mio progetto basato su gradle. E dopo che si riavvia, 'buildDir' viene nuovamente escluso dal layout. E queste poche righe lo risolvono. –

Problemi correlati