1. 程式人生 > >新一代構建工具Gradle(二)

新一代構建工具Gradle(二)

構建指令碼的概要

Gradle構建中的兩個基本概念是專案(Project)和任務(Task),每個構建至少包含一個專案,專案中包含一個或多個任務。在多專案構建中,一個專案可以依賴其他專案;類似的,任務可以形成一個依賴關係圖來確保他們的執行順序。

專案(Project)

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

屬性

  • group、name、version

方法

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

任務(Task)

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

  • dependsOn
  • doFirst、doLast<<

自定義任務--建立一個目錄結構

在build.gradle中編寫

//自定義任務
def createDir={
    path->
        File dir = new File(path);
        if(!dir.exists()){
            dir.mkdirs();
        }
}

task makeJavaDir(){
    def paths=['src/config'];
    doFirst{
        paths.forEach(createDir);
    }
}

構建生命週期

初始化 ---> 配置--->執行

依賴管理

概述

幾乎所有的基於JVM的軟體專案都需要依賴外部類庫來重用現有的功能。自動化的依賴管理可以明確依賴的版本,可以解決因傳遞性依賴帶來的版本衝突。 

依賴的傳遞性

自動化依賴管理

依賴管理階段配置

  • 原始碼的兩個階段:  compile、runtime
  • 測試程式碼的兩個階段   :testCompile、testRuntime

依賴階段關係

解決版本衝突

  1. 檢視依賴報告
  2. 排除傳遞性依賴
  3. 強制指定一個版本

具體解決方案:

  • 修改預設解決策略---------只要一遇到版本衝突就報錯誤
configurations.all{
    resolutionStrategy{
        failOnVersionConflict();
    }

}
  • 強制指定一個版本
configurations.all{
    resolutionStrategy{
        force 'org.slf4j:slf4j-api:1.7.24'
    }
}

多專案構建

在企業專案中,包層次和類關係比較複雜,把程式碼拆分成模組通常是最佳實踐,這需要你清晰的劃分功能的邊界,比如把業務邏輯和資料持久化劃分來。專案符合高內聚低耦合時,模組化就變得很容易,這是非常好的軟體開發實踐的方法。

  • 專案模組化
  • TODO模組依賴關係

  • 配置子專案----配置要求
  1. 所有專案應用Java外掛
  2. web子專案打包成war包
  3. 所有專案新增logback日誌功能
  4. 統一配置公共屬性

比如說respository這個子專案需要依賴modle的支援,web需要respository的支援,所以就需要進行配置

在respository中的build.gradle中配置

