2016-12-08 9 views
2

Мне потребовалось некоторое время, чтобы сделать это наблюдение, но я вижу, что m2e «волшебным образом» управляет классом.Когда и как m2e используют тестовую область Maven для включения тестовых зависимостей в конфигурациях запуска Eclipse?

Примеры: Если я запускаю как приложение Java в исходной папке «src/java/main», он исключает область «проверка». Примечание. Класс смог скомпилировать, но не смог запустить. Но если я переведу тот же самый класс в папку «src/java/test», тогда он сможет скомпилировать и запустить.

Если I Run as JUnit Test, тогда область «тест» всегда включена (даже если класс находится в «основной» исходной папке).

Единственный способ, которым я это сделал, - сбросить свойство системы java.class.path во время выполнения.

я нашел следующую http://www.eclipse.org/m2e/documentation/m2e-faq.html

Также обратите внимание, что путь к классам, используемый для JUnit и запуска Java-приложений конфигураций для проектов, в которых включена поддержка Maven также рассчитывается специальным образом и исключенные ресурсы не влияют на него .

Я не вижу различий при сравнении их Run Configurations, так как я могу увидеть, что магия выполняется?
И есть ли способ переопределить «нормальное» поведение через Run Configuration или любые другие средства?

+0

Я могу видеть все разрешенные зависимости pom.xml (даже область проверки), когда я открываю иерархию зависимостей. m2e может изменить путь класса в соответствии с тем, что вы используете. – ravthiru

+0

Почему вы хотите изменить конфигурацию запуска? Не лучше ли попытаться исправить проблему в Maven? Какова ваша ошибка во время выполнения? –

+0

@JFMeier Ошибка моего выполнения - это NoClassDefFoundError и ClassNotFoundException. В моей конфигурации maven нет ничего плохого. После того, как я подумал об этом еще немного, я думаю, что m2e должно улучшить конфигурацию запуска, чтобы сделать ее более заметной для пользователя, каков путь к классам во время выполнения. Теперь он просто показывает «Maven Dependencies». Если вы посмотрите на «Maven Dependencies» в обозревателе пакетов, он, как представляется, включает все банки в области «test» (не на 100% уверен в этом), что в моем случае, безусловно, включает банку с классом, который отсутствует во время выполнения , – successhawk

ответ

0

Цитируя https://bugs.eclipse.org/bugs/show_bug.cgi?id=410228:

Вот как m2e решает, если запуск Java-приложение должно использовать тест или во время выполнения артефакта областей.

  • «run as junit test» и «run as testng test» использует область тестирования.
  • «run as java application» использует область тестирования, если основной класс приложения находится под src/test/java, в противном случае используется область выполнения.

Это означает, что вы можете контролировать поведение, используя расположение основного класса.