1. 程式人生 > >【翻譯】Gradle Guides

【翻譯】Gradle Guides

原文標題:Consuming JVM Libraries

分類:Gradle Guides

翻譯:機器翻譯 + 人工調整

目錄

二、需求

六、總結

內容:如何建立使用外部庫的 Java 應用程式。

一、要構建的程式

  1. 使用標準佈局生成Java應用程式。
  2. 嚮應用程式新增第三方庫,構建、打包。
  3. 最終產品是一個綠色應用程式,用來輸出 ASCII 藝術類型的問候。

二、需求

  • 大約 12 分鐘
  • 文字編輯器
  • 命令提示符
  •  Java Development Kit (JDK),版本 1.7+
  • Gradle,版本 4.10-rc2 +

三、建立專案

步驟一:

  1. 為新專案建立一個資料夾,
  2. 將 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應用程式”指南。

步驟二:

  1. 建立 settings.gradle 檔案並設定專案名稱。
  2. 這樣做將確保專案以正確的名稱構建,而不管專案根資料夾的名稱如何。
rootProject.name='greeterApp'

步驟三:

  1. 建立一個 build.gradle 檔案並應用 Java 外掛。
apply plugin : 'java'

步驟四:

  1. 這足以構建一個自包含的Java專案,但您將建立一個greeter應用程式,它將在Ascii-art中列印問候語。為此,需要外部庫。
  2. 繼續編輯 build.gradle 並新增 repositories  塊。
repositories {
    jcenter() 
}

使用 JCenter 作為 repository

為了找到 artifacts,你必須告訴 Gradle 在哪裡看。 Gradle支援兩種專用倉庫型別 - Maven 和 Ivy 等。此外,Gradle支援最流行的集中式儲存庫的簡化配置 -- JCenter,Maven Central 和 Google 的 Android 倉庫。在本指南中,您使用 JCenter,因為它可以訪問 Maven Central 上託管的所有倉庫以及釋出到 Bintray 的更多倉庫。

步驟五:

  1. 下一步是告訴 Gradle 您的專案需要哪些外部工件。
  2. 當您正在使用 Ascii-art 應用程式時,您將使用 JFiglet。
  3. 在 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 正在執行的任務。

四、建立應用程式

步驟一:

  1. 繼續建立 src / main / java 資料夾,
  2. 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);
    }
}

由於這個應用程式很簡單,示例中不包含測試。

步驟二:

  1. 使用 jar 任務構建應用程式。
$ ./gradlew jar

> Task :compileJava
> Task :processResources NO-SOURCE
> Task :classes
> Task :jar

BUILD SUCCESSFUL in 2s
2 actionable tasks: 2 executed

步驟三:

  1. 由於這是一個應用程式,因此分發它將非常有用。
  2. 再次編輯 build.gradle 並新增 application 外掛。
apply plugin : 'application' 
mainClassName = 'GreeterApp' 

Application外掛是一個非常有用的外掛,允許您將應用程式及其所有依賴項捆綁在一起。

這會將 入口點 配置到應用程式中,應用程式需要是一個包含靜態 main 方法的類。

步驟四:

  1. 使用 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存檔。這是準備分發的應用程式。

步驟五:

  1. 現在是時候手動測試您的應用程式了。
  2. application 外掛提供了一個有用的 installDist 任務,
  3. 將應用程式安裝到 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。

步驟六:

  1. 通過更改為build / install / greeterApp資料夾;
  2. 執行應用程式來執行該應用程式。
$ cd build/install/greeterApp
$ ./bin/greeterApp Gradle

  _   _          _   _                  ____                      _   _
 | | | |   ___  | | | |   ___          / ___|  _ __    __ _    __| | | |   ___
 | |_| |  / _ \ | | | |  / _ \        | |  _  | '__|  / _` |  / _` | | |  / _ \
 |  _  | |  __/ | | | | | (_) |  _    | |_| | | |    | (_| | | (_| | | | |  __/
 |_| |_|  \___| |_| |_|  \___/  ( )    \____| |_|     \__,_|  \__,_| |_|  \___|
                                |/

恭喜!您剛剛建立了一個從外部儲存庫中使用第三方庫的應用程式。

五、許可 Licensing

第三方 JVM 庫在各種許可下發布。

為了相容性,始終檢查所使用的庫的許可證(包括通過傳遞依賴性引入的所有庫)非常重要。

例如,JFiglet 庫是在 GPL 2.0下發布的。這意味著如果您想要釋出剛剛構建的應用程式,它還需要在GPL 2.0下。

您可以使用 Jeroen van Erp 優秀的許可外掛,來建立有關專案所有依賴項許可的報告。

六、總結

您現在擁有使用外部庫的JVM應用程式。在這個過程中你看到:

  • 如何配置 倉庫依賴項
  • 構建使用 外部依賴項 的應用程式
  • 分發包含所有外部依賴項的 應用程式

七、接下來……

----17:15----