Gradle-Springboot 项目打包

运行 gradle bootRepackage 命令即可打包,输出到 build/libs
添加apply plugin: 'application'后可以打包输出到 build/distributions 目录

buildscript {  
    ext {
        springBootVersion = '1.5.14.RELEASE'
        springIOVersion = '1.0.0.RELEASE'
    }

    // gradle 脚本自身需要使用的资源
    repositories {
        //mavenCentral()
        maven {
            url "http://maven.aliyun.com/nexus/content/groups/public/"
        }        
    }

    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        // 热部署
        classpath 'org.springframework:springloaded:1.2.8.RELEASE'
        classpath "io.spring.gradle:dependency-management-plugin:${springIOVersion}"
    }
}

def appMainClass = 'com.sherlocky.job.Application'

// apply plugin: 'java' // 已被 java-library 取代
apply plugin: 'java-library'  
apply plugin: 'org.springframework.boot'  
// apply plugin: 'war'
// IDE 文件生成
apply plugin: 'eclipse'  
apply plugin: 'idea'

// 生成启动脚本并打包tar/zip
apply plugin: 'application'  
mainClassName = appMainClass

group 'com.sherlocky'  
version '0.0.1-SNAPSHOT'

[compileJava, compileTestJava, javadoc]*.options*.encoding = 'utf-8'
//设置jdk的版本
sourceCompatibility = 1.8  
targetCompatibility = 1.8

// 依赖配置 compile, runtime, testCompile, testRuntime(默认的,包含前面三个依赖)
configurations {  
    testRuntime
}

dependencies {  
    // compile gradle 3.0+ 已被标为过时方法,而新增了两个依赖指令,一个是implement 和api,这两个都可以进行依赖添加
    // api 指令: 完全等同于compile指令,没区别,你将所有的compile改成api,完全没问题
    api ('org.springframework.boot:spring-boot-starter-web')
    api 'com.xuxueli:xxl-job-core:1.9.1'
    // implement 指令: 对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,
    // 也就是将该依赖隐藏在内部,而不对外部公开 
    // Google IO 相关话题的中提到了一个建议,就是依赖首先应该设置为implement的,如果没有错,那就用implement,如果有错,那么使用api指令,这样会使编译速度有所增快
    implementation 'com.google.guava:guava:23.0'

    testCompile('org.springframework.boot:spring-boot-starter-test')

    runtime group: 'org.springframework.boot', name: 'spring-boot-starter-tomcat'//, version: 'xxx'
}

// 项目自身需要的资源
repositories {  
    // mavenCentral()
    maven {
        url "http://maven.aliyun.com/nexus/content/groups/public/"
    }
}
// 对于 springboot 的 gradle 项目,可以直接运行 bootRepackage 打可执行jar包,再结合 plugin: 'application' 可以打包成带执行脚本的格式