Как построить 3 отдельных проекта gradle, используя композитную сборку - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть 3 проекта - A, B и C. Они используют один и тот же модуль ядра shared_core .Каждый из этих проектов может быть собран с помощью команды gradlew build .Но я бы хотел, чтобы shared_core собирался только один раз, а не трижды, так как это пустая трата времени.Мне сказали, что я могу использовать многопроектную сборку или составную сборку для этого.

Сейчас я пытаюсь создать составную сборку из этих 3, но я борюсь.

Может кто-нибудь показать мнепример того, как мои build.gradle и settings.gradle должны выглядеть для этой задачи?

Я новичок в учебе, поэтому спасибо за любую помощь.

1 Ответ

0 голосов
/ 20 сентября 2018

Руководство по созданию многопроектных сборок является отличной отправной точкой для понимания этой темы. Я предлагаю вам разобраться в этом. В ближайшей перспективе ответ на ваш вопрос основан на ваших отзывах вкомментарии:

Предполагая, что структура вашего проекта похожа на

testproject/A
testproject/B
testproject/C
testproject/shared_modules

, вам необходимо:

  1. Добавить testproject/settings.gradle со следующей записью:include 'A', 'B', 'C', 'shared_core'

  2. Файлы build.gradle в A, B, C должны содержать следующее определение зависимости:

    dependency compile project(':shared_core')

В качестве конкретного примера, здесь приведена конфигурация для простого многомодульного проекта с фиктивной граделкой, структура которого описана выше:

testproject / settings.gradle:

rootProject.name = 'testproject'
include 'A', 'B', 'C', 'shared_core'

testproject / build.gradle

plugins {
    id 'java'
}

group 'uk.co.so.answers'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

testproject / {A, B, C} /build.gradle

plugins {
    id 'java'
}

group 'uk.co.so.answers'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    compile project(':shared_core')
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

testproject / shared_core / build.gradle

plugins {
    id 'java'
}

group 'uk.co.so.answers'
version '1.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

Теперь, чтобы собрать все проекты, запустите из project root:

   ./gradlew clean build
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...