欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

利用Gradle构建Java多模块项目

程序员文章站 2024-01-11 14:55:52
...

    Java新手,准备写个项目来巩固下知识点,在新建项目时不知道选择用什么作为构建工具,Maven肯定用过,只限于使用过,没有系统的去学习。之前做Android开发时用过Gradle来构建项目,也没深入研究过。后来在公司接触过用Gradle构建的java项目,才去深入了解过,描述的是Gradle是作为下一代构建工具,很灵活。我个人觉得这个灵活是体现在配置上,我看了很多使用Gradle构建多模块的项目的博客,配置都不相同。反正Gradle优点很多,想了解的自行百度,有很多Gradle方面的教程。

    写这篇博客主要是为了记忆一下,加深印象,也为各位提供一种思路,有什么不对的地方勿喷,我害怕!

1、项目结构

简单说明一下项目结构,其中project-parent是根项目,project-core和project-app是子模块,project-app依赖project-core模块,其中IDEA我用的是ULTIMATE 2018.1版本,gradle使用的是gradle-4.4版本。

利用Gradle构建Java多模块项目


2、新建根项目project-parent

通过IDEA来新建项目,左边菜单栏选择Gradle工具,右边的Additional Libraries and Frameworks什么都不勾选,因为根项目我们只需要setting.gradle和build.gradle两个文件就行了。然后一直下一步,我就不在提供操作截图了,如果还不知道怎么新建一个Gradle项目,请百度一下,教程很多。

利用Gradle构建Java多模块项目


项目新建完成,其中能看到setting.gradle和build.gradle两个文件。

利用Gradle构建Java多模块项目


3、新建子項目project-core

选择根项目,然后右键,弹出操作菜单,然后执行new->Module操作,会弹出和新建根项目一样的操作弹窗。

利用Gradle构建Java多模块项目


然后按照新建项目,直接下一步,直到finish。我将贴出每一步的截图

利用Gradle构建Java多模块项目

利用Gradle构建Java多模块项目利用Gradle构建Java多模块项目


然后点击Finish完成后,得到如下项目结构:

利用Gradle构建Java多模块项目


4、新建子項目project-app

    新建流程和第三步操作一样,我不再贴出具体截图了,只贴出新建后的项目结构图:

利用Gradle构建Java多模块项目


5、修改根目录build.gradle配置:

setting.gradle就不说了,可以说是一个包含项目所有module的一个脚本配置,具体可以自行查阅。

主要说下build.gradle的配置,分三部分,分别是buildscript,allprojects,subprojects

buildscript {

    ext {
        springBootVersion = '2.0.0.RELEASE'
    }

    repositories {
        mavenCentral()
        jcenter()
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

allprojects {
    group 'com.gradle.project'
    version '1.0-SNAPSHOT'
}

subprojects {
    apply plugin: 'java'
    apply plugin: 'idea'
    apply plugin: "io.spring.dependency-management"

    sourceCompatibility = 1.8
    targetCompatibility = 1.8

    repositories {
        mavenLocal()
        mavenCentral()
        jcenter()
    }

    dependencies{
        //这里如果配置了jar包依赖,所有子项目共享,使用了gradle的依赖传递特性。
        testCompile group: 'junit', name: 'junit', version: '4.12'
    }
}


6、project-core的build.gradle配置:

      这里gradle.project什么都没有写,根项目的build.gradle脚本已经为所有模块提供了基本的配置,每个模块的build.gradle脚本可以根据不同业务提供不同的配置。

dependencies {
}

7、project-app模块build.gradle配置:

    app模块使用SpringBoot框架快速发布一个测试用的应用,并且依赖于project-core模块,具体配置如下:

apply plugin: 'org.springframework.boot'

dependencies {
    compile project(':project-core')
    compile('org.springframework.boot:spring-boot-starter')
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.boot:spring-boot-starter-web')
}

8、project-core模块发布类:

    在此模块下新建一个类,供app模块调用:

利用Gradle构建Java多模块项目


9、发布project-app模块:

 通过SpringBoot配置,写一个测试接口,使用project-core模块的代码提供响应消息,然后将此模块发布为一个应用,供外部访问:

利用Gradle构建Java多模块项目


然后启动这个应用,可以根据控制台日志查看启动状态,这里启动成功,并成功发布了request接口:

利用Gradle构建Java多模块项目


默认端口是8080,我们现在可以通过浏览器去访问一下request测试接口,成功返回数据:

利用Gradle构建Java多模块项目


10、总结

    在学习gradle过程中,发现需要花部分精力在上面,需要熟悉Groovy的基础语法,然后才能去深入研究gradle工具的使用,使用过程中能够感觉到gradle的强大,我现在只是看到了它的冰山一角,真正强大的特性还有很多,有时间可以阅读《gradle实战》这本书,我还没开始看,从目录结构看,感觉很不错,实际开发中肯定能用的上。