Можно ли настроить аргументы виртуальной машины для всего проекта в Eclipse

Я использую Eclipse, и мне нужно передать набор аргументов виртуальной машины в мои конфигурации запуска. Я знаю, как это сделать индивидуально, используя «Настройки запуска/отладки». И я знаю, как это сделать в масштабе всей системы, используя Window/Preferences/Java/Installed JRE.

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

Есть ли способ поддерживать конфигурации запуска для конкретного проекта в Eclipse?


person Alexander    schedule 06.01.2017    source источник


Ответы (2)


Окно → Настройки → Java → Установленные JRE

Первая конфигурация:

Default VM Arguments: -XX:+HeapDumpOnOutOfMemoryError 

JRE Home: JRE1-PorojectType (You can name it anything)

Вторая конфигурация:

Default VM Arguments: -XX:HeapDumpPath=${DOMAIN_HOME}/logs/mps"

JRE Home: JRE2-PorojectType (You can name it anything)

Свяжите настроенную JRE с соответствующим проектом, тогда проект будет иметь настроенные по умолчанию аргументы виртуальной машины.

person fabfas    schedule 06.01.2017
comment
Хм, создайте собственные записи JRE для проектов... это хорошая идея, дайте мне попробовать. - person Alexander; 06.01.2017
comment
Спасибо, fabfas, сработало! Мне потребовалось совсем немного времени, чтобы понять, как связать существующий проект с другой JRE (Проект/Свойства/Путь сборки Java/Библиотеки), но как только я все настроил, каждая новая конфигурация запуска успешно наследует мою пользовательскую JRE со всеми его настроек ВМ. - person Alexander; 06.01.2017
comment
Рад, что у тебя получилось. Я отредактировал свой ответ, указав, вероятно, лучшее долгосрочное решение. Похоже, вам следует начать изучать внешние инструменты сборки вместо Eclipse. - person Christopher Schneider; 06.01.2017

Изначально вопрос был неясен, но спрашивающий ищет способ указать аргументы виртуальной машины для модульных тестов.

В случае, если вам нужны определенные аргументы виртуальной машины, вы не должны полагаться на Eclipse и предпочесть инструмент сборки, такой как Maven или Gradle. Если ваше рабочее пространство повреждено (это случается время от времени по какой-либо причине), все ваши конфигурации исчезнут.

Используя Maven Surefire, вы можете указать аргументы виртуальной машины для запуска при выполнении модульных тестов для каждого проекта. Мало того, это не зависит от IDE.

Вы можете определить это таким образом в своем pom.xml, например:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>2.19.1</version>
    <configuration>
        <argLine>-XX:MaxPermSize=1024m</argLine>
    </configuration>
</plugin>

-- Конфигурации запуска уже зависят от проекта. Щелкните проект правой кнопкой мыши, выберите Run As, затем Run Configurations в нижней части меню. Вы указываете, к какому проекту они применяются при их создании:

Выполнить настройку

Вы можете указать аргументы виртуальной машины на вкладке «Аргументы» и дублировать конфигурации запуска, щелкнув их правой кнопкой мыши и выбрав «Дублировать».

person Christopher Schneider    schedule 06.01.2017
comment
Да, конфигурации специфичны для проекта, но не для всего проекта — наследования нет. Я могу создать New_configuration, но тогда мне придется дублировать его для каждого класса, который я запускаю. Скажем, у меня есть 50 классов, и после первого прохода мне нужно изменить один из аргументов для всех из них. - person Alexander; 06.01.2017
comment
Непонятно, в чем разница между конкретным проектом и проектом в целом. У вас должна быть единая точка входа в ваше приложение... Зачем вам нужна конфигурация для каждого класса в вашем проекте? - person Christopher Schneider; 06.01.2017
comment
@Christopher Schneider нет причин, по которым проект должен иметь только один общедоступный основной класс static void. Но насколько я знаю, то, что спрашивает ОП, невозможно. Существует два уровня: аргументы jre по умолчанию и конфигурации запуска. Возможно, вы могли бы добавить JRE с аргументами jvm для этого проекта и использовать этот jre для целей запуска проекта. - person NickL; 06.01.2017
comment
Мой проект на самом деле представляет собой набор тестов, а тестируемый код зависит от аргументов виртуальной машины. Мне нужен удобный способ изменить настройки виртуальной машины для всех тестов одновременно. - person Alexander; 06.01.2017