亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

慕課網(wǎng)_《新一代構(gòu)建工具gradle》學(xué)習(xí)總結(jié)

antyiwei / 2742人閱讀

摘要:時間年月日星期二說明本文部分內(nèi)容均來自慕課網(wǎng)。項目一個項目代表一個正在構(gòu)建的組件比如一個文件,當(dāng)構(gòu)建啟動后,會基于實例化一個類,并且能夠通過變量使其隱式可用。任務(wù)動作定義了一個最小的工作單元。

時間:2017年05月16日星期二
說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com
教學(xué)示例源碼:無
個人學(xué)習(xí)源碼:https://github.com/zccodere/s...

第一章:課程介紹 1-1 項目自動化介紹

石器時代:自動化構(gòu)建工具產(chǎn)生之前

依賴管理:將所有使用到的jar包放到lib目錄下,不易管理,易出錯
測試:能不寫就不寫,一個一個運(yùn)行測試
打包:通過eclipse的export導(dǎo)出jar包或war包
上傳:通過ftp工具進(jìn)行上傳到服務(wù)器解壓運(yùn)行

構(gòu)建工具的作用

依賴管理:各種jar包及版本
測試、打包、發(fā)布:自動執(zhí)行測試、打包、發(fā)布到指定的地方
機(jī)器能干的活,絕不自己動手

主流構(gòu)建工具

Ant:編譯、測試、打包
Maven:依賴管理、發(fā)布
Gradle:Groovy語言管理構(gòu)建腳本

示意圖

Gradle是什么

一個開源的項目自動化構(gòu)建工具,建立在Apache Ant和Apache Maven概念的基礎(chǔ)上,并引入基于Groovy的特定領(lǐng)域語言(DSL),而不再使用XML形式管理構(gòu)建腳本。

Gradle能做什么

進(jìn)行依賴管理
自動化運(yùn)行測試
打包
發(fā)布到指定地方
1-2 課程介紹

快速嘗鮮

準(zhǔn)備使用Gradle
第一個Gradle項目

基本原理

構(gòu)建腳本介紹
依賴管理

深入實戰(zhàn)

多項目構(gòu)建
測試
發(fā)布

示意圖

第二章:準(zhǔn)備使用Gradle 2-1 gradle安裝

安裝

確保已近安裝JDK,java –version驗證是否已經(jīng)安裝。
從Gradle官網(wǎng)下載Gradle,https://gradle.org
配置環(huán)境變量,GRADLE_HOME
添加到path,%GRADLE_HOME%in;
驗證是否安裝成功,gradle –v
2-2 Groovy理論介紹

Groovy是什么

Groovy是用于Java虛擬機(jī)的一種敏捷的動態(tài)語言,它是一種成熟的面向?qū)ο缶幊陶Z言,既可以用于面向?qū)ο缶幊?,又可以用作純碎的腳本語言。使用該種語言不必編寫過多的代碼,同時又具有閉包和動態(tài)語言中的其他特性。

與Java比較

Groovy完全兼容Java的語法
分號是可選的
類、方法默認(rèn)是public的
編譯器給屬性自動添加getter/setter方法
屬性可以直接用點號獲取
最后一個表達(dá)式的值會被作為返回值
“==”等同于“equals()”,不會有NullPointerExceptions

高效的Groovy特性

assert語句
可選類型定義
可選的括號
字符串
集合API
閉包
2-3 Groovy與Java比較

Java語法編寫標(biāo)準(zhǔn)JavaBean

代碼演示:

public class ProjectVersion{
    private int major;
    private int minor;

    public ProjectVersion(int major,int minor){
        this.major = major;
        this.minor = minor;
    }

    public int getMajor(){
        return major;
    }

    public void setMajor(int major){
        this.major = major;
    }

    public int getMinor(){
        return minor;
    }

    public void setMinor(int minor){
        this.minor = minor;
    }
}

Groovy語言編寫JavaBean

