國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y 第 2 章
相關研究探討
此章節主要介紹相關研究領域,以及本研究所使用到的理論與技術。首先,於 2.1 節介紹自動化建構工具(包含:Gradle、Maven)。接著,於 2.2 節介紹程式儲存庫(包含:
Nexus Repository)。然後,於 2.3 節介紹輔助工具介面(包含:JavaFX)。之後,於 2.4 節 介紹程式測試工具簡介(包含:Junit、Spock)。接著,於 2.5 節介紹模板引擎框架(包括:
Apache Velocity)。然後,於 2.6 節介紹應用程式框架(包括:Spring framework、Spring Boot)。最後,於 2.7 節介紹相似系統的分析與簡介(包括:Moodle VPL、Jupyter nbgrader)。
2.1 自動化建構工具
現代化的自動化建構工具提供各種能力,讓開發者可以自動化程式開發過程中各種 必須的軟體工具操作,例如相依程式的收集管理與載入,程式編譯與測試,各種文檔生 成與存放,測試報告,以及程式包裹與佈建等。自動化建構工具協助程式開發者處理各 項繁冗的工作,能夠節省大量時間,加速軟體開發的進行,並且使開發人員更專注於軟 體程式的開發工作。
目前市面上有許多常見的自動化建構工具,例如 Maven[8]、Gradle[9]、Ant[10]、
Sbt[11]、Gulp[12]、SCons[13]、CMake[14]、Grunt[15]。接下來將簡單介紹本系統使用到 的自動化建構工具 Maven 與 Gradle 的核心概念,及其優點和缺點。
‧
基於專案物件模型概念(Project Object Model,縮寫為 POM),Maven 透過設定檔(pom.xml) 管理整個專案的建構。Maven 也可被使用於建構和管理各種 Java 語言以外的專案,例 如:C#[38]、Ruby[39]、Scala[40]。Maven 有四項重要的精神與觀念,分別為慣例先於設 定(Convention over configuration)、相依性管理(Dependency management)、以 plugin 作為 基礎的架構、專案物件模型(Project Object Model)。
1. 慣例先於設定(Convention over configuration):Maven 認為軟體專案開發必須遵循某些 慣例,例如:固定的目錄名稱與架構、固定的變數名稱、固定的專案建構流程等。因 為一般軟體專案的建構流程相仿,大同小異,所以 Maven 認為程式開發者不應耗費 大量時間於例行性的設定上。因此,檔案架構、建構流程、參數屬性等,只需於特定 條件下進行微調參數即可。Maven 認為程式開發者應將精神和資源全力挹注於更重要 的工作項目。
2. 相依性管理(Dependency management):過去 Java 語言的開發者,經常於網路中,為 專案找尋適當的 library 檔案(*.jar),將其檔案下載並放置於專案的 lib 資料夾。如果
‧
3. 以 plugin 作為基礎的架構:Maven 提供固定的專案建構流程,例如:default、clean、
site 流程等。於每項專案建構流程中,又區分為多個階段(phase),舉例:default 建構 流程中,會有例如:validate、compile、test、package、integration test、verify、install、
deploy 等階段。每個階段會有相對應的 plugin 可作使用。Maven 本身會有一些系統預 設的 plugin。程式開發者能夠於設定檔中依需求來宣告 plugin,以及執行 plugin 的時 機。當專案建構的過程中,Maven 將會自動取得 plugin 並作執行。
4. 專案物件模型(Project Object Model,縮寫為 POM):POM 為 Maven 專案主要的設定 檔(pom.xml),決定該專案建構的所有相關設定,包含:專案名稱、組織名稱、屬性變 數、相依檔案、編譯執行等資訊。設定檔中的程式碼能夠維持精簡,因為位於 Maven 核心函式內的 super-pom.xml 檔案,已經預先完成相關慣例的設定。透過設定檔 (pom.xml)能夠覆寫 super-pom.xml 檔案的設定,或是附加新的定義和參數。
2.1.2 Gradle
Gradle 是一個以 Apache Ant 和 Apache Maven 概念為基礎的專案自動化建構工具。
Gradle 俱有簡單易用、豐富的軟體套件、以及跨平台等三項主要的優點,以下詳述介紹。
1. 簡單易用:Gradle 以 Groovy 語言為基礎,用簡易的領域特定語言(DSL,Domain Specific Language) 語法定義任務。程式開發者可不需具備 Java 語言基礎,即能夠快 速開發程式,縮短軟體開發時間。
2. 豐富的軟體套件:由於 Java 語言的長久發展而累積豐富的函式庫,使用者透過 Gradle 內建的 Plug-in 設計,使專案可依照需求來選擇適合的軟體套件,或是自行研發套件
‧ 國
立 政 治 大 學
‧
N a tio na
l C h engchi U ni ve rs it y
作使用。例如:JasperReport 套件用於產生專業報表、JavaMail API 用作處理電子郵 件、可執行 Jetty 內嵌網頁伺服器、以 JGit 處理專案版本控管任務等。
3. 俱有跨平台的特性:於任何裝有 JVM(Java Virtual Machine)的作業系統中,無論系統 是否有安裝 Gradle 工具,都能夠透過 gradlew 執行檔,去運行以 Gradle 為基礎的專 案。