Как использовать относительные пути для проектов, добавленных в рабочую область Eclipse? - PullRequest
7 голосов
/ 03 марта 2011

Я работаю над некоторыми проектами Eclipse, которые хранятся на USB-ключе.Я добавил их в рабочее пространство, корневая папка которого также находится на USB-ключе, но проекты не находятся непосредственно в этом каталоге.В результате их абсолютные пути записываются в папку .projects рабочей области.

Это вызывает проблемы при использовании ключа на нескольких компьютерах, поскольку буква диска, назначенная USB-ключу, не всегда одинакова (и я не хочу назначать ему конкретное письмо на всех компьютерах).Eclipse не может открывать мои проекты, если буква диска отличается от буквы на USB-ключе, когда я добавил проект в рабочую область.

Есть ли решение этой проблемы?В частности, есть ли способ заставить Eclipse добавлять проекты в рабочее пространство, используя их относительный путь из папки рабочего пространства?

Ответы [ 5 ]

4 голосов
/ 24 июля 2013

Это действительно не так сложно.Вам просто нужно присвоить новую переменную, которая указывает на WORKSPACE/..;.Например, вы можете использовать пакет модератора Forge Minecraft - он имеет рабочее пространство, которое сразу же готово независимо от того, какая машина его загружает, где вы ее размещаете или даже перемещаете.

Загрузите это: http://files.minecraftforge.net/minecraftforge/minecraftforge-src-1.6.2-9.10.0.789.zip

А затем разархивируйте его и запустите install.bat / cmd .Затем проверьте содержимое forge / mcp / eclipse / Minecraft / {. Project, .workspace} , чтобы увидеть некоторые примеры.

Моя рабочая область работает на github следующим образом.

3 голосов
/ 26 ноября 2013

По моему опыту, он когда-нибудь сломается, если вы попытаетесь "взломать" метаданные затмения.

Рассмотрим команду subst в Windows (поскольку вы упоминаете букву диска, я предполагаю, что Windows)

создать файл bat, содержащий

subst N: .

Запуск этого установит текущий dir как N: Таким образом, вы можете поместить его на usb-накопитель и запустить его до запуска eclipse, тогда вы всегда найдете тот же контент на диске N:

Чтобы снять крепление, сделайте

subst /D N:

Вы могли бы подумать о создании файла bat, который монтирует N :, запускает eclipse, а после Eclipse завершает демонтирование N: что-то вроде

startMyProject.bat:

subst N: .
N:/eclipse <yadayada options>
subst /D N:
3 голосов
/ 03 марта 2011

Короткий ответ: вы не можете сделать это, не взломав метаданные рабочей области (под [workspace.dir]/.metadata). Рабочие пространства Eclipse не предназначены для переноса, и даже если вы физически не перемещаете свое рабочее пространство, вы фактически перемещаете его, меняя буквы дисков.

Я бы порекомендовал попытаться найти способ подвести свои проекты под workspace.dir. Не гарантируется, что у вас не возникнет таких проблем, но вы можете улучшить свои шансы. В зависимости от того, какие функции Eclipse вы используете, у вас могут получиться другие типы абсолютных путей в метаданных рабочей области.

0 голосов
/ 05 октября 2017

Этот вопрос довольно старый, но есть совершенно другой подход: вы можете создать соединение из папки, где Eclipse ожидает проект, например, E:\foo\workspace\myproject и связать его с местом, где находится проект, например, E:\bar\myproject.

Junction, по сути, означает, что вы можете получить доступ к одной и той же папке по двум разным путям, поэтому вам не нужно беспокоиться о странных ограничениях относительного пути Eclipse. Чтобы создать его легко и быстро, я рекомендую вам получить Link Shell Extension

0 голосов
/ 03 марта 2011

Я сам не пробовал, но это может сработать. Попробуйте:
Добавьте вашу исходную папку как связанный ресурс и удалите предыдущее определение: http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.platform.doc.user/tasks/tasks-45.htm

Закройте затмение и найдите папку вашего проекта в рабочей области (например: C:\Documents and Settings\username\workspace\yourproject\). Замените абсолютные пути в файлах .project & .classpath относительными путями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...