Gradle构建SpringCloud

由于Maven构建是在有点慢,而且Gradle有缓存和增量构建功能所以决定迁移到Gradle。

在Maven项目中包含pom.xml文件夹下执行gradle init即可,不过有时候无法自动生成build.gradle可以用Idea自动生成一个空项目模板再手动修改。

首先是指定构建插件仓库并引入插件

buildscript {
    ext {
        springBootVersion = '1.5.9.RELEASE'
    }
    repositories {
        maven { url "http://maven.aliyun.com/nexus/content/groups/public/" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'

设置依赖

ext {
    springCloudVersion = 'Edgware.SR2'
}

dependencies {
    compile('org.springframework.cloud:spring-cloud-starter-oauth2')
    compile('org.springframework.cloud:spring-cloud-starter-feign')
    compile('org.springframework.boot:spring-boot-starter-freemarker')
    compile('org.springframework.boot:spring-boot-starter-aop')
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile('org.springframework.cloud:spring-cloud-starter-eureka')
    compile('org.springframework.cloud:spring-cloud-starter-config')
    compile group: 'org.springframework.retry', name: 'spring-retry', version:'1.2.1.RELEASE'
    compile('org.projectlombok:lombok:1.16.20')
    testCompile('org.springframework.boot:spring-boot-starter-test') {
        exclude(module: 'commons-logging')
    }
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

需要升级到SpringBoot 2.0则替换相应版本即可。由于引入了io.spring.dependency-management,所有SpringCloud和SpringBoot管理的依赖包可以省略版本号。

同时还可对jar包瘦身

jar {
    enabled = true
    manifest {
        attributes 'Main-Class': 'com.company.ServerApplication'
    }
}

//change to bootJar for SpringBoot 2.0
bootRepackage {
    enabled = false
}

构建时拷贝依赖包

task copyLib(type: Copy) {
    copy {
        from configurations.runtime
        into "$buildDir/lib"
    }
    doFirst {
        if(inputs.empty) throw new GradleException("Input source for copyLib doesn't exist")
    }
}

最后启动java -cp com.company.package.jar:lib/* com.company.ServerApplication即可。

当然也可以在打包时将依赖包路径写入MANIFEST.MF文件实现直接用java -jar com.company.package.jar启动。

'Class-Path': configurations.compile.files.collect { "./lib/$it.name" }.join(' '),

另外要开启Gradle Daemon需要在Jenkinsfile里加上JENKINS_NODE_COOKIE = ‘dontKillMe’这样每次构建完成就不会停止gradle daemon了。

    原文作者:Rickywu1113
    原文地址: https://www.jianshu.com/p/a8429f12ac9f
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