Gradle 使用实例

标签:

本文出自jvm123.com-java技术分享站:http://jvm123.com/2019/08/gradle.html

本文通过一个实例,演示 gradle 在项目管理中的使用,以及多模块的项目如何使用 gradle 管理和项目构建。

总体项目结构

1 本项目由三个模块构成,结构如下,其中项目最外层有三个文件:

Gradle 使用实例插图

以下分别列举解释:

(1)gradle.properties 用来配置属性

group=com.yawn
version=1.0-SNAPSHOT

(2)settings.gradle 用来说明此项目包含的模块

rootProject.name = 'demo6'
include 'entity'
include 'service'
include 'web'

(3)build.gradle 管理依赖、项目构建、任务执行等,类似于maven的pom文件

allprojects {
    apply plugin: 'java'
    sourceCompatibility = 1.8
}
// 同 allprojects
subprojects {
    repositories {
        mavenLocal()
        maven {
            // maven 私服
            url ''
        }
        mavenCentral()
    }

    dependencies {
        compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.9.1'
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }

}

各模块的 build.gradle

此外,此项目下有三个子模块:entity、service、web,三个子模块的依赖关系为web–>service–>entity。

每个模块下分别只有build.gradle文件,分别如下:

(1) entity /build.gradle

dependencies {
    compile ('org.hibernate:hibernate-core:5.2.11.Final') {
        // 排除hibernate对self4j的依赖
        exclude(group: 'org.slf4j', module: 'selef4j-api')
    }
}
// compile 表示编译时的依赖 :hibernate-core
// exclude 表示排除依赖 :selef4j-api

(2)service /build.gradle

dependencies {
    compile project(":entity")
}
// 对项目模块的依赖如上格式引用

/*
def createDir = {
    path ->
        File dir = new File(path);
        if (!dir.exists()) {
            dir.mkdirs();
        }
}

task makeJavaDir() {
    def paths = ['src/main/java', 'src/main/resources', 'src/test/java', 'src/test/resources']
    doFirst {
        paths.forEach(createDir)
    }
}
task makeWebDir() {
    def paths = ['src/main/webapp']
    doLast {
        dependsOn(makeJavaDir)
        paths.forEach(createDir)
    }
}
*/

// task 自定义了一些任务,类似于ant的,灵活度比较高

(3)web /build.gradle

apply plugin: 'war'

dependencies {
    compile project(":service")
}

/*
def createDir = {
    path ->
        File dir = new File(path);
        if (!dir.exists()) {
            dir.mkdirs();
        }
}

task makeJavaDir() {
    def paths = ['src/main/java', 'src/main/resources', 'src/test/java', 'src/test/resources']
    doFirst {
        paths.forEach(createDir)
    }
}
task makeWebDir() {
    def paths = ['src/main/webapp', 'src/test/webapp']
    doLast {
        dependsOn 'makeJavaDir'
        paths.forEach(createDir)
    }
}
*/

gradle 使用 build.gradle 管理项目依赖和构建项目,build.gradle 是一个用groovy 语言编写的脚本,了解 geroovy 语法

http://jvm123.com/2019/08/groovy.html

groovy 完整文档请参考: http://jvm123.com/doc/groovy/index.html

发表评论