【翻譯】Gradle Guides
原文標題:Consuming JVM Libraries
分類:Gradle Guides
翻譯:機器翻譯 + 人工調整
目錄
內容:如何建立使用外部庫的 Java 應用程式。
一、要構建的程式
- 使用標準佈局生成Java應用程式。
- 嚮應用程式新增第三方庫,構建、打包。
- 最終產品是一個綠色應用程式,用來輸出 ASCII 藝術類型的問候。
二、需求
- 大約 12 分鐘
- 文字編輯器
- 命令提示符
- Java Development Kit (JDK),版本 1.7+
- Gradle,版本 4.10-rc2 +
三、建立專案
步驟一:
- 為新專案建立一個資料夾,
- 將 Gradle Wrapper 新增到專案中。
命令:
$ mkdir consuming-jvm-libraries
$ cd consuming-jvm-libraries
$ gradle wrapper
:wrapper
BUILD SUCCESSFUL
gradle wrapper 說明:
允許將 Gradle 版本鎖定到專案,以後可以用 ./gradlew 替代 gradle 命令。
您可能希望使用 Build Init 外掛中的 init 任務,而不是使用內建的 wrapper 任務。 這將為您建立初始專案結構。 有關如何執行此操作的詳細說明,請參閱“
構建Java應用程式”指南。
步驟二:
- 建立 settings.gradle 檔案並設定專案名稱。
- 這樣做將確保專案以正確的名稱構建,而不管專案根資料夾的名稱如何。
rootProject.name='greeterApp'
步驟三:
- 建立一個 build.gradle 檔案並應用 Java 外掛。
apply plugin : 'java'
步驟四:
- 這足以構建一個自包含的Java專案,但您將建立一個greeter應用程式,它將在Ascii-art中列印問候語。為此,需要外部庫。
- 繼續編輯 build.gradle 並新增 repositories 塊。
repositories { jcenter() }
使用 JCenter 作為 repository
為了找到 artifacts,你必須告訴 Gradle 在哪裡看。 Gradle支援兩種專用倉庫型別 - Maven 和 Ivy 等。此外,Gradle支援最流行的集中式儲存庫的簡化配置 -- JCenter,Maven Central 和 Google 的 Android 倉庫。在本指南中,您使用 JCenter,因為它可以訪問 Maven Central 上託管的所有倉庫以及釋出到 Bintray 的更多倉庫。
步驟五:
- 下一步是告訴 Gradle 您的專案需要哪些外部工件。
- 當您正在使用 Ascii-art 應用程式時,您將使用 JFiglet。
- 在 build.gradle 檔案的 dependencies 塊中新增 JFiglet 庫。
dependencies {
implementation 'com.github.lalyos:jfiglet:0.0.8'
}
將 JFiglet 依賴項新增到 implementation 配置中
Gradle 支援各種表示法。上面使用的那個可能是最流行的,它使用最常見的Maven座標。
新增依賴項有兩個部分:一個是依賴項本身,另一個是它新增到的 configuration 。後一術語在 Gradle 中用於通過上下文有效地將依賴關係組合在一起。當前版本使用 Java 外掛提供的 implementation 配置。
可以通過研究 ConfigurationContainer,瞭解有關為自定義目的使用 configurations 的更多資訊。
implementation 配置的目的是 收集 庫或應用程式 使用的 依賴項,並將它們 新增 到 編譯類路徑 中,但 不能 通過任何API 匯出 它們。由於這是一個 獨立的應用程式,因此可以 將 所有依賴項 放在此配置中,以便構建應用程式。這使得JFiglet 庫的使用成為一個實現細節,可以在以後更改,而不會影響任何客戶端。
通過使用 Gradle 中內建的 dependencies 任務,您可以檢查基於每個配置新增的所有依賴項。
$ gradlew dependencies --configuration implementation
--configuration 引數將檢查限制為單個配置
如果您使用的是 Gradle 4.0 或更高版本,控制檯輸出比本指南中的少。在本指南中,輸出使用命令列上的 --console-plain標誌顯示。這樣做是為了顯示 Gradle 正在執行的任務。
四、建立應用程式
步驟一:
- 繼續建立 src / main / java 資料夾,
- 將 GreeterApp.java 檔案放在該資料夾中。
src/main/java/GreeterApp.java
import java.io.IOException;
import com.github.lalyos.jfiglet.FigletFont;
public class GreeterApp {
public static void main(String[] args) throws IOException {
String asciiArt = FigletFont.convertOneLine("Hello, " + args[0]);
System.out.println(asciiArt);
}
}
由於這個應用程式很簡單,示例中不包含測試。
步驟二:
- 使用 jar 任務構建應用程式。
$ ./gradlew jar
> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :jar
BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed
步驟三:
- 由於這是一個應用程式,因此分發它將非常有用。
- 再次編輯 build.gradle 並新增 application 外掛。
apply plugin : 'application'
mainClassName = 'GreeterApp'
Application外掛是一個非常有用的外掛,允許您將應用程式及其所有依賴項捆綁在一起。
這會將 入口點 配置到應用程式中,應用程式需要是一個包含靜態 main 方法的類。
步驟四:
- 使用 build 任務,完成 應用程式 的構建。
$ ./gradlew build
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE
> Task :startScripts
> Task :distTar
> Task :distZip
> Task :assemble
> Task :compileTestJava NO-SOURCE
> Task :processTestResources NO-SOURCE
> Task :testClasses UP-TO-DATE
> Task :test NO-SOURCE
> Task :check UP-TO-DATE
> Task :build
BUILD SUCCESSFUL in 0s
5 actionable tasks: 3 executed, 2 up-to-date
如果檢查 build / distributions資料夾,您會注意到.zip和.tar存檔。這是準備分發的應用程式。
步驟五:
- 現在是時候手動測試您的應用程式了。
- application 外掛提供了一個有用的 installDist 任務,
- 將應用程式安裝到 build / install 資料夾中以進行驗證。
$ ./gradlew installDist
> Task :compileJava UP-TO-DATE
> Task :processResources NO-SOURCE
> Task :classes UP-TO-DATE
> Task :jar UP-TO-DATE
> Task :startScripts UP-TO-DATE
> Task :installDist
BUILD SUCCESSFUL in 0s
4 actionable tasks: 1 executed, 3 up-to-date
在build / install中查詢應該找到包含 lib 和 bin 資料夾的 greeterApp資料夾。
如果您檢視lib資料夾,您將看到您的應用程式和JFiglet JAR。
步驟六:
- 通過更改為build / install / greeterApp資料夾;
- 執行應用程式來執行該應用程式。
$ cd build/install/greeterApp
$ ./bin/greeterApp Gradle
_ _ _ _ ____ _ _
| | | | ___ | | | | ___ / ___| _ __ __ _ __| | | | ___
| |_| | / _ \ | | | | / _ \ | | _ | '__| / _` | / _` | | | / _ \
| _ | | __/ | | | | | (_) | _ | |_| | | | | (_| | | (_| | | | | __/
|_| |_| \___| |_| |_| \___/ ( ) \____| |_| \__,_| \__,_| |_| \___|
|/
恭喜!您剛剛建立了一個從外部儲存庫中使用第三方庫的應用程式。
五、許可 Licensing
第三方 JVM 庫在各種許可下發布。
為了相容性,始終檢查所使用的庫的許可證(包括通過傳遞依賴性引入的所有庫)非常重要。
例如,JFiglet 庫是在 GPL 2.0下發布的。這意味著如果您想要釋出剛剛構建的應用程式,它還需要在GPL 2.0下。
您可以使用 Jeroen van Erp 優秀的許可外掛,來建立有關專案所有依賴項許可的報告。
六、總結
您現在擁有使用外部庫的JVM應用程式。在這個過程中你看到:
- 如何配置 倉庫 和 依賴項
- 構建使用 外部依賴項 的應用程式
- 分發包含所有外部依賴項的 應用程式
七、接下來……
----17:15----