Подтвердить что ты не робот

Gradle зависимости: скомпилировать проект по относительному пути

Можно ли указать зависимость в Gradle (в студии android) к другому проекту Gradle за пределами текущих границ проекта? Например, с относительным путем что-то вроде этого:

dependencies {
  compile project('../../stdlib/dagger')
}

Итак, что я делаю, это примерно так:

У меня есть приложение для Android. Структура выглядит следующим образом:

  • MyApp (путь/Users/foo/workspace/MyApp)
    • приложение (путь/Users/foo/workspace/MyApp/app)

И у меня есть проект библиотеки Gradle андроида, содержащий 3 подмодуля:

  • stdlib (путь/Users/foo/workspace/stdlib)
    • кинжал (путь/Пользователи/foo/workspace/stdlib/кинжал)
    • utils (path is/Users/foo/workspace/stdlib/utils)
    • http (path is/Users/foo/workspace/stdlib/http)

Я хочу скомпилировать кинжал, utils, http-модуль в проект MyApp.

Модули библиотек stdlib находятся в тяжелом развитии и будут расти по мере роста MyApp. Поэтому я не хочу толкать их в репозиторий maven каждый раз, когда я делаю небольшие изменения.

Итак, есть возможность связать другие проекты Gradle как-то? Я ищу временное решение. Я вытащу std-библиотеку в репозиторий maven, если источник будет стабильным.

Кроме того, в качестве обходного пути возможно решение с sourceSet. Я также рассмотрел создание папки библиотек в MyApp, которая является символической ссылкой на stdlib, но я не получил ее, чтобы она работала, как ожидалось:

  • MyApp (путь/Users/foo/workspace/MyApp)
    • приложение (путь/Users/foo/workspace/MyApp/app)
    • (символическая ссылка на /Users/foo/workspace/stdlib )
 dependencies {
      compile project(':libraries:dagger')
    }

Любая идея, как решить такую ​​зависимость в gradle?

4b9b3361

Ответ 1

Вы можете включить внешний корневой модуль проекта, используя файл "settings.gradle" из вашего основного проекта. Он также должен быть проектом gradle и в конкретной ситуации Android для Android, вы должны настроить каждый модуль как проект плагина "android-library".

Например, в настройках проекта MyApp.gradle вы можете попробовать следующее:

include 'app'
include 'dagger'
project(':dagger').projectDir = new File('/Users/foo/workspace/stdlib/dagger')

Ваш сборник "MyApp" build.gradle должен отражать потребность в модуле "кинжал" в относительном пути gradle:

dependencies {
  compile project(':dagger')
}

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