Gradle Multi Project Зависимости с несколькими папками Lib
У меня есть проект, который выложен следующим образом:
abc/
abc-core/
abc-core-actions/
abc-core-actions-a/
src/
abc-core-actions-b/
src/
abc-core-package/
src/
abc-framework/
abc-framework-core/
lib/
abc-framework-dependencies/
lib/
abc-utility/
src/
И в пределах lib
папки в abc-framework
Проект представляет собой набор jar-файлов, представляющих основную структуру и зависимости, необходимые для функционирования этой среды.
То, что я хочу сделать, это что-нибудь под abc-core
а также abc-utility
иметь в своем распоряжении lib
банки.
Я обнаружил, что делать что-то вроде этого:
project(':abc-core:abc-core-actions') {
dependencies {
compile fileTree(dir: '../../abc-framework/abc-framework-core/lib', includes: ['*.jar'])
compile fileTree(dir: '../../abc-framework/abc-framework-dependencies/lib', includes: ['*.jar'])
}
}
Работал, но это означает, что для каждого раздела (abc-core: abc-core-actions-a, abc-utility и т. Д.) Я должен включить раздел, как указано выше, и его также относительный.
В идеале я хотел бы определить, что все подпроекты имеют зависимость fileTree от этих папок, но проблема заключается в изменении пути в зависимости от подпроекта.
Так что было бы лучшим способом иметь compile fileTree
ссылаться на abc
абсолютный путь проекта?
1 ответ
Вы можете использовать встроенный projectDir
свойство любого проекта для построения абсолютного пути относительно одного из ваших проектов, при условии, что все ваши проекты участвуют в одной и той же многопроектной сборке.
Так что если у вас есть build.gradle
файл на верхнем уровне abc
каталог, который, вероятно, будет выглядеть примерно так (на основе вашего комментария выше):
//"project" here equates to the root project, i.e. "abc"
def frameworkCore = "${project.projectDir}/abc-framework/abc-framework-core/lib"
def frameworkDeps = "${project.projectDir}/abc-framework/abc-framework-dependencies/lib"
subprojects {
dependencies {
compile fileTree(dir: frameworkCore, includes: ['*.jar'])
compile fileTree(dir: frameworkDeps, includes: ['*.jar'])
}
}