赞
踩
Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具,他抛弃掉了maven的繁琐的xml配置文件,使用Groovy语言去书写配置,整个配置文件更加的清晰,功能也更加强大。
Gradle使用的是Groovy动态语言,Groovy的基本的语法,类型,包结构和其他方面都与 Java 一样,Groovy 在这之上又增加了许多东西。但是和 Java 也有着共同点。
https://gradle.org/releases/
进入官方下载地址后,选择对应的版本,下载binary-only就可以,点击下载
确保java的环境存在,确保jdk的安装。
将下载下来的压缩包解压,把文件可以放在自己的目录下,一定要记住存放地址。比如我放在了下面的文件
打开终端来配置环境变量
输入
vi ~/.bash_profile
回车后后点击
i
进入编辑模式,输入一下内容,这里需要确保home的路径是正确的,输入之前存放gradle的目录GRADLE_HOME=/Users/xiaolong/java/gradle PATH=$PATH:$GRADLE_HOME/bin export GRADLE_HOME GRADLE_USER_HOME PATH
- 1
- 2
- 3
输入结束后点击esc键,进去指令模式,输入
:
唤醒输入条,输入wq保存,点击回车
执行
source ~/.bash_profile
让配置生效
配置好以后在终端输入gradle -v
,来查看gradle版本,如果正常打印版本,说明配置成功。
打开IDEA后,新建项目,我们可以选择建一个Gradle项目,一路next
进入到项目后,打开IDEA的配置,找到gradle配置,设置如下配置
打开IDEA的工具,我们可以直接去书写Groovy代码
Groovy语言和java语言比较相似,相比起来更加的轻松,在Groovy语言中,我们可以在语句的结尾不添加分号,下面是打印语言的书写
// 打印语句
println("hello world");
// Groovy中可以省略结尾分号,和括号
println("hello groovy")
println "hello groovy"
// def是弱类型的,Groovy会根据后面的值来赋予对应的类型 def i = 18 println i // 定义字符串 def str = "你好" println str // 定义布尔类型 def flag = true // if语句 if (flag){ println "flag为true" } // 定义int int count = 0 // while语句 while(flag){ if (count==5){ break } println '你好' count++ }
// 定义集合 def list = ['a', 'b']; // 往list中添加元素 list << 'c'; // 也可以使用add方法 list.add('d') // for循环 for (j in 0..<list.size()) { println list.get(j); } // 定义一个map def map = ['key1':'value1','key2':'value2'] // 添加到map map.key3 = 'value3' map.put('key4','value4') println map.key3 println map.get('key3') // 得到entry集合 def set = map.entrySet() // 迭代集合 def it = set.iterator() while(it.hasNext()){ def entry = it.next() // 获得key和value def key = entry.key def value = entry.value println key+':'+value }
// 闭包 // 闭包就是一段代码块,在gradle中主要是把闭包当作参数来使用 // 定义闭包 def b1 ={ println 'b1执行了'; } def method1(Closure closure){ closure(); } // 调用方法 method1(b1); // 定义一个带参数的闭包 def b2 = { v-> println "hello ${v}" } def method2(Closure closure,String str){ closure(str); } method2 (b2,"晓龙")
gradle也和maven一样,可以配置本地的仓库,不过它却不像maven一样可以直接配置文件中配置本地仓库,它需要通过修改环境变量的值来对仓库的地址进行变化。
GRADLE_USER_HOME=/Users/...
,后面的值就是仓库的地址,这里可以直接写到maven的仓库。通过IDEA新建一个Gradle项目,在项目初始化化后,点击打开
build.gradle
build.gradle
/* * 因为是java项目,这里的插件默认只有java */ plugins { id 'java' } group 'com.moon' version '1.0-SNAPSHOT' /** * 指定所使用的仓库 */ repositories { /*先从本地仓库寻找,再去中央仓库下载*/ mavenLocal() /*表示使用中央仓库,此刻项目中所需要的jar包都会在中央仓库下载到本地仓库*/ mavenCentral() } /*gradle工程的jar包的坐标都在dependencies中放的 * 每一个jar包都有三个元素组成 * group:name:version * * 我们在添加jar包时都需要带上jar包的作用域 * */ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' implementation group: 'org.springframework', name: 'spring-context', version: '5.2.12.RELEASE' }
我们创建的项目默认是一个java项目,项目结构也值有
main
和resource
,并没有webapp
,这时候我们可以手动去建一个web目录,但是这时候的web目录和我们web项目的目录并不一样,显然gradle并没有识别我们的目录,所以我们需要在配置文件中进行配置。
build.gradle
/* 我们只需要在插件中加入war的插件,这时候项目就会识别webapp */
plugins {
id 'java'
id 'war'
}
在多个模块中,我们的父配置文件可以将配置信息直接用于子配置文件,这时我们也需要在配置文件中设置
build.gradle
/*把所有的配置都写在allprojects{}代码块中,子配置文件就可以使用这些配置*/ allprojects { group 'com.moon' version '1.0-SNAPSHOT' apply plugin: 'java' repositories { mavenLocal() mavenCentral() } sourceCompatibility = '1.8' dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' implementation group: 'org.springframework', name: 'spring-context', version: '5.2.12.RELEASE' implementation group: 'org.aspectj', name: 'aspectjweaver', version: '1.9.6' } test { useJUnitPlatform() } }
有了以上配置文件,那么在子配置文件中,只要是和父配置文件一致的内容,全部可以删除
在settings.gradle配置文件中,我们也可以看到当前项目的模块结构
/* 项目名称 */
rootProject.name = 'SpringAOP'
/* 模块名称 */
include 'SpringAOP-Dao'
include 'SpringAOP-Service'
include 'SpringAOP-Web'
include 'Spring-Aspect'
如果模块中想要项目去调用的话,只需要在子配置文件中声明,service模块需要调用dao模块
/* 配置文件需要写一行即可,其他配置使用父配置文件 */
dependencies {
implementation project(":SpringAOP-Dao")
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。