新一代構建工具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
依賴階段關係
解決版本衝突
- 檢視依賴報告
- 排除傳遞性依賴
- 強制指定一個版本
具體解決方案:
- 修改預設解決策略---------只要一遇到版本衝突就報錯誤
configurations.all{ resolutionStrategy{ failOnVersionConflict(); } }
- 強制指定一個版本
configurations.all{
resolutionStrategy{
force 'org.slf4j:slf4j-api:1.7.24'
}
}
多專案構建
在企業專案中,包層次和類關係比較複雜,把程式碼拆分成模組通常是最佳實踐,這需要你清晰的劃分功能的邊界,比如把業務邏輯和資料持久化劃分來。專案符合高內聚低耦合時,模組化就變得很容易,這是非常好的軟體開發實踐的方法。
- 專案模組化
- TODO模組依賴關係
- 配置子專案----配置要求
- 所有專案應用Java外掛
- web子專案打包成war包
- 所有專案新增logback日誌功能
- 統一配置公共屬性
比如說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 是一款專門用於功能測試和壓力測試的輕量級測試開發平臺。多數情況下是用作壓力測試,該測試工具在阿里巴巴有著廣泛的使用,估計是不要錢吧,哈哈,功能上來說,整個平臺實現了許多和網際網路相關的網路測試元件,同時還保留著很強的擴充套件性方便用於一些非標準的測試場景,讓偉大的程
前端構建工具gulp(1)
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 Gradle(二)Gradle入門前奏
前言 在上一篇文章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專案生成apk(by 星空武哥)
Jenkins安裝完我們就可以新建專案了 首先開始新建一個專案,選擇型別為“構建一個自由風格的軟體專案” 新建完成,就是配置專案 開始配置“General” 構建觸發器 我們選擇Poll