Как включить каталог сборки в качестве исходного каталога в intellij при компиляции с помощью gradle

по умолчанию плагин gradle idea помечает папку сборки как исключенную. Как включить эту папку в качестве исходной? (или избегайте его исключения, как это кажется по умолчанию...)

в моей сборке модуля.файл gradle я попробовал с двумя следующими конфигурациями:

idea {
    module {
        excludeDirs -= file('build/generated')
    }
}

и:

idea {
    module {
        sourceDirs += file('build/generated')
    }
}

С этими двумя конфигурациями папка build / generated всегда появляется как исключенные папки в IntelliJ после компиляции. В IntelliJ мне всегда нужно идти в "настройки проекта", "модули", а затем во вкладке "Источники", чтобы удалить папку сборки из исключенных папок и запустить мой проект.

5 ответов


изменить код от

file('build/generated')

to

file("$buildDir/generated")

Я использую вот такой код:

ext {
    cxfOutputDir = file("$buildDir/generated-sources/cxf")
}
idea.module {
    excludeDirs -= file("$buildDir")
    sourceDirs += cxfOutputDir
}

вы определенно хотите build каталог, который будет исключен в IntelliJ. В противном случае индексация займет больше времени, вы получите дубликаты в поиске и т. д. Поскольку IntelliJ не поддерживает включение подкаталога исключенного каталога, мое предпочтительное решение-поместить сгенерированные файлы в каталог вне build. Например, вы можете поместить их в generated (относительно каталога проекта) и настройте clean задач таким образом:

clean {
    delete "generated"
}

другой вариант чтобы исключить все подкаталоги build за исключением build/generated. Однако с учетом того, что каталоги, подлежащие исключению, должны быть перечислены в явном виде, это требует дополнительных усилий и сопряжено с риском их хрупкости. (Вы не хотите, чтобы это ломалось каждый раз, когда плагин/задача/и т. д. добавляет новый подкаталог.)


это работает для меня!

apply plugin: 'idea'

idea {
    module {
        excludeDirs -= buildDir
    }
}

используйте стандартное расположение для сгенерированного исходного кода-поддерживается без дополнительной конфигурации:

${project.buildDir}/generated-sources/something

или

${project.buildDir}/generated-test-sources/something

для сгенерированного кода только для тестов.

something технологии, например: jpamodel, cxf etc.


Первый способ

['integration/src/generated'].each {
            idea.module.sourceDirs += file(it)
            sourceSets.main.java.srcDir it
            compileJava.source file(it)
    }

второй способ

project.ext {
        jaxbTargetDir = file("src/generated/java")
}

idea.module {
        excludeDirs -= file("$buildDir")
        sourceDirs += jaxbTargetDir
}