class ProjectVersion{
    private int major
    private int minor
    ProjectVersion(int major,int minor){
        this.major = major
        this.minor = minor
    }
}
2-4 Groovy高效特性

Groovy高效特性

可選的類型定義
assert斷言
括號是可選的
字符串
集合API

代碼演示:

// 高效特性
// 1 可選的類型定義
def version = 1

// 2 assert
//assert version == 2

// 3 括號是可選的
println version

// 4 字符串
def s1 = "imooc"
def s2 = "gradle version is ${version}"
def s3 = """my
name is
imooc"""

//println s1
//println s2
//println s3

// 5 集合API
// list
def buildTools = ["ant","maven"]
buildTools << "gradle"
assert buildTools.getClass() == ArrayList
assert buildTools.size() == 3
// map
def buildYear = ["ant":2000,"maven":2004]
buildYear.gradle = 2009

//println buildYear.ant
//println buildYear["gradle"]
//println buildYear.getClass()

// 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)
2-5 Groovy重點

代碼演示:

// 構(gòu)建腳本中默認(rèn)都是有Project實例的
//Project實例的apply方法
apply plugin:"java"
//Project實例的version屬性
version = "0.1"
// 閉包作為參數(shù)調(diào)用repositories方法
repositories {
    mavenCentral()
}
// 閉包作為參數(shù)調(diào)用dependencies方法
dependencies {
    compile "commons-codes:commons-codes:1.6"
}
第三章:第一個Gradle項目 3-1 第一個Gradle項目介紹

示例介紹

ToDo應(yīng)用程序,只實現(xiàn)添加代辦事項
Java應(yīng)用程序版
Web版
3-2 應(yīng)用程序版

目錄結(jié)構(gòu)

3-2 Web版

代碼演示:

group "com.myimooc"
version "1.0-SNAPSHOT"

apply plugin: "java"
apply plugin: "war"

sourceCompatibility = 1.8

configurations.all {
    resolutionStrategy {
        failOnVersionConflict()
        // 強(qiáng)制指定一個版本
        force "org.slf4j:slf4j-api:1.7.22"
    }
}

repositories {
//    maven{
//        url ""
//    }
    mavenLocal()
    mavenCentral()
}

dependencies {
    // https://mvnrepository.com/artifact/org.hibernate/hibernate-core
    compile (group: "org.hibernate", name: "hibernate-core", version: "3.6.3.Final"){
        // 排除傳遞依賴
        exclude group:"org.slf4j",module:"slf4j-api"
    }
    // https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
    compile "ch.qos.logback:logback-classic:1.2.3"
    testCompile group: "junit", name: "junit", version: "4.11"
}
// 聲明 閉包:創(chuàng)建目錄,需傳入?yún)?shù)為字符串目錄路徑
def createDir = {
    // 參數(shù)
    path ->
        // 功能
        println path
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
}

// 任務(wù):自動創(chuàng)建Java工程目錄結(jié)構(gòu)
task makeJavaDir(){
    // 定義數(shù)組存放目錄路徑
    def paths = ["src/main/java", "src/main/resources", "src/test/java", "src/test/resources"];
    // 添加動作:doFirst:在動作列表的前面插入一個動作
    doFirst{
        for(String path : paths){
            // 調(diào)用 閉包
            createDir(path)
        }
    }
}
// 任務(wù):自動創(chuàng)建Web工程目錄結(jié)構(gòu)
task makeWebDir(){
    // 聲明當(dāng)前任務(wù)依賴 makeJavaDir 任務(wù)
    dependsOn "makeJavaDir"
    def paths = ["src/main/webapp", "src/test/webapp"]
    // 添加動作:doLast:在動作列表的后面插入一個動作
    doLast{
        for(String path : paths){
            // 調(diào)用 閉包
            createDir(path)
        }
    }
}
第四章:高級應(yīng)用 4-1 構(gòu)建腳本介紹

