gradle開源的項目自動化構建工具,創建在Apache ant和Apache maven的蓋臉基礎之上,並基於特定的Groovy的特色領域語言,而再也不用XML管理構建腳本
依賴管理:依賴,測試,打包,發佈 java
https://gradle.orgweb
解壓;
unzip gradle-3.5.1-bin.zip編程
配置換件變量
GRADLE_HOME=/usr/local/gradle/gradle-3.5.1
export GRADLE_HOME
export PATH=$PATH:$GRADLE_HOME/bin閉包
是用於Java虛擬機的一種敏捷的動態語言,他是一種成熟的面相對象的編程語言,既能夠面向對象,也能夠用做存粹的腳本語言,使用該語言沒必要編寫過多的代碼,同時又具備閉包和動態語言的特性app
徹底兼容java語法,分號可選,類,方法默認都是public
編譯器自動添加getter/setter方法
屬性能夠直接用點號獲取
最後一個表達式的值被做爲返回值
自帶assert
類型弱類型
括號可選
字符串,單雙三
閉包
集合APIwebapp
public class ProjectVersion {maven
//ingron ;
private int major
private int min編程語言
public ProjectVersion(int major, int min) {
this.major = major
this.min = min
}ide
//groovy can add getter/setter 工具
}
ProjectVersion p = new ProjectVersion(1,2);
println p.major
ProjectVersion p1 = null
println p1 == p
1
false
==========================
//1.可選的類型定義
def version = 1
print version
1=========================
//assert
def version = 1;
assert version == 2
Assertion failed:
assert version == 2
| |
1 false
at org.codehaus.groovy.runtime.InvokerHelper.assertFailed(InvokerHelper.java:398)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.assertFailed(ScriptBytecodeAdapter.java:648)
at ideaGroovyConsole.run(ideaGroovyConsole.groovy:6)
......
============================
> def s1 = 'xp'
def s2 = "xp"
def s3 = """dfsdfsdf"""
def s4 = '''dfsdfsdfs'''
println s1
println s2
println s3
println s4
xp
xp
dfsdfsdf
dfsdfsdfs
==========================
//集合API
def tools = ['ant','maven']
tools << 'gradle'//追加
assert tools.getClass() == ArrayList
assert tools.size() == 3
==========================
def buildyear = ['ant':2000,'maven':2004]
buildyear.gradle = 2009//添加
println buildyear.gradle
println buildyear.ant
println buildyear.maven
println buildyear['maven']
2009
2000
2004
2004
==========================
//閉包
def c1 = {
v ->
println v
}
def c2 = {
println 'hello'
}
def method1 (Closure c) {
c('param')
}
def method2 (Closure c) {
c()
}
method1(c1)
method1(c2)
==========================
//構建腳本中國呢默認都是有一個Project實例的
//Project上有兩個屬性分別是group和version,值分別是com.nakedhub.gradle和1.0-SNAPSHOT
group 'com.nakedhub.gradle'
version '1.0-SNAPSHOT'
Project實例上有一個方法apply這裏省略了括號,plugin的值是java
apply plugin: 'java'
sourceCompatibility = 1.5
//repositories是一個方法,這是閉包結構,閉包做爲參數調用方法repositories
repositories {
mavenCentral()
}
//dependencies這是一個方法,這是閉包結構,閉包做爲參數調用方法dependencies
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.11'
}
=============================
gradle的構建目錄和maven是同樣的
src
main
java
resources
webapp
test
java
resources
==============================
package com.nakedhub.todo;
import java.util.Scanner;
/**
* Created by xupan on 2018/1/15.
*/
public class APP {
public static void main (String[] args){
int i = 0;
Scanner scanner = new Scanner(System.in);
ToDoItem item = new ToDoItem(scanner.nextLine());
System.out.print(item);
}
}
package com.nakedhub.todo;
/**
* Created by xupan on 2018/1/15.
*/
public class ToDoItem {
//代辦事項的名稱
private String name;
//是否完成
private boolean hasDone;
public ToDoItem(String name){
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isHasDone() {
return hasDone;
}
public void setHasDone(boolean hasDone) {
this.hasDone = hasDone;
}
@Override
public String toString() {
return "ToDoItem{" +
"name='" + name + '\'' +
", hasDone=" + hasDone +
'}';
}
}
--打包運行 xpMac:groovy xupan$ java -classpath build/libs/groovy-1.0-SNAPSHOT.jar com.nakedhub.todo.APP hhdd ToDoItem{name='hhdd', hasDone=false}