当前位置: 首页 > 知识库问答 >
问题:

如何通过Gradle 7.0创建具有依赖关系的Jar文件?

太叔马鲁
2023-03-14

我当前的jar在build中。gradle如下所示:

jar {
manifest {
    attributes "Main-Class": "hoge.Main"
}
    from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

而且工作得很好。

然而,我有一个来自格雷德的消息(可能是从6号开始?)

这是实际消息:

The compile configuration has been deprecated for dependency declaration. This will fail with an error in Gradle 7.0. Please use the implementation configuration instead.

零件<代码>配置。不推荐使用compile。

如何更新?

如果我改变了

jar {
manifest {
    attributes "Main-Class": "hoge.Main"
}
    from configurations.implementation.collect { it.isDirectory() ? it : zipTree(it) }
}

Gradle说


共有3个答案

陆烨磊
2023-03-14

编译配置已被弃用,取而代之的是实现。

见文件。

瞿博易
2023-03-14

在本例中,您需要将编译替换为运行时类路径。

在以前的Gradle版本中,编译有太多的责任:

  • 声明依赖项

对于依赖关系声明,它已经被实现所取代,还需要被解决问题的东西所取代。

但是,在您的情况下,您很可能希望打包运行时依赖项而不是编译依赖项。因此,您应该使用runtimeClasspath作为要解析的配置。而不是compileClasspath,它不包含任何runtimeOnly依赖项。

司业
2023-03-14

对于其他想要将Gradle配置升级到7.0格式的人,请注意,如果您使用java插件,只需将编译替换为实现或api很可能会出错。您需要使用java库插件。文档

确保在gradle.config中替换:

apply plugin: 'java'

与:

apply plugin: 'java-library'

对于非传递依赖项使用实现,对于传递依赖项使用api(如果依赖项由项目的依赖项直接使用)。

 类似资料:
  • 我想构建这个项目,以便最终的jar在一个jar文件中包含所有依赖项(如果不可能的话,包括从依赖项到jar文件的类),我遵循了线程Including dependencies in a jar with Maven,但它也包含了我在pom中甚至没有提到的依赖项。这是我的POM,它只有两个依赖项。 我想当Final构建时,它包括pom中提到的特定依赖项(以类或jar形式)

  • 我尝试使用gradle build的以下格式创建一个jar库,以便以后可以将其作为jar包导入该项目中的其他人。但是,生成的jar只有一个清单文件,没有java文件。 这些文件在Eclipse中的一个包中。 感恩节。

  • 问题内容: 最近,我接受了用JSF编写的Web系统的支持和编程。代码有点凌乱和多余,是的,​​不存在任何文档。 该系统具有40多个jar库,由于旧版本和测试,其中大多数是冗余的。要删除一个jar,我必须检查它是否未在代码中导入,因此我在代码中搜索了jar导入路径(我正在使用IntelliJ IDE),确保未使用它,然后将其删除。 但是,在编译代码后,在测试过程中发生了许多运行时错误。我发现我删除了

  • 本文向大家介绍Apache Maven 创建具有项目所有依赖项的.jar文件,包括了Apache Maven 创建具有项目所有依赖项的.jar文件的使用技巧和注意事项,需要的朋友参考一下 示例 要创建包含所有依赖项的JAR,可以使用内置描述符格式jar-with-dependencies。以下示例package使用此内置描述符并声明的主类来配置绑定到该阶段的Assembly Plugin的执行co

  • 我正在使用war插件为我在Gradle中的项目生成一个简单的.war文件。我想知道如何配置gradle,这样我就可以创建4个不同的.war文件,这些文件具有不同的依赖关系。 null 下面的示例创建了一个只包含一个jar的war文件,但我希望使用不同的jar生成5个不同的.war文件。 Build.Gradle

  • 我是和的新手。我正在尝试在远程计算机上运行hdfs MapReduce作业。我没有写入/编辑依赖项文件的权限。我想知道是否可以将我的Maven项目传递给我的MapReduce作业。这样,我就不需要SSH进入远程机器并更改maven项目的依赖关系。我将使用包含远程计算机上未包含的所有所需依赖项的JAR来运行我的MapReduce作业。