如何告诉Gradle对所有Java导入使用lib文件夹中给定的JAR文件,而不需要这些JAR的实现行?

i2byvkas  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(95)

我刚刚开始使用Gradle,我正在将一个非托管(Eclipse)Java项目转换为Gradle命令行项目。
所有库JAR都在本地目录中(机器是空气隔离的,无法访问Maven repo或类似文件),所以我在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目录中只有 * 一个 * lib文件可用,那么有没有一种方法可以告诉Gradle只使用它在lib文件夹中找到的lib文件作为实现?然后我不需要写出所有(多余的)implementation ...行。
感谢任何指针!

oxf4rvwz

oxf4rvwz1#

应用Jorn评论中的tip,可以通过build.gradle中的以下指令解决Gradle 8的问题:

dependencies {
    // Use all libraries provided as jars in the lib folder
    implementation fileTree(dir: 'lib', include: ['*.jar'])
}

使用此指令时,您无需再提供repositories flatDir”指令。 但是,请确保在您的lib文件夹中,每个库只有 * 一个 * 版本。如果目录包含多个版本的库(例如xmlbeans-2.6.0.jarxmlbeans-5.1.1.jar`),那么Gradle似乎不够智能,无法默认使用最新版本,您可能会收到(意外的)编译错误。

相关问题