2015-09-16 2 views
8

У меня возникли проблемы с настройкой Buildship для Eclipse так, как я хочу. В настоящее время у меня есть> 50 проектов, которые всегда открываются в Eclipse, но я хочу перейти только на те проекты, над которыми я активно работаю в Eclipse, а другие проекты будут использовать репозиторий Maven для решения своей зависимости.Gradle + Buildship - Переключение зависимости между JAR и проектами

Допустим, что ProjectA (содержащий основное) зависит от ProjectB (проект библиотеки). Если ProjectB открывается в Eclipse, я хотел бы, чтобы ProjectA напрямую использовал ProjectB. Изменение кода в ProjectB было бы заметно при запуске ProjectA. Однако, если ProjectB закрыт, я бы хотел, чтобы ProjectA использовал JAR ProjectB, расположенный в репозитории Maven, упомянутом в файле build.gradle.

Поведение, о котором я говорю, подробно here.

Есть ли способ сделать это с помощью Buildship? Или я должен использовать другой плагин Gradle Eclipse?

ответ

8
  1. В Gradle 3.1 добавлена ​​новая функция composite build support. Эта функция является сменой игры и упрощает работу над несколькими проектами сразу.

  2. Вы можете использовать dependency substitution rules для замены зависимостей репозитория с локальными зависимостями проекта.

  3. Если каждый проект находится в собственном отдельном репозитории git/subversion, вы можете использовать prezi pride для управления «гордостью» проектов. Вы можете импортировать (динамически сгенерированную) сборку нескольких модулей в buildship.

  4. Если вы хотите использовать eclipse plugin вместо buildship вы используете whenMerged или withXml крюки для настройки сгенерированных .classpath файлов, чтобы указать на проекты в рамках своего рабочего места (примечание затмение теперь будет строить по-другому, чтобы Gradle командной строки).

2

Для завершения работы я закончил работу с заменой зависимостей, как это было предложено Lance Java. Этот подход имеет следующие преимущества:

  • Не требует стороннего программного обеспечения.
  • Независимо от IDE. Мы не занимаемся непосредственно файлом .classpath, мы разрешаем плагин Eclipse (или любой другой плагин IDE).
  • Другие плагины могут получить доступ к фактической зависимости, которую мы хотим использовать.

Однако, есть несколько подводных камней с таким подходом:

  • Dependency substitution cannot be done inside a task. Это необходимо сделать либо в файле build.gradle, либо в методе, который вызывается из файла build.gradle.
  • Необходимо обновить рабочее пространство.
+0

Исправьте меня, если я ошибаюсь, но это решение работает только в рамках проекта градации. Что делать, если мне нужно заменить зависимость проектом рабочей области, который не является частью построения градиента? – user1482710

Смежные вопросы