当前位置: 首页 > 工具软件 > guides-source > 使用案例 >

【翻译】Gradle Guides - 使用 JVM 库

邢晗日
2023-12-01

原文标题:Consuming JVM Libraries

原文链接:https://guides.gradle.org/consuming-jvm-libraries/

分类:Gradle Guides

翻译:机器翻译 + 人工调整


目录

一、要构建的程序

二、需求

三、创建项目

四、创建应用程序

五、许可 Licensing

六、总结

七、接下来……


内容:如何创建使用外部库的 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----

 类似资料: