Упакуйте многомодульную библиотеку Gradle в один модуль - PullRequest
0 голосов
/ 19 декабря 2018

Я разбил свою pancakes основанную на Gradle библиотеку, написанную на Kotlin, на несколько модулей: pancakes-core, pancakes-addon1, ..., pancakes-addonN.addon включают в себя core.

Теперь большинству пользователей это не нужно, и им просто нужна конфигурация по умолчанию со всеми включенными зависимостями.Но они должны будут написать шаблон:

dependencies {
    implementation("pancakes:pancakes-core")
    implementation("pancakes:pancakes-addon1")
    ...
    implementation("pancakes:pancakes-addonN")
}

Это мне не разрешено.Вероятно, мне придется объединить все модули, хотя я просто потратил некоторое время, чтобы разложить некоторые заменяемые функции в их собственные модули.

Если только не!Есть способ написать что-то вроде следующего:

project(":pancakes-simple") {
    dependencies {
        autoForwardedApi(":pancakes-core")
        autoForwardedApi(":pancakes-addon1")
        ...
        autoForwardedApi(":pancakes-addonN")
    }
}

К сожалению, api недостаточно.

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

java-library Плагин Gradle требуется для api зависимостей, которые будут перенаправлены из текущего модуля.Вот как можно упаковать все модули в один:

  1. Добавить java-library плагин (и удалить java) во все модули библиотеки
  2. Создать такой модуль, какmy :pancakes-simple, который api зависит от всех остальных модулей
0 голосов
/ 19 декабря 2018

Да, это возможно и близко к тому, как вы предполагали, что оно выглядит.

Добавьте отдельный подпроект, скажем, :pancakes-simple и настройте его публикацию так же, как вы делали это для обычных модулей.

Затем просто добавьте зависимости, которые вы хотите показать.Если вы не используете плагин java-library, используйте конфигурацию compile:

project(":pancakes-simple") {
    dependencies {
        compile(":pancakes-core")
        compile(":pancakes-addon1")
        ...
        compile(":pancakes-addonN")
    }
}

В отличие от implementation зависимостей, они будут доступны на пути к классам компиляции потребителя, если они добавят зависимость к *Модуль 1012 *.

При использовании плагина java-library зависимости api также должны работать

...