一、Gradle简介
Gradle是源于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置面向Java应用为主。当前其支持的语言暂时有Java、Groovy、Kotlin和Scala。
Gradle是一个基于JVM的构建工具,是一款通用灵活的构建工具,支持maven, Ivy仓库,支持传递性依赖管理,而不需要远程仓库或者是pom.xml和ivy.xml配置文件,基于Groovy,build脚本使用Groovy编写。
IDEA 2017.3以上版本支持。
二、安装
本例安装的Gradle是5.6.4版本
1、下载
官方网站:https://gradle.org/install/#manually
提供了两种下载方式,Binary-only是只下载二进制源码,Complete, with docs and sources是下载源码和文档。如果有阅读文档的需求可以下载第二个,没有需要的下载Binary-only即可。
2、安装
解压安装包到想安装到的目录。
3、配置
1)配置环境变量
GRADLE_HOME 环境变量
变量名:GRADLE_HOME
变量值:解压到的目录
export GRADLE_HOME=/Users/h__d/Applications/gradle-5.6.4 export PATH=$PATH:$GRADLE_HOME/bin
GRADLE_USER_HOME 仓库目录
变量名:GRADLE_USER_HOME
变量值:自定义Gradle仓库目录或者Maven的仓库目录
export GRADLE_USER_HOME=/Users/h__d/.m2/repository
2)配置Gradle仓库源
在Gradle安装目录下的 init.d 文件夹下,新建一个 init.gradle 文件,里面填写以下配置。
allprojects { repositories { maven { url 'file:///C:/Java/maven_repository'} mavenLocal() maven { name "Alibaba" ; url "https://maven.aliyun.com/repository/public" } maven { name "Bstek" ; url "http://nexus.bsdn.org/content/groups/public/" } mavenCentral() } buildscript { repositories { maven { name "Alibaba" ; url 'https://maven.aliyun.com/repository/public' } maven { name "Bstek" ; url 'http://nexus.bsdn.org/content/groups/public/' } maven { name "M2" ; url 'https://plugins.gradle.org/m2/' } } } }
repositories 中写的是获取 jar 包的顺序。先是本地的 Maven 仓库路径;接着的 mavenLocal() 是获取 Maven 本地仓库的路径,应该是和第一条一样,但是不冲突;第三条和第四条是从国内和国外的网络上仓库获取;最后的 mavenCentral() 是从Apache提供的中央仓库获取 jar 包。
三、新建Gradle项目
1、新建一个空文件夹test-gradle
2、进入test-gradle目录,使用命令初始化项目
命令:gradle init
MacBook-Pro-22907:test-gradle h__d$ gradle init Select type of project to generate: 1: basic 2: application 3: library 4: Gradle plugin Enter selection (default: basic) [1..4] 2 Select implementation language: 1: C++ 2: Groovy 3: Java 4: Kotlin 5: Swift Enter selection (default: Java) [1..5] 3 Select build script DSL: 1: Groovy 2: Kotlin Enter selection (default: Groovy) [1..2] 1 Select test framework: 1: JUnit 4 2: TestNG 3: Spock 4: JUnit Jupiter Enter selection (default: JUnit 4) [1..4] 1 Project name (default: test-gradle): Source package (default: test.gradle): > Task :init Get more help with your project: https://docs.gradle.org/5.6.4/userguide/tutorial_java_projects.html BUILD SUCCESSFUL in 32s 2 actionable tasks: 2 executed
3、初始化后的项目结构
├── build.gradle // 用于配置当前项目的Gradle构建脚本 ├── gradle │ └── wrapper │ ├── gradle-wrapper.jar // gradlew 的可执行JAR包 │ └── gradle-wrapper.properties // gradlew 的配置属性 ├── src // 源码目录 ├── gradlew // 基于 unix 的系统的 Gradlew 脚本 ├── gradlew.bat // 基于 windows 的系统的 Gradlew 脚本 └── settings.gradle // 用于配置 Gradle 构建的 Gradle 设置脚本
// gradle 构建文件 // 组 group 'com.test.gradle' // 版本 version '1.0-SNAPSHOT' // 支持 插件 apply plugin: 'java' // 源码编译版本 sourceCompatility = 1.8 /** * 仓库配置 */ repositories { // 配置先从本地仓库寻找jar包,优先寻找上一个配置,找到不执行下面的配置 // 本地仓库位于USER_HOME/.m2/repository mavenLocal() // aliyun镜像 maven { url 'https://maven.aliyun.com/nexus/content/groups/public/'} // Maven的中央仓库 mavenCentral() } /** * 依赖 * 每一个jar包的坐标都有三个基本元素组成 * group、name、version * testCompile 表示该jar包在测试的时候起作用,该属性为jar包的作用域 * 在gradle里面添加坐标的时候都要带上jar包的作用域 */ dependencies { // spring 依赖 implementation group: 'org.springframework', name: 'spring-context', version: '5.2.4.RELEASE' testCompile group: 'junit', name: 'junit', version: '4.12' }
5、运行项目,可以运行App.java文件
1 public class App { 2 public String getGreeting() { 3 return "Hello world."; 4 } 5 6 public static void main(String[] args) { 7 System.out.println(new App().getGreeting()); 8 } 9 }
其他
联系groovy文件
// groovy控制台 // 介绍groovy编程语言 println("hello world"); // groovy中如何定义变量 // groovy变量是弱类型 def i = 18; println(i); def s = "xiaoming" println s; // 定义一个集合 def list = ['a', 'b'] list << 'c' println list.get(2) // 定义一个map def map = ['key1':'value1', 'key2':'value2'] map.key3 = 'value33'; println map.get('key3'); // groovy中的闭包 // 闭包就是一个段代码块,在gradle中,主要是把闭包当参数来使用 def b1 = { println "hello b1" } // 定义一个方法,方法里面需要闭包类型的参数 // Closure 闭包类型 def method1(Closure closure) { // 运行闭包 closure() } // 调用方法 method1(b1) // 定义带参数的闭包 def b2 = { v -> println "hello ${v}" } def method2(Closure closure) { closure("小黑") } method2(b2)
参考:
1、https://www.cnblogs.com/NyanKoSenSei/p/11458953.html
2、https://zhuanlan.zhihu.com/p/159589727
3、https://www.jianshu.com/p/8c8e848ca1a2