У меня есть отличный проект в IntelliJ IDEA, который использует logback.groovy
. Он находится в src/main/resources
, так что он попадает в путь к классам проекта, но IDEA компилирует его в logback.class
. Logback ожидает, что это будет в формате .groovy
, поэтому этого не будет. Есть ли способ предотвратить такое поведение? Я просто хочу logback.groovy
в моем пути к классам для запуска модульных тестов и отладки webapp.Есть ли способ предотвратить IntelliJ IDEA от компиляции logback.groovy?
ответ
Я предполагаю, что/src/main/resources отмечен в IDEA как исходный корень? Это в значительной степени явно говорит IDEA «материал в этом каталоге - это исходные файлы».
Вы можете попробовать добавить файл в/Settings/Project Settings/Compiler/Excludes - но это, вероятно, означает, что ваш файл не будет скопирован на ваш путь вывода (и, таким образом, он не будет находиться в пути класса runtime, поэтому logback не увидит его).
Мое личное решение заключается в том, что мой logback.groovy находится за пределами моего/src-дерева - я считаю его конфигурацией, а не файлом source/resource. Мой собственный каталог конфигурации затем добавляется в путь к классам времени выполнения напрямую через/Структура/Модули проекта/Зависимости (помеченные как область выполнения).
Моим решением было изменить артефакт, чтобы явно включить logback.groovy
в каталог WEB-INF/classes
. Это не идеально, поскольку этот файл может ссылаться только на абсолютный путь, а не на файл проекта, поэтому любые предложения по-прежнему приветствуются.
IDEA 13 теперь поддерживает новые типы назначений каталогов под вашим корнем контента. В предыдущих версиях IDEA поддерживала только каталоги маркировки как «источники» или «тесты».
Таким образом, новый правильный ответ состоит в том, чтобы пометить src/main/resources каталог как папку ресурсов вашего корня контента. Помечая содержимое каталога как «ресурсы», вы сообщаете IDEA, что содержимое не является исходным кодом, но должно быть доступно в пути к классам во время выполнения.
[Добавлено как отдельный ответ, потому что первый по-прежнему потенциально полезно, если ваш файл застрял под деревом исходного кода по каким-либо причинам -. Не стесняйтесь, чтобы объединить его с другой ответ, если это более уместно]
Я поместил logback.groovy в src/main/resources и добавил его к шаблонам ресурсов в настройках компилятора IDEA (ctrl + alt + s; Compiler> Шаблоны ресурсов). И это работает :)
Если вы используете плагин GMaven вместо базового Ant, вы можете следовать [этому ответу] (http://stackoverflow.com/a/6032601/2051952). – dmahapatro
Спасибо за предложение, но я не использую ни один из них :-). Я использую gradle, но это выходит за рамки этой проблемы, поскольку все работает при построении с помощью gradle. В основном я хочу, чтобы содержимое 'src/main/resources' в пути к классам было просто скопировано, а не скомпилировано каким-либо образом. – Joe
Если все работает при построении с помощью градиента, то IntelliJ должен использовать 'build.gradle' для выполнения того же процесса во время компиляции, правильно? Я что-то пропустил? – dmahapatro