Gradle
Gradle Compile Tool
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建工具。它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置。面向Java应用为主。当前其支持的语言限于Java、Groovy、Kotlin和Scala,计划未来将支持更多的语言。
环境准备
- 打开官方网站:https://gradle.org/install 下载对应的版本包,例如gradle-6.4.1-bin.zip
- 在 Windows 中配置 gradle,解压到指定目录(e.g. D:/Program), then add bin directory to PATH.
- 在 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包,这里我们直接就在这里更新依赖即可。
本文来自博客园,作者:duchaoqun,转载请注明原文链接:https://www.cnblogs.com/duchaoqun/p/12978307.html