2013-07-09 1 views
3

У меня есть отличный проект в IntelliJ IDEA, который использует logback.groovy. Он находится в src/main/resources, так что он попадает в путь к классам проекта, но IDEA компилирует его в logback.class. Logback ожидает, что это будет в формате .groovy, поэтому этого не будет. Есть ли способ предотвратить такое поведение? Я просто хочу logback.groovy в моем пути к классам для запуска модульных тестов и отладки webapp.Есть ли способ предотвратить IntelliJ IDEA от компиляции logback.groovy?

+0

Если вы используете плагин GMaven вместо базового Ant, вы можете следовать [этому ответу] (http://stackoverflow.com/a/6032601/2051952). – dmahapatro

+0

Спасибо за предложение, но я не использую ни один из них :-). Я использую gradle, но это выходит за рамки этой проблемы, поскольку все работает при построении с помощью gradle. В основном я хочу, чтобы содержимое 'src/main/resources' в пути к классам было просто скопировано, а не скомпилировано каким-либо образом. – Joe

+0

Если все работает при построении с помощью градиента, то IntelliJ должен использовать 'build.gradle' для выполнения того же процесса во время компиляции, правильно? Я что-то пропустил? – dmahapatro

ответ

2

Я предполагаю, что/src/main/resources отмечен в IDEA как исходный корень? Это в значительной степени явно говорит IDEA «материал в этом каталоге - это исходные файлы».

Вы можете попробовать добавить файл в/Settings/Project Settings/Compiler/Excludes - но это, вероятно, означает, что ваш файл не будет скопирован на ваш путь вывода (и, таким образом, он не будет находиться в пути класса runtime, поэтому logback не увидит его).

Мое личное решение заключается в том, что мой logback.groovy находится за пределами моего/src-дерева - я считаю его конфигурацией, а не файлом source/resource. Мой собственный каталог конфигурации затем добавляется в путь к классам времени выполнения напрямую через/Структура/Модули проекта/Зависимости (помеченные как область выполнения).

0

Моим решением было изменить артефакт, чтобы явно включить logback.groovy в каталог WEB-INF/classes. Это не идеально, поскольку этот файл может ссылаться только на абсолютный путь, а не на файл проекта, поэтому любые предложения по-прежнему приветствуются.

3

IDEA 13 теперь поддерживает новые типы назначений каталогов под вашим корнем контента. В предыдущих версиях IDEA поддерживала только каталоги маркировки как «источники» или «тесты».

Таким образом, новый правильный ответ состоит в том, чтобы пометить src/main/resources каталог как папку ресурсов вашего корня контента. Помечая содержимое каталога как «ресурсы», вы сообщаете IDEA, что содержимое не является исходным кодом, но должно быть доступно в пути к классам во время выполнения.

[Добавлено как отдельный ответ, потому что первый по-прежнему потенциально полезно, если ваш файл застрял под деревом исходного кода по каким-либо причинам -. Не стесняйтесь, чтобы объединить его с другой ответ, если это более уместно]

0

Я поместил logback.groovy в src/main/resources и добавил его к шаблонам ресурсов в настройках компилятора IDEA (ctrl + alt + s; Compiler> Шаблоны ресурсов). И это работает :)

 Смежные вопросы

  • Нет связанных вопросов^_^