Как управлять подпроектами подмодулей git в Eclipse?
(В случае, если это имеет значение, это проекты Java Android)
Проект A - это проект библиотеки.
Проект B зависит от A. Для упрощения управления проектами по всему миру для других людей, а не только для меня, A содержится в B через подмодуль git.
Это означает, что если я хочу внести изменения как в A, так и B, у меня будет следующее:
- Проект A
- Проект B
- B подмодуль A, назовем его A '. Тот же код, одно имя проекта, другое место на диске.
В идеале я хотел бы иметь возможность удовлетворять следующим условиям:
- Уметь изменять A непосредственно в Eclipse.
- Уметь модифицировать B и создать его, ссылаясь на A, все внутри Eclipse.
- Мне не нужен A как импортированный проект/нет необходимости его изменять, но я бы хотел, чтобы он автоматически создавал свой файл jar и ссылался на B.
Что я пробовал:
- Просто импортировать как A, так и A: не работает, потому что Eclipse не может импортировать два проекта с тем же именем. Я не могу просто изменить имя либо потому, что это подмодуль; должен был бы сделать это при каждом обновлении git, неприемлемым.
- Добавление ссылки на внешнюю библиотеку на A, полностью исключающее ее из Eclipse: на самом деле это не так уж плохо для решения, но требует, по крайней мере, одной внешней сборки из командной строки (используя
ant
), прежде чем он будет работать... не самый удобный.
- Выполнение ссылки источника: не самый чистый, поскольку A (и впоследствии A) имеет несколько исходных папок внутри них, поэтому мне придется обновлять каждый раз, когда я добавьте или удалите исходные папки в A. Я предпочел бы просто использовать банку напрямую.
Есть ли способ сохранить все это в Eclipse, или мне нужно сделать что-то вроде # 2, но с добавленной внешней командой сборки для вызова ant
в A?
Ответы
Ответ 1
У меня такая же ситуация. Импортируйте B как существующий (android) проект в eclipse после того, как вы git клонируете его. Убедитесь, что проект A инициализирован и обновлен (через git).
Теперь, file- > импортируйте существующий проект (андроид, если A - проект Android) и перейдите туда, где проект субмодуля A находится внутри вашего проекта B и добавьте его.
Теперь у вас есть два отдельных проекта в eclipse. Вы можете изменить оба проекта, и все это будет в проекте B, потому что именно там расположены оба проекта.
Ответ 2
Так как это специально для Android, вы изучили библиотеки Android?
В моем случае у меня есть бесплатная (B) и оплаченная версия (C) моего приложения. Оба имеют общую базу кода (A).
В eclipse я делаю A библиотекой Android, и B и C используют эту библиотеку, и все 3 являются отдельными репозиториями git. С помощью этой настройки изменения, которые я делаю в A, автоматически доступны в B и C, и мне нужно поддерживать только одну базу кода для каждого проекта. Нет сценариев создания/конфигов.
Я думаю, что такая простота - это то, чем вы были? Извиняюсь, если я неправильно понял вопрос.
Ответ 3
Я не уверен, правильно ли я прав:
Проект A: src
+/projecta.jar(двоичный код проекта A)
Проект B:/src
+/lib/Проект A/src как подмодуль
+/lib/projecta.jar(двоичный код проекта A)
.. теперь вы меняете A-A 'и компилируете его, желая проверить его перед нажатием/коммитом, правильно?
это нормально для вас просто иметь банку в B, или вам нужен источник в проекте B, обновленный до A??
первый случай:
иметь файл ant, скомпилированный в проекте A, и развернуть его на B
что файл ant не является частью проекта a, его просто локальное обходное решение
(полезно использовать его в представлении ant для eclipse)
Эскиз:
<property name="projectb.libdir" value="..."/> set appropriate place in project B
<javac fromdir="./src" todir="./build" ...><fileset ... /></javac>
<jar /> from build to projecta.jar
<copy /> projecta.jar to projectb.libdir
Альтернативой является создание .jardesc в eclipse, поэтому вы можете запустить "create jar" в rightclick.
- это то, что вы хотели сделать?
Ответ 4
Eclipse Mars Milestone 5 (4.5.0M5) поддерживает Multiproject. Вам нужно импортировать только "Существующий проект" из подпапки.
Ответ 5
Просто используйте систему построения проекта для отслеживания зависимостей (для чего они подходят).
Я бы предложил использовать gradle
(предпочтительный IMHO, но проверить, какой из них лучше подходит для вашего контекста) или maven
, оба могут хорошо обрабатывать подпроекты и могут генерировать для вас конфигурацию eclipse.