Eclipse: получить имя проекта в качестве аргумента виртуальной машины?


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

Например, если класс Configuration вызывается из Project1, он должен анализировать special/path/fileX, а если он вызывается из Project2, он должен анализировать special/path/fileY.

Я пробовал использовать Eclipse {project_name}, но удивительно, что он анализируется на проект, выделяемый курсором, а не на родительский проект текущего класса.

Любые идеи как я могу отличить один проект от другого в Eclipse Runtime, предпочтительно используя аргументы JVM?

3 2

3 ответа:

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

Просто загрузите один и тот же файл из пути к классу, независимо от того, из какого проекта вы это начинаете:

/my/file/from/classpath.txt

Но поместите этот файл только в Project1 / Project2, так что различные файлы взаимно исключают себя в соответствии с вашей настройкой:

/Project1/src/my/file/from/classpath.txt
/Project2/src/my/file/from/classpath.txt

Где src - исходные папки Java. Теперь вы все еще можете использовать ваш параметр JVM, чтобы переопределить это, или предоставить значение по умолчанию, если выше отсутствует.

Я думаю, что самый простой способ-использовать конфигурации запуска eclipse. Просто создайте столько конфигураций, сколько вы хотите, поставьте все нужные вам Арги JVM и используйте их для запуска. Это также будет очень близко к тому, что вы собираетесь делать в производственном режиме

Или вы можете перейти к вашим установленным JRE Eclipse и установить конфигурацию как JVMArgs точно так же, как это было бы в prod.

Если требуется, вы можете иметь diff копию JREs на env.

Также при запуске из IDE можно получить Система.getProperty ("пользователь.dir") что должно быть корнем проекта.

Это системное свойство можно использовать для отслеживания вызываемого абонента. Еще лучше, установить JVM в установленную среды JRE args Для быть что-то вроде этого
-Dtheflaginprod=${project_loc}

project_loc = absolute path of the the project (/usr/projects/project1)
project_path = project name relative to the workspace  (/project1)