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

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

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

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

и

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

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

Ответ 1

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

file('build/generated')

к

file("$buildDir/generated")

Я использую здесь рабочий код:

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

Ответ 2

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

clean {
    delete "generated"
}

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

Ответ 3

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

apply plugin: 'idea'

idea {
    module {
        excludeDirs -= buildDir
    }
}

Ответ 4

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

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

или

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

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

something означает технологию, например: jpamodel, cxf и т.д.

Ответ 5

Первый метод

['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
}