IT|軟體|開發|Gradle 專案建置自動化工具

簡介

Gradle 簡單說就是 Java 世界的 Makefile,它可以幫忙打理那些在專案開發過程中的瑣事,舉凡編譯、測試、檢查程式碼、產生文件、清理或壓縮檔案、上傳、發佈、重新啟動伺服器到送出電子郵件,都可以利用 Gradle 撰寫的 Script 來自動完成作業。
 
 
Java 建構工具 Ant、Maven vs Gradle 比較

[Ant] 
Ant的主要優點在於對構建過程的控制上;Ant是第一個「現代」構建工具,在很多方面它有些像Make。2000年發佈,在很短時間內成為Java項目上最流行的構建工具。它的學習曲線很緩,因此不需要什麼特殊的準備就能上手。它基於過程式編程的 idea。在最初的版本之後,逐漸具備了支持插件的功能。
 
主要的不足是用XML作為腳本編寫格式。XML,本質上是層次化的,並不能很好地貼合 Ant 過程化編程的初衷。Ant的另外一個問題是,除非是很小的項目,否則它的 XML 文件很快就大得無法管理。後來,隨著通過網絡進行依賴管理成為必備功能,Ant 採用了Apache Ivy。
 
[Maven]
Maven 發佈於2004年。目的是解決碼使用 Ant 所帶來的一些問題。因為 Maven 主要聚焦於依賴管理,實際上用 Maven 很難寫出複雜、定制化的構建腳本,甚至不如 Ant。
 
Maven 的主要優點是生命週期。只要項目基於一定之規,它的整個生命週期都能夠輕鬆搞定,代價是犧牲了靈活性。
 
Maven 仍舊使用 XML 作為編寫構建配置的文件格式,但是,文件結構卻有巨大的變化。Ant 需要碼將執行 task 所需的全部命令都一一列出,然而 Maven 依靠約定(convention)並提供現成的可調用的目標(goal)。不僅如此,有可能最重要的一個補充是,Maven 具備從網絡上自動下載依賴的能力(Ant 後來通過 Ivy 也具備了這個功能),這一點革命性地改變了我們開發軟件的方式。
 
但是,Maven 也有它的問題。依賴管理不能很好地處理相同庫文件不同版本之間的衝突(Ivy 在這方面更好一些)。XML 作為配置文件的格式有嚴格的結構層次和標準,定制化目標(goal)很困難。
[Gradle]
Gradle 結合了前兩者的優點,在此基礎之上做了很多改進。它具有 Ant 的強大和靈活,又有 Maven 的生命週期管理且易於使用。最終結果就是一個工具在2012年華麗誕生並且很快地獲得了廣泛關注。例如,Google 採用 Gradle 作為 Android OS 的默認構建工具。
 
Gradle 不用 XML,它使用基於 Groovy 的專門的 DSL,從而使 Gradle 構建腳本變得比用 Ant 和 Maven 寫的要簡潔清晰。Gradle 樣板文件的代碼很少,這是因為它的 DSL 被設計用於解決特定的問題:貫穿軟件的生命週期,從編譯,到靜態檢查,到測試,直到打包和部署。
 
安裝及配置

 
將下載的檔案解壓縮到下面目錄(目錄名稱可自行帶換)
/Users/Kevin/Agile-MAC/Gradle
sudo nano /etc/.bashrc_profile
export
export GRADE_HOME=/Users/Kevin/Agile-MAC/Gradle/gradle-2.10
 
整合 Eclipse    2016年5月12日

開啟Eclipse專案選擇 Help -> Eclipse Marketplace..
搜尋條件選gradle按下 Install
重新啟動 eclipse
之後在目標專案上按右鍵選擇 Configure -> Conver to Gradle Project
接著在最外層的目錄下創造一個 build.gradle 的檔案
它的內容按照自己的需求來設定
 
[一個簡單的範例]
import org.gradle.plugins.ide.eclipse.model.Facet

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse-wtp'

sourceCompatibility = 1.7   // 設置 JDK 版本
webAppDirName = 'WebContent'    // 設置 WebApp 根目錄
sourceSets.main.java.srcDir 'src'   // 設置 Java 源碼所在目錄

// 設置 maven 庫地址
repositories {  
   mavenCentral()
}

// 設置依賴
dependencies {
   providedCompile 'javax.servlet:servlet-api:2.5' // 編譯期
   providedRuntime 'javax.servlet:jstl:1.2'    // 運行時
}
 
設定好了之後在專案上按右鍵,選擇 Gradle -> Refresh All
就會開始下載Lib, 等下載完就可以看到 Gradle Dependencies 內的檔案
 
完成!
 
資源

Spring 教學(1) – 從 Spring Boot 開始
 

IT|程式設計|Front-End|Cordova + eclipse

前言


談起跨平台手機 Apps,PhoneGap 應該算是最為人熟識的 Framework。
 
PhoneGap 與 Cordova 的實際差異:按照官方的說法 PhoneGap 是 Cordova 的一個 distribution。
 
原來是 Adobe 在 2011 年從一家小型公司手上收購了 PhoneGap。然後又把它的 Source Code 捐獻了給 Apache 基金會成為 OSS。但 Adobe 又保留了 PhoneGap Build 這個服務自己獨有。
 
從此於是乎兩者的關係曖昧不清…按照官方的說法 PhoneGap 是 Cordova 的一個 distribution。
 
”PhoneGap is a distribution of Apache Cordova. You can think of Apache Cordova as the engine that powers PhoneGap, similar to how WebKit is the engine that powers Chrome or Safari.“
 
實作

作業系統:Mac
 
[Hello World]
 
確保 Android SDK 已經有被加入 PATH 環境變數中,在 Mac 上可以加到 ~/.bash_profile 裡面
export ANDROID_HOME=/Users/Kevin/Agile-MAC/Android/android-sdk-macosx
 
準備 ios build
 
1.安裝 Xcode
2.安裝 ios-sim、ios-deploy
npm install -g ios-sim
npm install -g ios-deploy
3.安裝 Node.js
 
官方建議 用 npm 來安裝 Cordova
sudo npm install -g cordova
 
建立 Hello World 專案
 
cordova create hello com.errui.hello HelloWorld
 
上述指令會建立一個 hello 目錄,接下來的指令都是要在這個 hello 目錄下執行
cordova platform add ios
cordova platform add android
 
查詢目前 cordova 支援的平台
cordova platform
 
執行 Hello World 程式
cordova emulate android
cordova emulate ios
 
如果目前在 Android 模擬器那邊已經建立了多個 AVD 的話,
跑起來的可能不是我們要的那個,
可以執行下面的指令先看一下目前有的 AVD:
cordova run android —list
 
 
若是要指定 Nexus_4_API_15 這個 AVD,可以這麼做
cordova run android --target=Nexus_4_API_15
 
下面就是 Android 和 iOS 模擬器,分別把 Hello World 專案執行起來的畫面
 
Android
 
iOS
 
 
參考資料: