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?
Ответы
Ответ 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.