Eclipse игнорирует зависимые области тестов Maven - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть проект Maven, который использует SLF4J. Чтобы запустить его из Eclipse, я хочу выводить журнал на консоль go, поэтому я настроил зависимости следующим образом:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.7.12</version>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.12</version>
</dependency>

То есть я вытягиваю slf4j-simple с test scope.

Проект представляет собой библиотеку. В его папке test есть класс с методом main, который выполняет некоторые тесты и диагностирует функции c. Когда я запускаю его таким образом из Eclipse, SLF4J регистрируется в System.err, как и ожидалось.

Когда я использую проект библиотеки в другом (основной класс которого находится в папке src проекта), SLF4J жалуется на следующая ошибка:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Я пытался добавить те же зависимости в родительский проект, но безрезультатно. Однако, если я изменю область действия slf4j-simple на compile или runtime в родительском проекте, ведение журнала будет работать, как и ожидалось.

Что здесь происходит? Имеет ли это поведение какое-то отношение к дереву исходного кода, в котором находится основной класс (test подразумевает, что я тестирую, таким образом, выявляются зависимости в области тестирования, src подразумевает обычную среду выполнения и зависимости в тестовой области недоступны) ? Если да, то как мне сказать моей цепочке инструментов, что я хочу slf4j-simple при работе в Eclipse, но какой-нибудь другой бэкэнд при создании JAR для развертывания?

1 Ответ

0 голосов
/ 29 апреля 2020

То, использует ли Eclipse тестовые зависимости или зависимости времени выполнения, определяется настройкой проекта. Чтобы изменить его, go на Проект> Свойства> Java Путь сборки> Источник . Содержит тестовые источники (дочерний элемент вашего проекта) - это параметр, который вы ищете. Если установлено значение Да , Eclipse будет использовать тестовые зависимости, иначе это не будет.

Да, похоже, по умолчанию для проекта с кодом в дереве test, Нет для всех остальных.

Измените настройку по мере необходимости, примените, закройте и запустите - Eclipse предоставит вам желаемый набор зависимостей.

Могут быть и другие важные настройки, которые я пропустил - не стесняйтесь оставить комментарий в этом случае.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...