構(gòu)建塊

Gradle構(gòu)建中的兩個基本概念是項目(Project)和任務(wù)(task),每個構(gòu)建至少包含一個項目,項目中包含一個或多個任務(wù)。在多項目構(gòu)建中,一個項目可以依賴于其他項目;類似的,任務(wù)可以形成一個依賴關(guān)系圖來確保他們的執(zhí)行順序。

項目(Project)

一個項目代表一個正在構(gòu)建的組件(比如一個jar文件),當(dāng)構(gòu)建啟動后,Gradle會基于build.gradle實例化一個org.gradle.api.Project類,并且能夠通過project變量使其隱式可用。

項目的屬性和方法

group、name、version
apply、dependencies、repositories、task
屬性的其他配置方式:ext、gradle.properties

任務(wù)(task)

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

任務(wù)的方法

dependsOn
doFirst、doLast<<
4-2 自定義任務(wù)

代碼演示:

// 聲明 閉包:創(chuàng)建目錄,需傳入?yún)?shù)為字符串目錄路徑
def createDir = {
    // 參數(shù)
    path ->
        // 功能
        println path
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
}

// 任務(wù):自動創(chuàng)建Java工程目錄結(jié)構(gòu)
task makeJavaDir(){
    // 定義數(shù)組存放目錄路徑
    def paths = ["src/main/java", "src/main/resources", "src/test/java", "src/test/resources"];
    // 添加動作:doFirst:在動作列表的前面插入一個動作
    doFirst{
        for(String path : paths){
            // 調(diào)用 閉包
            createDir(path)
        }
    }
}
// 任務(wù):自動創(chuàng)建Web工程目錄結(jié)構(gòu)
task makeWebDir(){
    // 聲明當(dāng)前任務(wù)依賴 makeJavaDir 任務(wù)
    dependsOn "makeJavaDir"
    def paths = ["src/main/webapp", "src/test/webapp"]
    // 添加動作:doLast:在動作列表的后面插入一個動作
    doLast{
        for(String path : paths){
            // 調(diào)用 閉包
            createDir(path)
        }
    }
}
4-3 構(gòu)建生命周期

構(gòu)建生命周期

初始化:初始化需要參與構(gòu)建的項目
配置:根據(jù)配置代碼生成task的依賴順序和執(zhí)行順序
執(zhí)行:執(zhí)行動作代碼

示意圖:

構(gòu)建周期構(gòu)造方法

4-4 依賴管理

概述

幾乎所有的基于JVM的軟件項目都需要依賴外部類庫來重用現(xiàn)有的功能。自動化的依賴管理可以明確依賴的版本,可以解決因傳遞依賴帶來的版本沖突。

工件坐標(biāo)

group:工件組
name:工件名稱
version:版本
通過這三個屬性來唯一確定一個jar包

常用倉庫

mavenCentral:公共倉庫
jcenter:公共倉庫
mavenLocal:本地倉庫
自定義maven倉庫:maven私服,公司內(nèi)部倉庫
文件倉庫:不建議使用

依賴的傳遞性

B依賴A,如果C依賴B,那么C依賴A。

自動化依賴管理

依賴管理階段

源代碼:compile:編譯階段;runtime:運(yùn)行階段。
測試代碼:testCompile:編譯階段;testRuntime:運(yùn)行階段。

依賴階段關(guān)系

4-5 解決版本沖突

版本沖突例子

解決沖突

查看依賴報告
排除傳遞性依賴
強(qiáng)制指定一個版本

4-6 多項目構(gòu)建介紹

項目模塊化

在企業(yè)項目中,包層次和類關(guān)系比較復(fù)雜,把代碼拆分成模塊通常是最佳實踐,這需要你清晰的劃分功能的邊界,比如把業(yè)務(wù)邏輯和數(shù)據(jù)持久化拆分開來。項目符合高內(nèi)聚低耦合時,模塊化就變得很容易,這是一條非常好的軟件開發(fā)實踐。

