【一】Gradle 初识

1.Gradle和Maven的对比

  1. gradle 使用groovy语言,可以进行逻辑判断,maven基于xml,无法进行逻辑判断。
  2. gradle 可以在一个项目中,根据需求,生成2个不同的jar, maven则不能从一个项目中,生成两个不同的jar或者war。需要修改多份xml。
  3. gralde 缓存会校验本地和远程是否发生变化,没变化就不会下载。maven不会。这里看gradle的目录结构,jar包的父层就是校验码。
  4. maven对于快照jar包,如果本地缓存了。那么远端仓库更新了,本地也不一定更新,而gradle 对于是否更新,可以做自定义的配置。

2.build.gradle

 1 #使用 java
 2 apply plugin: 'java'
 3 #设置版本号
 4 version = 0.3 
 5 #设置编译级别
 6 sourceCompatibility = 1.6
 7 
 8 #编译成jar
 9 jar {
10     manifest {
11         #设置启动类
12         attributes 'Main-Class': 'com.manning.gia.todo.ToDoApp'
13     }
14 }
15 #设置源码位置
16 sourceSets {
17     main {
18         java {
19             #设置源码目录
20             srcDirs = ['src']
21         }
22     }
23 }
24 
25 #输出的classes目录,默认是build
26 buildDir = 'out'
27 
28 #设置仓库
29 repositories {
30     mavenCentral()
31 }
32 #设置依赖
33 dependencies {
34     #依赖 groupId artifactId version
35     #测试时需要
36     testCompile group: 'junit', name: 'junit', version: '4.12'
37     #编译时需要 运行时不需要
38     providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
39     #编译时 运行时都需要
40     compile group: 'org.springframework', name: 'spring-core', version: '5.1.5.RELEASE'
41     #编译时需要 运行时不需要
42     providedCompile 'javax.servlet:servlet-api:2.5',
43             'javax.servlet.jsp:jsp-api:2.1'
44     #运行时需要,编译时不需要
45     runtime 'javax.servlet:jstl:1.1.2',
46             'taglibs:standard:1.1.2'
47 }
48 #指定wep app 目录在哪里
49 webAppDirName = 'webfiles'
50 #指定静态资源的目录 从哪里引入 这里的配置有 要和webAppDirName相关联
51 war {
52     from 'static'
53 }
54 #构建 gradlew 任务 
55 task wrapper(type: Wrapper) {
56     gradleVersion = '4.8'
57     distributionType = 'all'  # bin和all
58     distributionBase    //包装器下载的相对地址
59     distributionUrl     //包装器下载的地址
60 }

3.gradle生成的目录介绍

  1. gradle下的build ,类似maven中的targer
  2. 生成后的war,在gradle中的lib下
  3. distributions 默认发包的目录

4.groovy基本语法介绍

println("hello groovy!")
println "hello groovy!"
println "acbc" - "c" //输出abc 字符串的单个的加减,感觉比java方便
def i = 18 //定义变量 弱类型 //集合操作 def list = ['a', 'b']//定义集合 list << 'c' //添加元素 println list.get(1)//获取元素 println list //map操作 def map = ['key1':'value1','key2':'value2'] map.key3 = 'value3'//设置值 println map.get('key1')//获取元素 println map //定义方法类型对象 闭包对象 def b1 = { println "hello b1" } //调用闭包对象的方法, def method1(Closure closure) { closure() } method1(b1) //带参数的闭包方法调用 def b2 = { v -> println "hello ${v}"; } def method2(Closure closure) { closure("aaa") } method2(b2)
原文地址:https://www.cnblogs.com/amibandoufu/p/11342273.html