Gradle

Gradle Compile Tool

Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。

环境准备

  1. 打开官方网站:https://gradle.org/install 下载对应的版本包,例如gradle-6.4.1-bin.zip
  2. 在 Windows 中配置 gradle,解压到指定目录(e.g. D:/Program), then add bin directory to PATH.
  3. 在 Linux 中配置 gradle, 一般我们解压到 /opt 目录中,然后添加环境变量
# 添加环境变量:
[root@node7 bin]# vim /etc/profile
export PATH=$PATH:/opt/gradle-4.4/bin
[root@node7 bin]# source /etc/profile
[root@node7 bin]# gradle -v

配置文件

buildscript 区域

  • 该区域中有 repositories、dependencies 配置,标识 gradle 脚本自身需要使用的资源。
  • 而在build.gradle文件中直接声明的依赖项、仓库地址等信息是项目自身需要的资源。
buildscript {
    repositories {
        mavenLocal()
        maven { url "https://repo.grails.org/grails/core" }
    }
    dependencies {
        classpath "org.grails:grails-gradle-plugin:$grailsVersion"
        classpath "org.grails.plugins:hibernate5:${gormVersion - ".RELEASE"}"
        classpath "com.bertramlabs.plugins:asset-pipeline-gradle:2.15.1"
    }
}

基本属性 区域

version "0.1"
group "com.next"

plugin 区域

Gradle是一个通用的构建工具,通过它的构建脚本你可以构建任何你想要实现的东西,不过前提是你需要先写好构建脚本的代码。而大部分的项目,它们的构建流程基本是一样的,我们不必为每一个工程都编写它的构建代码,因为Gradle已经为我们提供了相应的插件。Gradle 本身自带了许多插件,而对于Gradle没有的插件,可以去github上看看有没有其他人实现,或自己实现。对Java项目而言,Gradle有Java插件,提供了像编译、测试、打包之类的功能。这里简单介绍一下Java插件。Java插件为构建项目定义了许多的默认设置,像源文件目录,编译后的文件存放位置等等。如果你是按着默认的规则来的,那么构建脚本将会很简单。当然,如果项目结构不一样,也可以自己指定这些规则。这里暂不介绍,只说一下基本的用法。

apply plugin: "eclipse"
apply plugin: "idea"
apply plugin: "war"
apply plugin: "org.grails.grails-web"
apply plugin: "asset-pipeline"
apply plugin: "org.grails.grails-gsp"
/*
使用JAVA插件,定义一个Java项目只需要添加这么一句代码,它会为你添加Java插件,以及一些内置任务。
默认情况下,Gradle会在
src/main/java中查找你的源码,
src/test/java中查找你的测试代码,
src/main/resources下的文件都会被打包,
src/test/resources下的文件会被包含在classpath中用于测试。
所有输出的文件都保存在build目录里,而生成的jar包则是在build/libs里面。
*/
apply plugin: 'java'

repositories 区域

  • 不同于 buildscript 区域中的配置,这里配置的是项目内容所需要的仓库地址,告诉Gradle在哪里可以找到这些依赖。
  • 当访问官方源太慢的时候,可以配置成国内的源地址。
repositories {
    // 本地仓库
    mavenLocal()
    // 在线仓库
    maven { url "https://repo.grails.org/grails/core" }
    // mavenCentral()
    // maven { url "https://jcenter.bintray.com" }
    // maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
    // maven { url 'https://maven.aliyun.com/repository/google' }
    // maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
    // maven { url 'https://maven.aliyun.com/repository/jcenter'}
}

dependencies 区域

  • 不同于 buildscript 区域中的配置,这里配置的是项目内容所需要的依赖信息
  • 留意版本上的 + 号,它会在编译的时候找到最新的包
  • 如果需要升级框架本身所依赖的包就直接在这里定义即可
dependencies {
    // compile 阶段需要使用的依赖,如下两种写法都可以。
    compile "org.springframework.boot:spring-boot-starter-logging"
    compile group: 'commons-collections', name: 'commons-collections', version: '3.2'

    // runtime 阶段需要使用到的依赖。
    runtime "com.bertramlabs.plugins:asset-pipeline-grails:2.15.+"
    testCompile "org.grails:grails-web-testing-support"
    testRuntime "net.sourceforge.htmlunit:htmlunit:2.+"
    // 第三方jar包的一种添加方式
    compile fileTree(dir: 'libs', include: '*.jar')
}

bootRun 区域

bootRun {
    jvmArgs('-Dspring.output.ansi.enabled=always')
    jvmArgs('-Xmx4096m')
    addResources = true
    String springProfilesActive = 'spring.profiles.active'
    systemProperty springProfilesActive, System.getProperty(springProfilesActive)
}

grails 区域?

  • 不知道这是不是 gradle 的标准配置,尚未深入了解。
  • 在 Windows 终端启动 grails 程序的时候,会因为文件或者命令太长导致启动失败,配置上这个就好了。
grails {
    pathingJar = true
}

assets 区域?

assets {
    minifyJs = true
    minifyCss = true
}

常用命令

gradle eclipse  # 构建开发环境,下载定义的jar包
gradle build    # 编译项目,生成build文件夹,并生成相应的jar或war包。
gradle clean    # 删除build目录和其他构建时生成的文件。。
gradlw assemble # 编译并打包,不执行单元测试。一些其他插件可能会增强这个任务,如 War 插件会再打出war包。
gradlw check    # 编译并测试代码。其他插件可能会增强这个任务。如 Code-quality 插件会让这个任务去执行Checkstyle。

常用包

// 谷歌二维码
compile group: 'com.google.zxing', name: 'core', version: '3.4.0'
compile group: 'com.google.zxing', name: 'javase', version: '3.4.0'
// IText5,已经不用了,现在用 Itext7
compile group: 'com.itextpdf', name: 'itextpdf', version: '5.5.13.1'
compile group: 'com.itextpdf', name: 'itext-asian', version: '5.2.0'

// Jasper Report 依赖选项
compile group: 'com.lowagie', name: 'itext', version: '2.1.7'
compile group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.13.0'

// 阿里:云存储
compile group: 'com.aliyun.oss', name: 'aliyun-sdk-oss', version: '3.11.1'
// 阿里:JSON
compile group: 'com.alibaba', name: 'fastjson', version: '1.2.75'


compile group: 'commons-io', name: 'commons-io', version: '2.8.0'

runtime 'org.postgresql:postgresql:42.+'

常见问题

在使用IDEA作为开发环境里的时候,导入Gradle的项目,因为不同的配置环境,可能回下载指定版本的Gradle,有的时候可能因为网络等问题导致下载失败,这时我们就需要删除临时的文件,重新下载或者手动下载。

C:\Users\ducha\.gradle\wrapper\dists\gradle-5.3-all\a2o9bs8pjyp10tdbmwhtqkmvn\gradle-5.3-all.zip

关于漏洞,例如现在我们使用 Grails 框架3系列的版本,如果框架本身依赖的包太旧了,互联网暴漏出一些漏洞,这里我们就需要升级依赖的jar包,这里我们直接就在这里更新依赖即可。

posted @ 2020-05-28 09:08  duchaoqun  阅读(200)  评论(0编辑  收藏  举报