TODO模塊依賴關(guān)系

配置要求

所有項目應(yīng)用Java插件
web子項目打包成war
所有項目添加logback日志功能
統(tǒng)一配置公共屬性

項目范圍

4-7 多項目構(gòu)建實戰(zhàn)

詳見源代碼。

4-8 自動化測試

自動化測試

一些開源的測試框架比如JUnit,TestNG能夠幫助你編寫復(fù)用的結(jié)構(gòu)化的測試,為了運(yùn)行這些測試,你要先編譯它們,就想編譯源代碼一樣。測試代碼的作用僅僅用于測試的情況,不應(yīng)該被發(fā)布到生產(chǎn)環(huán)境中,需要把源代碼和測試代碼分開來。

項目布局

測試配置

測試任務(wù)

測試發(fā)現(xiàn)

任何繼承自junit.framework.TestCase或groovy.util.GroovyTestCase的類
任何被@RunWith注解的類
任何至少包含一個@Test注解的類
4-9 發(fā)布

發(fā)布到本地和遠(yuǎn)程倉庫

發(fā)布過程

使用maven-publish插件
配置發(fā)布任務(wù),倉庫地址
執(zhí)行發(fā)布任務(wù),發(fā)布完成
第五章:課程總結(jié) 5-1 課程總結(jié)

示意圖

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/70094.html

相關(guān)文章

  • 課網(wǎng)_《Spring Boot熱部署》學(xué)習(xí)總結(jié)

    時間:2017年12月01日星期五說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程介紹 1-1 課程介紹 熱部署的使用場景 本地調(diào)式 線上發(fā)布 熱部署的使用優(yōu)點 無論本地還是線上,都適用 無需重啟服務(wù)器:提高開發(fā)、調(diào)式效率、提升發(fā)布、運(yùn)維效率、降低運(yùn)維成本 前置...

    Channe 評論0 收藏0
  • 課網(wǎng)_《2小時學(xué)會SpringBoot》學(xué)習(xí)總結(jié)

    摘要:小時學(xué)會學(xué)習(xí)總結(jié)時間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼暫無。數(shù)據(jù)庫操作下第六章事務(wù)管理事務(wù)管理只有查詢的時候不加事務(wù),其它任何操作都要加事務(wù)。第七章課程回顧課程回顧總結(jié)介紹安裝配置的使用數(shù)據(jù)庫操作 《2小時學(xué)會SpringBoot》學(xué)習(xí)總結(jié) 時間:2017年2月18日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示...

    aisuhua 評論0 收藏0
  • 課網(wǎng)_《ElasticSearch入門》學(xué)習(xí)總結(jié)

    摘要:時間年月日星期四說明本文部分內(nèi)容均來自慕課網(wǎng)。那么里面的數(shù)據(jù)就可以分為各種各樣的索引,比如汽車索引圖書索引家具索引等等。圖書索引又可以細(xì)分為各種類型,比如科普類小說類技術(shù)類等等。具體到每一本書籍,就是文檔,就是整個圖書里面最小的存儲單位。 時間:2017年09月14日星期四說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)源碼:無學(xué)習(xí)源碼:https...

    notebin 評論0 收藏0
  • 課網(wǎng)_《JSON快速入門(Java版)》學(xué)習(xí)總結(jié)

    摘要:時間年月日星期日說明本文部分內(nèi)容均來自慕課網(wǎng)。慕課網(wǎng)教學(xué)示例源碼無個人學(xué)習(xí)源碼第一章課程概述課程介紹課程須知本課程面向所有使用語言進(jìn)行開發(fā)的小伙伴。 時間:2017年05月21日星期日說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com教學(xué)示例源碼:無個人學(xué)習(xí)源碼:https://github.com/zccodere/s... 第一章:課程概述 1-1 ...

    shiina 評論0 收藏0

發(fā)表評論

0條評論

antyiwei

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<