java - 如何使用下载的二进制文件将 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 指向它?如果这个问题充满了误解,我会很感激他们被直截了当。
谢谢。
解决方案
+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。
推荐阅读
- regex - 该语言的哪个正则表达式是“最干净”或最有效的?
- python - 将图像文件上传到数据库
- javascript - 如何在javascript中的关联数组上使用数组索引生成数组键
- javascript - 添加文档并将子集合添加到该文档 Firestore
- testing - 是否可以将多个测试计划以及测试套件和测试结果添加到新的测试计划中>
- regex - 无法获取小写值的 AD 属性?
- bash - 使用脚本在 FreeNAS NAS 中的文件夹之间移动文件
- algorithm - 用伪代码表达“等于”
- azure - 尝试获取 Artifacts Run Powershell 脚本中使用的开发测试实验室 VM 用户名
- android - 如何在 Kotlin 上使用 iText 以更好的分辨率或质量打印 pdf