如何通过Gradle 7.0 +制作一个具有依赖项的Jar文件?

2022-09-04 08:10:31

我目前的情况如下:jarbuild.gradle

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

并且工作良好。

但是,我有一条来自Gradle的消息(也许是因为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.

该部件已弃用。configurations.compile

我该如何更新它?

如果我更改了

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

格拉德尔 说> Resolving configuration 'implementation' directly is not allowed


答案 1

对于其他想要将其Gradle配置升级到7.0 +格式的人,请注意,如果您使用该插件,只需将其替换为或可能会出错。您需要使用该插件。文档compileimplementationapijavajava-library

确保在您的中替换:gradle.config

apply plugin: 'java'

跟:

apply plugin: 'java-library'

用于非传递依赖项和可传递依赖项(如果依赖项由项目的依赖项直接使用)。implementationapi


答案 2

您需要在您的案例中替换为。compileruntimeClasspath

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

  • 声明依赖项
  • 解析为编译类路径
  • 暴露于消费项目

它已被依赖关系声明所取代,它也需要被替换为用于解决的问题。implementation

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


推荐