ant构建项目迁移到gradle_Gradle: 构建SpringBoot多模块项目实例

这篇博客介绍了如何将Ant构建的项目迁移到Gradle,详细阐述了从准备工作,包括安装Gradle、JDK和git,到创建SpringBoot多模块项目,修改build.gradle和settings.gradle文件,以及项目的发布部署过程。通过这个实例,读者将学会如何在Gradle中管理一个多模块的SpringBoot应用。
摘要由CSDN通过智能技术生成

目录

  1. 准备工作
  2. 项目结构
  3. 构建步骤
  4. 发布部署
  5. 附言

1. 准备工作

安装Gradle

安装JDK

安装git for windows

说明:由于本人在unix系统下工作,所以如果你是windows系统,需要安装git for windows,然后使用git bash执行命令,安装工作如果遇到困难,你可以请参考官网指导

2. 项目结构

2972b0c35d3e68f6cc3237f52a37f50f.png

3. 构建步骤

3.1. 创建项目

  • 创建项目文件夹 jc-gradle-multiple-demo
  • 进入项目文件夹, 执行命令: gradle init
  • 依次选择/输入

2: library

3: Java

1: Groovy

1: Junit 4

jc-gradle-multiple-demo (此处你可以输入你想要的项目名)

jc.gmd (此处你可以输入你想要的包名)

375976cfd08cea65a2f40a25f02817a9.png
  • 不同版本的Gradle 可能略有差异,此处演示采用的是Gradle 5.5.1,如果想了解更多的细节,可以查阅官网指南
  • 采用相同的方法在 jc-gradle-multiple-demo 下依次创建: demo-common, demo-db, demo-webservice, 不出意外,你的目录相关应该会如项目结构所示

3.2. 修改 build.gradle 和 settings.gradle

  • 清空 demo-common, demo-db, demo-webservice 目录下的 settings.gradle 和 build.gradle

Tips:如果你的机器支持bash命令,可以像这样清空文件内容: echo "" > build.gradle

  • 修改 jc-gradle-multiple-demo 目录下的 settings.gradle 如下:
rootProject.name = 'jc-gradle-multiple-demo'
include 'demo-common', 'demo-db', 'demo-webservice'
  • 修改 jc-gradle-multiple-demo 目录下的 build.gradle 如下:
plugins {
        id 'org.springframework.boot' version '2.2.2.RELEASE'
        id 'io.spring.dependency-management' version '1.0.8.RELEASE' 
        id 'java'
        id 'eclipse'
        id 'application'
    }

allprojects {
    apply plugin: 'java'
    group = 'jc.gradle.demo'
    version = '1.0.0.RELEASE'
    repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
        maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/" }
        maven { url 'http://repo.spring.io/milestone' }
        maven { url 'https://jitpack.io' }
        mavenCentral()
    }

    dependencies {
        testImplementation 'junit:junit:4.12'
    }
    //此处需要修改编译的JDK版本,如:1.8
    sourceCompatibility = 12
    targetCompatibility = 12
}

subprojects {

}

project(':demo-common') {
    dependencies {
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.2.2.RELEASE'
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-freemarker', version: '2.2.2.RELEASE'
    }
}

project(':demo-db'){
    dependencies {
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version: '2.2.2.RELEASE'
        compile group: 'org.springframework.boot', name: 'spring-boot-starter-freemarker', version: '2.2.2.RELEASE'
        compile project(':demo-common')
        //如果需要使用数据库,可以在此处添加数据库依赖,以下是Mybatis和Mysql的相关依赖
        //compile group: 'org.mybatis.spring.boot', name: 'mybatis-spring-boot-starter', version: '2.0.0'
        //compile group: 'org.mybatis.generator', name: 'mybatis-generator-core', version: '1.3.1'
        //compile group: 'com.alibaba', name: 'druid', version: '0.2'
        //compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.44'
        //JC的工具类依赖包
        compile 'com.github.zerochen2016:jc-common:1.0.0.RELEASE1'
    }
    //如果采用了Mybatis,此处可以添加如下Groovy段,用于将xml打进jar包
    //processResources {
        //from('src/main/java') {
        //  include '**/*.xml'
        //}
    //} 
}


project(':demo-webservice') {

    dependencies {
        compile project(':demo-db')
    }

    jar {
        manifest {
            attributes 'Main-Class': 'jc.gmd.WSApplication'
        }
    }

    application {
        mainClassName = 'jc.gmd.ws.WSApplication'   
    }


}
  • 修改 demo-webservice 目录下的 build.gradle 如下:
apply plugin: 'io.spring.dependency-management'
apply plugin: 'eclipse'
apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'application'

mainClassName = 'jc.gmd.ws.WSApplication'

sourceCompatibility = 12

repositories {

    maven{
        url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
    maven { url "http://mvn.gt.igexin.com/nexus/content/repositories/releases/" }
    maven { url 'http://repo.spring.io/milestone' }
    maven { url 'https://jitpack.io' }
    mavenCentral()
}

buildscript {
    repositories {
        maven{
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }
        mavenCentral()
    }
    dependencies {
        classpath 'io.spring.gradle:dependency-management-plugin:1.0.8.RELEASE'
        classpath("org.springframework.boot:spring-boot-gradle-plugin:2.2.2.RELEASE")
    }
}
  • 在 jc-gradle-multiple-demo/demo-webservice/src/main/java/jc/gmd/ws 目录下构建类 WSApplication.java 和TestController.java 分别如下 WSApplication.java
package jc.gmd.ws;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;


@SpringBootApplication
@EnableAutoConfiguration
@ComponentScan(basePackages = { 
        "jc"
        })
@EnableScheduling
@EnableAsync
public class WSApplication {

    public static void main(String[] args) {
        SpringApplication.run(WSApplication.class, args);
    }   
}

TestController.java

package jc.gmd.ws;

import java.util.HashMap;
import java.util.Map;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import jc.common.util.GsonExtension;


@RestController
@RequestMapping("/test")
public class TestController {

    @RequestMapping("/api")
    public String api() {
        Map<String, Object> result = new HashMap<>();
        result.put("request success:", true);
        result.put("method from demo-common:", new jc.gmd.common.Library().someLibraryMethod());
        result.put("method from demo-db:", new jc.gmd.db.Library().someLibraryMethod());
        result.put("method from demo-webservice:", new jc.gmd.ws.Library().someLibraryMethod());
        return GsonExtension.GsonString(result);

    }
}

4. 发布部署

  • 在 jc-gradle-multiple-demo 目录下执行:gradle build , 然后你会看到根目录和子目录出现相应的build目录
  • 进入 demo-webservice/build/libs/ 目录,你会看到 demo-webservice-1.0.0.RELEASE.jar
  • 你可以在任意安装有jdk的机器运行jar包

Tips: linux后台运行jar包命令nohup java -jar demo-webservice-1.0.0.RELEASE.jar &

访问:http://IP:8080/test/api

如本地部署访问:http://localhost:8080/test/api

如果你看到返回结果:

{ "request success:": true, "method from demo-common:": true, "method from demo-db:": true, "method from demo-webservice:": true }

表示一切正常

附言

  • 转载请注明出处
  • 本文的代码,已上传至 https://github.com/zerochen2016/jc-gradle-multiple-demo
  • 如果你想了解更多的细节,可以访问SpringBoot官网或者Gradle官网
  • 有任何问题和建议,欢迎在github给我提issues或者联系我
  • 我的github账号 zerochen2016
  • 我的知乎账号 JC-木离
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值