Мне потребовалось некоторое время, чтобы сделать это наблюдение, но я вижу, что 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 или любые другие средства?
Я могу видеть все разрешенные зависимости pom.xml (даже область проверки), когда я открываю иерархию зависимостей. m2e может изменить путь класса в соответствии с тем, что вы используете. – ravthiru
Почему вы хотите изменить конфигурацию запуска? Не лучше ли попытаться исправить проблему в Maven? Какова ваша ошибка во время выполнения? –
@JFMeier Ошибка моего выполнения - это NoClassDefFoundError и ClassNotFoundException. В моей конфигурации maven нет ничего плохого. После того, как я подумал об этом еще немного, я думаю, что m2e должно улучшить конфигурацию запуска, чтобы сделать ее более заметной для пользователя, каков путь к классам во время выполнения. Теперь он просто показывает «Maven Dependencies». Если вы посмотрите на «Maven Dependencies» в обозревателе пакетов, он, как представляется, включает все банки в области «test» (не на 100% уверен в этом), что в моем случае, безусловно, включает банку с классом, который отсутствует во время выполнения , – successhawk