我刚刚开始使用 Gradle,正在将非托管 (Eclipse) Java 项目转换为 Gradle 命令行项目。
所有库 JAR 都位于本地目录中(机器是气隙式的,无法访问 Maven 存储库或类似的目录),因此我在
build.gradle
文件中告诉 Gradle 相关信息:
repositories {
flatDir {
dirs("lib")
}
}
在这个目录中我有,例如我在 Java 代码中使用的 jar
json-simple-1.1.1.jar
import org.json.simple.JSONArray;
但是,这对于 Gradle 来说似乎还不够:另外我需要添加到build.gradle
:
dependencies {
implementation group: 'com.googlecode.json-simple', name: 'json-simple', version: '1.1.1'
}
现在 Gradle 可以构建我的示例项目。到目前为止一切顺利。然而,在我的实际项目中,lib 文件夹中有很多 JAR,查找每个 jar 文件的实现规范似乎很乏味。
对于Java代码中使用的每个库,lib目录中只有
一个 JAR文件可用,那么有没有办法告诉Gradle只使用它在lib文件夹中找到的JAR文件作为实现?那么我就不需要写出所有(多余的)implementation ...
行。感谢您的指点!
中的以下指令解决Gradle 8的问题:
dependencies {
// Use all libraries provided as jars in the lib folder
implementation fileTree(dir: 'lib', include: ['*.jar'])
}
使用此指令时,您不再需要提供“repositories flatDir”指令。但是,请确保您的
lib
文件夹中每个库只有一个 JAR 版本。如果目录包含库的多个版本(例如
xmlbeans-2.6.0.jar
和
xmlbeans-5.1.1.jar
),那么 Gradle 似乎不够智能,无法默认使用最新版本,您可能会遇到(意外的)编译错误。