如何使用复合构建来构建3个单独的Gradle项目

时间:2018-09-20 05:59:10

标签: java gradle build

我有3个项目-A,B和C。它们共享相同的核心模块 shared_core 。可以使用其 gradlew build 命令来构建该项目的每个项目。但是我希望将shared_core仅构建一次而不三次,因为这是浪费时间。有人告诉我可以使用多项目构建或复合构建。

现在,我正在尝试创建这3个组件的复合版本,但我正在努力。

有人可以向我展示此任务的build.gradle和settings.gradle外观的示例吗?

我真的很新,所以谢谢您的帮助。

1 个答案:

答案 0 :(得分:1)

gradle guide to creating multi project builds是理解该主题的一个很好的起点-我建议您逐步进行研究。在短期内,这是根据您在评论中的反馈对问题的回答:

假设您的项目结构类似于

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')

作为一个具体示例,这是一个简单的虚拟gradle多模块项目的配置,该项目具有上述结构:

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'
}

现在,要构建所有项目,请从项目根目录运行:

   ./gradlew clean build