dependencies {
    //依賴modle
    compile project(":modle");
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

在web中的build,gradle中配置

dependencies {
    //依賴respository
    compile project(":repository")
    testCompile group: 'junit', name: 'junit', version: '4.12'
}

所以就可以看得見他們是層級的依賴關係

總結

gradle構建專案流程:

新建專案(IDE快速新建)->開發(gradle配置依賴)->測試(gradle自動測試)->打包(gradle外掛自動打包)->釋出(gradle外掛自動釋出)

本人公眾號

相關推薦

一代構建工具Gradle

構建指令碼的概要 Gradle構建中的兩個基本概念是專案(Project)和任務(Task),每個構建至少包含一個專案,專案中包含一個或多個任務。在多專案構建中,一個專案可以依賴其他專案;類似的,任務可以形成一個依賴關係圖來確保他們的執行順序。 專案(Project)

Android應用開發:網絡工具——Volley

respond sid 開發 多少 called creat miss 相等 eal 引言 在Android應用開發:網絡工具——Volley(一)中結合Cloudant服務介紹了Volley的一般使用方法,當中包括了兩種請求類型StringRequest和JsonOb

【Selenium-WebDriver自學】Selenium-IDE工具特點

復制 title 文檔 比較 src 面板 默認 bdr ble ========================================================================================================

基於Java語言構建區塊鏈—— 工作量證明

分布式 java引言 在 上一篇 文章中,我們實現了區塊鏈最基本的數據結構模型,添加區塊以及和前一個區塊連接在一起。但是,我們的實現方式非常簡單,而真實的比特幣區塊鏈中,每一個區塊的添加都是需要經過大量的計算才可以完成,這個過程就是我們熟知的挖礦。 工作量證明機制區塊鏈最關鍵的一個思想就是,必須進行大量且困難

Python抓取浪新聞數據

Python抓取新浪新聞數據以下是抓取的完整代碼(抓取了網頁的title,newssource,dt,article,editor,comments)舉例:Python抓取新浪新聞數據(二)

用ASP.NET Core MVC 和 EF Core 構建Web應用

work nal nta 多個 包括 catch web 應用 自動 選項卡 本節學習如何執行基本的 CRUD (創建、 讀取、 更新、 刪除) 操作。 自定義“詳細信息”頁 學生索引頁的基架代碼省略了 Enrollments 屬性,因為該屬性包含一個集合。 在“詳細信息”

智能合約從入門到精通:Lib工具

空間 creator arr 進行 符號 libjson sos 介紹 ray 簡介:上一節,我們介紹智能合約開發中常用的Lib工具庫的第一部分。由於內容較長,工具庫我們將分兩部分介紹,本文將介紹Lib工具庫的第二部分:LibJson 、LibStack和LibLog。Li

java常用工具—— JSON處理工具

tor ast val simple sta 轉換 local pass password package com.springboot.commons.utils; import com.springboot.commons.scan.JacksonObjectMapp

使用Akka構建集群

r+ mem watch hello eat itl 可能 patch prop 前言 在《使用Akka構建集群(一)》一文中通過簡單集群監聽器的例子演示了如何使用Akka搭建一個簡單的集群,但是這個例子“也許”離我們的實際業務場景太遠,你基本不太可能去做這樣的工作,除非你

[搬運工系列]-jmeter工具介紹

1.Jmeter 概要描敘 jmeter 是一款專門用於功能測試和壓力測試的輕量級測試開發平臺。多數情況下是用作壓力測試,該測試工具在阿里巴巴有著廣泛的使用,估計是不要錢吧,哈哈,功能上來說,整個平臺實現了許多和網際網路相關的網路測試元件,同時還保留著很強的擴充套件性方便用於一些非標準的測試場景,讓偉大的程

前端構建工具gulp1

npm install gulp -g  2本地生成一個package.json的檔案 npm init  3本地專案中需要安裝gulp(專案中需要require) npm install gulp --save-dev

常用工具:HttpUtil 傳送HTTP請求

常用工具類(二):HttpUtil 傳送HTTP請求 public class HttpUtil { private static Logger logger = LoggerFactory.getLogger(HttpUtil.class); /** *

跟我學 Java 8 特性之 Stream 流關鍵知識點

我們的第一篇文章,主要是通過一個Demo,讓大家體驗了一下使用流API的那種酣暢淋漓的感覺。如果你沒有實踐,我還是再次呼籲你動手敲一敲,自己實實在跑一遍上一篇的Demo。 相信你的感受和理解也會隨之加深的。繼續探索流API的高階功能之前,我們先從介面級別全面瞭解一下流A

併發工具同步屏障CyclicBarrier

簡介 CyclicBarrier 的字面意思是可迴圈使用(Cyclic)的屏障(Barrier)。它要做的事情是,讓一組執行緒到達一個屏障(也可以叫同步點)時被阻塞,直到最後一個執行緒到達屏障時,屏障才會開門,所有被屏障攔截的執行緒才會繼續幹活。CyclicBarrier預設的構造方法是Cyc

資料分析需要的工具介紹

我們在上一篇文章中給大家介紹了資料分析軟體中的Excel和SAS軟體,但是這些軟體還是不夠的,我們還需要學習很多的工具,在這篇文章中我們會為大家介紹一下資料分析工具中的其他工具。希望這篇文章能夠給大家帶來幫助。 首先我們給大家說一下R軟體,R是一套完整的資料處理、計算和製圖軟體系統。r語言的主要優點有資

程式設計師之工具雜燴

前端編輯器:Hbuilder、Visual Studio Code、JetBrains WebStorm  Java編輯器:Idea、Eclipse Python編輯器:JetBrains PyCharm Android編輯器:Android Studio Linux客戶端

Android GradleGradle入門前奏

前言 在上一篇文章Android Gradle(一)為什麼現在要用Gradle?中,我們學習了常見的構建工具,以及Gradle與這些構建工具相比有那些不同的特性。這一篇文章我們接著來學習Gradle入門需要掌握的知識,包括配置環境、實現Hello World、G

版本控制工具簡介——github工具

遠端命令github 1.建立倉庫 登入:https://github.com 在git上新建一個倉庫 倉庫名為stu,擁有者為:nutony。 建立成功 2.克隆遠端倉庫 首次需要把遠端倉庫克隆到本地倉庫(D:\javaenv\git_rep

ubuntu上使用PHP依賴管理工具Composer——自動載入

結合phpstorm使用Composer命令列 初始化Composer 在phpstorm中建立新的專案test tools->run command(Ctrl+Shift+X)開啟命令

Jenkins持續化構建Android專案-構建Android專案生成apkby 星空武哥

Jenkins安裝完我們就可以新建專案了 首先開始新建一個專案,選擇型別為“構建一個自由風格的軟體專案” 新建完成,就是配置專案 開始配置“General” 構建觸發器 我們選擇Poll