Как использовать переменные пути в плагинах Eclipse

#eclipse #eclipse-plugin

#eclipse #eclipse-плагин

Вопрос:

У меня есть плагин Eclipse, в котором пользователь может выбирать файлы или папки. В настоящее время я сохраняю абсолютные пути в файле конфигурации. Поскольку файл конфигурации является общим для пользователей (например, с помощью SVN), абсолютные пути являются проблемой.

Мой файл конфигурации в настоящее время выглядит примерно так:

 <?xml version="1.0" encoding="UTF-8"?>
<paths>
    <path value="C:UsersUserAsomeFolderfoo.jar"/>
    <path value="C:UsersUserAsomeFolderbar.jar"/>
</paths>
  

Чтобы устранить проблему, я хотел бы использовать функцию связанных ресурсов Eclipse. Итак, когда пользователь определяет переменную пути (настройки Eclipse -> Общие -> Рабочее пространство -> Связанные ресурсы) с именем MY_JARS и значением «C:UsersUserAsomeFolder » конфигурационный файл, который записывает мой плагин, должен выглядеть примерно так:

 <?xml version="1.0" encoding="UTF-8"?>
<paths>
    <path value="${MY_JARS}foo.jar"/>
    <path value="${MY_JARS}bar.jar"/>
</paths>
  

Как я могу заменить определенные части пути именами переменных, которые определены в связанных ресурсах Eclipse? И как я могу отменить это, когда я читаю путь из файла конфигурации, чтобы получить правильный абсолютный путь?

Я посмотрел на IPathVariableManager, который выглядит довольно многообещающе. Однако я не мог понять, как правильно его использовать.

Ответ №1:

Предполагая, что пользователь указывает абсолютный путь, и вы хотите заменить его относительным путем, используя любую соответствующую определенную переменную, которую вы бы использовали IPathVariableManager.convertToRelative(...) . Чтобы получить абсолютный путь из относительного, используйте IPathVariableManager.resolveURI(...) .

Естественно, это предполагает, что переменная определена во всех средах, где используется файл конфигурации, что может быть не всегда. Поэтому лучше позволить пользователям указывать пути с известными переменными, а не автоматически преобразовывать за кулисами.