2013-05-22 15 views
19

Przy użyciu IntelliJ do otwarcia pliku build.gradle, w oknie "Importuj projekt z Gradle", wykluczone pierwiastki są wstępnie wypełniane katalogami .gradle i build.Jak określić IntelliJ Exclude Katalogi za pomocą Gradle?

Jak określić, które katalogi należy wyłączyć (lub nie wyłączyć) w pliku build.gradle?

W szczególności używam wtyczki bufora protokołu, która umieszcza wygenerowane źródła w katalogu /build/generated-sources/. Jeśli katalog build zostanie wykluczony, moja klasa źródłowa nie zobaczy wygenerowanych klas.

Szczegóły: IntelliJ 12.1.3, Gradle 1.4

+0

Dla osób używających wbudowanej funkcji importowania gradle w IDEA (tj. Nie wtyczki gradle) - przejdź do https://youtrack.jetbrains.com/issue/IDEA-104847 – Shorn

Odpowiedz

21

Jak pokazano w Gradle Build Language Reference można skonfigurować właściwość idea.module.excludeDirs, który jest typu List<File>. Najwyraźniej IDEA nie obsługuje w tym podkatalogów wykluczonych katalogów, więc musisz wykluczyć wszystkie rodzeństwo z build/generated-sources. Na przykład:

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

Jeśli obsługiwany przez wtyczkę Protocol Buffer, może łatwiej będzie umieścić generowane źródła do miejsca poza build, i uczynić to miejsce znane zadania (np clean.delete "generated-sources") clean.

+0

Niestety katalog źródeł generowanych jest zakodowane na stałe w wtyczce. –

+1

Nie używam wtyczki Idea dla gradle, otwieram projekt przy użyciu natywnej funkcjonalności IntelliJ 12. Czy to działa, gdy otwieram to w ten sposób? –

+0

JetGradle najwyraźniej patrzy na to przy tworzeniu projektu. –

11

Inne rozwiązanie. Współpracuje z Idei 13.

idea.module { 
    excludeDirs -= file(buildDir) //1 
    buildDir.listFiles({d,f->f != 'generated-sources'} as FilenameFilter).each {excludeDirs += it}} //2 
  1. Usuń buildDir z excludeDirs.
  2. Wyklucz każde dziecko buildDir (z wyjątkiem generating-source).
+0

Dzięki, zawsze dobrze mieć alternatywne podejścia. –

+0

Myślę, że to zadziała tylko wtedy, gdy uruchomisz zadanie 'idea' po wygenerowaniu plików w" build "- a nie na czystym kasie. – Ramon

+0

To tylko zarządzanie zawartymi/wykluczonymi katalogami w układzie projektu. Idea nie zapisuje układu mojego projektu opartego na gradle. A po ponownym uruchomieniu, 'buildDir' ponownie zostanie wyłączone z układu. I te kilka linii to naprawia. –

Powiązane problemy