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

问题描述 投票:0回答:1

我刚刚开始使用 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 ...

行。

感谢您的指点!

java gradle jar dependencies
1个回答
0
投票
应用

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

 文件夹中每个库只有 
一个 JAR 版本。如果目录包含库的多个版本(例如 xmlbeans-2.6.0.jar
xmlbeans-5.1.1.jar
),那么 Gradle 似乎不够智能,无法默认使用最新版本,您可能会遇到(意外的)编译错误。

© www.soinside.com 2019 - 2024. All rights reserved.