首页 > 解决方案 > 如何使用下载的二进制文件将 Apache Derby 作为 Gradle 依赖项包含在内

问题描述

我非常了解 Java,并且是一位经验丰富的 C/Python 程序员,但在谈到 Gradle 时,我可能有一些基本的误解。

我正在终端和 vim 中开发,这就是我。我在我的系统上设置了 Apache Derby:下载、设置环境变量等。我希望在我使用 Gradle 构建的 Java 项目中使用它,但我不知道如何将它包含在依赖项中来自 Maven 存储库。

如果我做:

testCompile group: 'org.apache.derby', name: 'derby', version: '10.5.3.0' 

我的理解是这会再次从 Maven 存储库下载它。我是否想使用我的系统 Derby 以错误的方式处理事情,或者有没有办法将 Gradle 指向它?如果这个问题充满了误解,我会很感激他们被直截了当。

谢谢。

标签: javagradlederby

解决方案


+1 用于使用 vim/终端,这很酷!

Gradle 非常灵活,可以满足您的任何要求 - 尽管有最佳实践,请参见下文。您可以拥有一个包含所有库的 libs/ 文件夹,并将 Gradle 指向它:

dependencies {
    implementation fileTree('libs') { include '*.jar' }
}

这会将 libs/ 文件夹中的所有 JAR 添加到您的类路径中。Gradle 将此称为文件依赖项。libs 文件夹不必在您的项目目录中,所以是的,您也可以指向系统范围的库。

然而。

Gradle 有一个非常先进的缓存机制,可以最大限度地减少网络使用,甚至可以平衡本地存储需求。它还将可靠地在项目之间共享下载。你想用这个。
此外,许多 Java 库都有自己的依赖项(“传递依赖项”),通常很多,导致整个依赖树。由于所有它们的传递闭包最终都会出现在您的类路径中,因此可能会出现冲突,Gradle 将为您解决。您将不希望执行手动依赖关系解析。
另外,您的项目将更容易为其他人编译,因为 Gradle 将确保加载并存在依赖项。而在运行 Gradle 之前,需要以其他方式安装“系统 derby”。
文件依赖项也有无数其他问题,所以我敦促您让 Gradle 为您处理这个问题并使用您问题中的语法:

dependencies {
    implementation group: 'org.apache.derby', name: 'derby', version: '10.5.3.0'
}

这里有更多关于所谓的“配置”的信息,testCompile可以implementation帮助您选择正确的配置。

所有这些都可以在 Vim 和终端上完美运行。事实上,我在 IntelliJ 中开发时经常从终端调用 Gradle。


推荐阅读