zoukankan      html  css  js  c++  java
  • springboot-000 搭建gradle多模块项目

     之前学过springboot,但是因为公司没有这方面的需求,所以一直没有用到开发中,正好趁着最近有点时间打算重新做下梳理,做着笔记,加固印象。

    这是springboot第一章节,搭建gradle多模块项目。

    gradle是一种构建工具,帮我们构建App。构建包括编译、打包等过程。在gradle中,每个待编译的工程就是一个project,构建一个project需要 执行一系列task,如果想让gradle正确执行task需要我们引入对应的插件。gradle和maven相比,配置更加灵活简单,相对于maven的xml配置(虽然 通俗易懂,但是很难在xml中描述if、else等这样有不同条件的任务),gradle采用灵活简洁的groovy脚本语言,大大简化了构建代码的行数,而且groovy是基于java并拓展了java,java程序员可以无缝切换groovy开发程序,groovy就是把写java变的像写脚本一样简单,写完就可以执行,groovy内部会将其编译成java字节码,然后启动虚拟机(jvm)来执行。

    接下来就是使用idea搭建gradle多模块项目了,打开idea,选择file,创建项目

    点击next,选择项目所在的目录groupId, 创建项目名称ArtifactId,点解next,点击finish。

    成功后,项目的目录如下

     然后就是搭建其他模块,点击项目名称,右键new model,下面页面基本没什么需要修改的,点击next,输入ArtifactId,点击next,点击finish,即可

    最后,目录结构如下 :

    gradle.properties的配置信息:

    org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8

     主项目的build.gradle的配置信息如下:

    // 指定要应用的插件和版本
    plugins {
        id 'java'
        id "org.springframework.boot" version "2.1.2.RELEASE"
        id "io.spring.dependency-management" version "1.0.6.RELEASE"
    }
    
    // 指定下载的仓库地址
    allprojects {
        repositories {
            maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'}
            jcenter()
            mavenCentral()
        }
    }
    
    group 'com.pf.springboot'
    
    // 指定依赖版本
    ext.spring_cloud_version = "Greenwich.RELEASE"
    ext['lombok.version'] = "1.18.4"
    
    // 应用于所有依赖的子项目
    subprojects {
        version '1.0-SNAPSHOT'
        // 应用插件
        apply plugin: "java"
        apply plugin: "org.springframework.boot"
        apply plugin: "io.spring.dependency-management"
    
        // 设置编译和运行的jre兼容版本
        sourceCompatibility = '1.8'
        targetCompatibility = '1.8'
    
        // 字符编码处理
        def defaultEncoding = 'UTF-8'
        tasks.withType(AbstractCompile).each { it.options.encoding = defaultEncoding }
    
        // 生成Java文档的任务
        javadoc {
            options.encoding = defaultEncoding
            options.addBooleanOption('Xdoclint:none', true)
        }
    
        // Java编译任务依赖处理资源的任务
        compileJava.dependsOn(processResources)
    
        // 指定要运行测试的包
        test {
            include "**/repository/**", "**/service/**", "**/controller/**"
        }
    
        // spring boot构建任务
        springBoot {
            buildInfo()
        }
    
        dependencyManagement {
            // 导入maven依赖管理的bom
            imports {
                mavenBom "org.springframework.cloud:spring-cloud-dependencies:${spring_cloud_version}"
                mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
            }
        }
    
        /*
        * 为所有模块指定公共的依赖
        * 注意这里有些默认不用再指定版本了,已经由上面的dependencyManagement管理了
        * */
        dependencies {
            annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
            annotationProcessor "org.projectlombok:lombok"
            compileOnly "org.springframework.boot:spring-boot-configuration-processor"
            compileOnly "org.projectlombok:lombok"
            implementation "org.apache.commons:commons-lang3"
            implementation "org.apache.commons:commons-collections4:4.3"
            implementation "org.springframework.boot:spring-boot-starter-web"
    //        implementation "org.springframework.boot:spring-boot-starter-jdbc"
            implementation fileTree(dir: 'libs', includes: ['*.jar'])
            testAnnotationProcessor "org.projectlombok:lombok"
            testCompileOnly "org.projectlombok:lombok"
            testImplementation "org.springframework.boot:spring-boot-starter-test"
        }
    }

    至此基本架构已搭建完成。接下来就要添加各模块之间的依赖了。首先我们梳理下依赖关系,service->respository;web->service;最后我们是把web打成war包,那么respository和service需要做为jar包被引用,所以,respository的build.gradle如下:

    service的build.gradle如下:

     最后就是web的了:

  • 相关阅读:
    环境变量设置set env exportFedora Centos日志我的搜狐
    Hadoop Streaming 编程
    业务开发测试HBase之旅三:通过Java Api与HBase交互
    hadoop+zookeeper+hbase安装_dekar_x的空间_百度空间
    HBase Java客户端编程
    Hadoop应用测试
    HBase vs Cassandra: 我们迁移系统的原因
    关于HBase的一些零碎事
    奔流 | 自由、奔放的技术刊物
    Paxos在大型系统中常见的应用场景
  • 原文地址:https://www.cnblogs.com/ly-gaoshuaige/p/12045823.html
Copyright © 2011-2022 走看看