chenkai00 2019-11-05
一、背景
二、Gradle 的安装配置
下载
https://services.gradle.org/distributions/
安装过程直接解压即可
配置环境变量

然后在Path中添加 %GRADLE_HOME%\bin
如果需要指定 gradle 项目本地仓库的目录,则增加一个 GRADLE_USER_HOME 环境变量的配置,目录指定本地仓库的目录,如下:

测试
在命令行窗口输入:gradle -v 或 gradle -version
三、Gradle 常用命令
四、Gradle构建Java项目
1、新建一个Java项目
略
2、配置 gradle.build
在一个 Gradle 项目中一般会有多个 build.gradle 配置文件,我们通常配置最上层的 build.gradle 文件作用于整个工程,对于不同子工程/模块差异的依赖或需求,我们再到对应的 build.gradle 文件中进行配置。
先来看一个标准的 Gradle 项目配置,如下:
allprojects {
    group ‘com.jack.course‘
    version ‘1.0.0-SNAPSHOT‘
    buildDir = ‘target‘
    apply plugin: ‘java‘
    apply plugin: ‘idea‘
    apply plugin: ‘maven‘
}
subprojects {
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    repositories {
        mavenLocal()
        maven { url ‘http://maven.aliyun.com/nexus/content/groups/public/‘ }
        mavenCentral()
    }
    idea {
        module {
            downloadSources = true
            downloadJavadoc = false
            sourceDirs += file(‘src/main/resources‘)
        }
    }
    configurations {
        all*.exclude group: ‘org.apache.logging.log4j‘, module: ‘log4j-slf4j-impl‘
        all*.exclude group: ‘org.apache.logging.log4j‘, module: ‘log4j-api‘
        all*.exclude group: ‘org.apache.logging.log4j‘, module: ‘log4j-core‘
        all*.exclude group: ‘org.apache.logging.log4j‘, module: ‘log4j-1.2-api‘
        all*.exclude group: ‘org.slf4j‘, module: ‘log4j-over-slf4j‘
        all*.exclude group: ‘org.slf4j‘, module: ‘slf4j-ext‘
        all*.exclude group: ‘org.slf4j‘, module: ‘slf4j-log4j12‘
        all*.exclude group: ‘log4j‘, module: ‘log4j‘
        deployerJars
    }
    dependencies {
        compile(‘ch.qos.logback:logback-core:1.2.3‘)
        compile(‘ch.qos.logback:logback-classic:1.2.3‘)
        compile(‘org.projectlombok:lombok:1.18.8‘)
        compile(‘com.google.guava:guava:28.0-jre‘)
        compile(‘org.apache.commons:commons-lang3:3.9‘)
        compile(‘com.google.code.gson:gson:2.8.5‘)
    }
}Gradle项目配置
allprojects
subprojects 之下的是对所有子工程/模块的构建配置
sourceCompatibility = 1.8
targetCompatibility = 1.8
repositories
idea
configurations
排除传递依赖有多种原因,远程仓库中不存在,运行时不需要,或者版本冲突。排除传递依赖的方式有两种:1.直接在configuration中排除 2.在具体的某个dependency中排除
configurations {
    compile.exclude module: ‘commons‘
    all*.exclude group: ‘org.gradle.test.excludes‘, module: ‘reports‘
}
dependencies {
    compile("org.gradle.test.excludes:api:1.0") {
        exclude module: ‘shared‘
    }
}dependencies
指定依赖的 jar 包或模块,语法如下:
dependencies {
    compile(‘org.projectlombok:lombok:1.18.8‘)
    compile(‘com.google.guava:guava:28.0-jre‘)
}模块/工程间的依赖则是如下形式:
dependencies {
    compile project(":common")
    compile project(":env")
}SourceSets
用于指定不同的项目结构,如下:sourceSets {
    main {
        java {
            srcDir ‘src/main/java‘
        }
        resources {
            srcDir ‘src/main/resources‘
        }
    }
}
指定源代码存储在 src/main/java 目录下,资源文件存储在 src/main/resources 目录下,这是默认配置,可以进行更改。
五、使用Maven插件发布
apply plugin: ‘maven-publish‘
# 指定包的groupId、artifactId和version方便以后引用
ext {
    pubGroupId = "com.jack.dubbo"
    pubProjectName = "dubbo-order-api"
    pubVersion = "0.0.1"
}
publishing {
    publications {
        publishing.publications.create("${pubProjectName}", MavenPublication) {
            groupId pubGroupId
            artifactId pubProjectName
            version pubVersion
            artifact jar
        }
    }
    // 配置发布到哪里
    repositories {
        maven {
            // 指定要上传的 maven 私服仓库
            url = ""
            // 认证用户和密码
            credentials {
                username ‘root‘
                password ‘admin‘
            }
        }
    }
}发布配置

一般在公司就是将项目发布到私服供其他项目使用,直接操作 publish,发布到本地使用 publishToMavenLocal 即可。