整理筆記--gradle,筆記--gradle

來源:互聯網
上載者:User

整理筆記--gradle,筆記--gradle

Gradle

概念:開源的項目自動化構建工具,在Ant和Maven的基礎上,引入了基於Groovy的特定領域語言(DSL),不再使用XML形式管理構建指令碼。

Tools-->groovy Console-->開啟groovy視圖

Groovy與Java比較:

// 類、方法預設是public的 完全相容Java的文法public class ProjectVersion{// 大版本private int major;// 小版本private int minor;ProjectVersion(int major, int minor) {this.major = majorthis.minor = minor}int getMajor() {// 最後一個運算式的值會被作為傳回值(最後一個方法的return可以不寫)major}void setMajor(int major) {this.major = major}}// 分號是可選的ProjectVersion v1=new ProjectVersion(1,1)// 編譯器給屬性自定添加getter/setter方法 屬性可以直接用點號擷取println v1.minorProjectVersion v2=null// == 等同於equals(),不會有NullPlinterExceptionsprintln v2==v1

 

高效Groovy特性:

//1 可選的類型定義//def version=1//2 assert 失敗的斷言 因為version上面為1//assert version==2//3 括弧是可選的//println version//4 字串/*def s1='imooc' //僅僅是字串def s2="gradle version is ${version}" //可以插入變數def s3='''my name is imooc''' //可以換行println s1println s2println s3*///5 集合api//list/*def buildTools=['ant','maven']buildTools << 'gradle' //添加元素assert buildTools.getClass() == ArrayList //預設是ArrayListassert buildTools.size() ==3 //斷言size*///map/*def buildYears=['ant':2000,'maven':2004]buildYears.gradle=2009//添加元素println buildYears.antprintln buildYears['gradle']println buildYears.getClass() == LinkedHashMap //預設是LinkedHashMap*///6 閉包 代碼塊 一般用來方法傳參 (不是必須的)/*def c1={v ->print v}def c2={print 'hello'}def method1(Closure closure){closure('param') //帶參數的}def method2(Closure closure){closure() //不帶參數的}method1(c1)method2(c2)*/

 

 最簡單的例子(build.gradle):

//構建指令碼中預設都是有個Project執行個體的apply plugin:"java" //apply方法 plugin:"java"具名引數 --》代表著使用java這個外掛程式version='0.1' //變數repositories{mavenCentral() //閉包 無參調用repositories(倉庫)方法}dependencies{compile 'commons-codec:commons-codec:1.6' //閉包 有參調用dependencies(依賴管理)方法}

 

TODO應用程式版:

TodoItem類:

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;}@Overridepublic String toString() {return name+(hasDone ? "hasDone":"need to do")+"!";}}

App類:

import java.util.Scanner;public class App {public static void main(String[] args) {int i=0;Scanner scanner = new Scanner(System.in);while (++i>0){System.out.println(i+". please input todo item name:");TodoItem item=new TodoItem(scanner.nextLine());System.out.println(item);}}}

 

進入構建欄目:

然後打成jar包

有main()方法 就可以直接終端啟用了

 

 

TODO--web版:

右擊項目選擇add framework support --> 勾選web application(註:點擊Java EE可選擇java ee版本)==》添加web

編寫個簡單的index.html

apply plugin:'war' //使用war外掛程式

點擊war進行構建 構建好後 放到tomcat的webapps下 啟動tomcat進行測試

 

構建指令碼概要:

構建塊:

基本概念:

每個構建至少包含一個項目,項目中包含一個或多個任務。

1.項目(project)

一個項目代表一個正在構建的組件(比如一個jar檔案),當構建啟動後,Gradle會基於build.gradle執行個體化一個org.gradle.api.Project類,並且能夠通過project變數使其隱式可用。

group、name、version來確認倉庫中的唯一座標。

重要的方法:

1.apply(外掛程式) 2.dependencies(依賴) 3.repositories(倉庫) 4.task(任務)

屬性的其他配置方式:

ext、gradle.properties

2.任務(task)

對應org.gradle.api.Task。主要包括任務動作和任務依賴(dependsOn)。任務動作定義了一個最小的工作單元。可以定義依賴於其他任務、動作序列和執行條件。

自訂任務(build.gradle):

//閉包def createDir = {path ->File dir = new File(path);if (!dir.exists()) {dir.mkdirs();}}//自訂任務1task makeJavaDir() {def paths = ['src/main/java', 'src/main/resources', 'src/test/java', 'src/test/resources']//在動作列表之前插入doFirst {paths.forEach(createDir);}}//自訂任務2task makeWebDir(){//任務依賴dependsOn 'makeJavaDir'def paths=['src/main/webapp','src/test/webapp']//在動作列表之後插入doLast {paths.forEach(createDir)}}

 

進入構建欄目:

自訂任務在other這裡。

 

構建生命週期:

初始化(項目)-->配置(依賴關係和執行圖)-->執行(動作 如:doFirst doLast )

 

依賴管理:

常用倉庫:

mavenLocal/mavenCentral/jcenter==》第一個是本地倉庫 後兩個是公用倉庫

自訂maven倉庫==》maven私服

寫法:

repositories{maven{url '私服倉庫地址'}}

 

階段配置:

原始碼階段:

1.compile(編譯階段) 2.runtime(運行時階段)

測試階段:

1.testCompile(編譯階段) 2.testRuntime(運行時階段)

一般都使用編譯極端的依賴。

如:compile 'group、name、version'

解決版本衝突:

1.查看依賴報告

先修改預設解決方案策略(gradle預設依賴最新版本)

//發現版本衝突就自動構建失敗configurations.all{resolutionStrategy{failOnVersionConflict()}}

 

2.排除傳遞性依賴

compile('org.hibernate:hibernate-core:3.6.3.Final'){exclude group:"org.slf4j",module:"slf4j-api"}

 

3.強制一個版本

configurations.all{resolutionStrategy{force 'org.slf4j:slf4j-api:1.7.24'}}

 

多項目構建:

 

發布:

allprojects{apply plugin: 'java'sourceCompatibility=1.8//外掛程式發布apply plugin: 'maven-publish'publishing{publications{//可以定義多個發布包myPublish(MavenPublication){//發布javafrom components.java}}repositories{maven{name "自訂名稱"url "私服倉庫地址"}}}}

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.