Gradle: Могу ли я зависеть от модуля в другом проекте?

Я хотел бы создать проект со следующей структурой:

Project 1
  + build.gradle
  + settings.gradle
  + module A
      + build.gradle
      + src
      + ...
  + module B
      + build.gradle
      + src
      + ...
Project 2
  + build.gradle
  + settings.gradle
  + module C
      + build.gradle
      + src
      + ...
  + module D
      + build.gradle
      + src
      + ...

Мне бы хотелось, чтобы модуль A проекта 1 зависел от модуля D. проекта 2. Мне бы хотелось, чтобы это была зависимость от источника (не артефакт maven) и работа с Gradle 2.14 и Android Studio 2.1.

Я не контролирую макет Project 2 или его root build.gradle. Все, что я могу сделать, это вытащить его в свое рабочее пространство и использовать его.

У меня есть полный контроль над Проектом 1, и я могу настроить его так, как я захочу. Я бы предпочел, чтобы полная сборка проекта 1 не вызывала полную сборку проекта 2, просто :project2:moduleD, Все, что работает, тем не менее, будет делать.

Я хотел бы знать, как настроить файлы build.gradle для Project 1 и что поместить в dependency предложение в build.gradle для модуля A.

3 ответа

Я предполагаю, что то, что вы описали, не является мультипроектом, то есть это два отдельных проекта. Если вы не можете убедить сопровождающего опубликовать артефакт в любом месте, и вам всегда нужна последняя версия Project 2. Лучше всего сделать ссылку на выходной jar-файл проекта.

compile files('path/to/Project2/build/output.jar')

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

вы можете проверить удар URL

https://docs.gradle.org/current/userguide/declaring_dependencies_between_subprojects.html

и убедитесь, что весь этот проект использует один и тот же корневой проект

Пример для градиента:

rootProject.name = 'sof-portofolio'

включить «ядро: модель1», «сервис: модель2»

Вы пробовали символическую ссылку? Сделайте символическую ссылку в проекте 1 на папку проекта D и добавьте ее в настройки проекта 1. Gradle

Другие вопросы по тегам