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'])
    }
}
Другие вопросы по тегам