search.png
关于我
menu.png
gradle 多项目构建总结

一、根项目集中配置

适用于简单项目,模块嵌套较少

1.1 项目结构

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

1.2 settings.gradle

include 'model', 'repository', 'web'

1.3 build.gradle

// 声明模块公用属性
ext.projectIds = ['group': 'com.manning.gia', 'version': '0.1']

group = projectIds.group
version = projectIds.version

// 指定构建依赖
buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "gradle.plugin.org.akhikhl.gretty:gretty:2.0.0"
    }
}

// 为根项目和所有子模块指定配置
allprojects {
    group = 'com.manning.gia'
    version = '0.1'
}

// 为所有子模块指定Java插件
subprojects {
    apply plugin: 'java'
}

project(':repository') {

    // 设置repository在编译时依赖model,在build过程中,会自动按照这个顺序进行构造
    dependencies {
        compile project(':model')
    }
}

project(':web') {

    apply plugin: 'war'
    apply plugin: "org.akhikhl.gretty"

    repositories {
        jcenter()
    }

    dependencies {
        // web依赖于reposetory
        compile project(':repository')
        providedCompile 'javax.servlet:servlet-api:2.5'
        runtime 'javax.servlet:jstl:1.1.2'
    }
}

二、子项目独立构建

适用于复杂情况

2.1 项目结构

在这里插入图片描述
在这里插入图片描述

2.1 根项目构建文件

2.1.1 build.gradle

allprojects {
    group = 'com.manning.gia'
    version = '0.1'
}

subprojects {
    apply plugin: 'java'
}

2.1.2 settings.gradle

// 引用子项目
include 'todo-model', 'todo-repository', 'todo-web'

rootProject.name = 'todo'

// 设置子项目的构建脚本文件名
rootProject.children.each {
    it.buildFileName = it.name + '.gradle' - 'todo-'
}

2.2 todo-model:build.gradle

//空

2.3 todo-model:repository.gradle

dependencies {
    // repository 依赖于model
    compile project(':todo-model')
}

2.4 todo-model:web.gradle

apply plugin: 'war'

// 指定构建依赖
buildscript {
    repositories {
        maven {
            url "https://plugins.gradle.org/m2/"
        }
    }
    dependencies {
        classpath "gradle.plugin.org.akhikhl.gretty:gretty:2.0.0"
    }
}

apply plugin: "org.akhikhl.gretty"

repositories {
    jcenter()
}

dependencies {
    // web 依赖于repository
    compile project(':todo-repository')
    providedCompile 'javax.servlet:servlet-api:2.5'
    runtime 'javax.servlet:jstl:1.1.2'
}

版权声明

知识共享许可协议 本文章由作者“衡于墨”创作,转载请注明出处,未经允许禁止用于商业用途

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
发布时间:2020年01月29日 10:46:32

评论区#

还没有评论哦,期待您的评论!

关闭特效