由于 pom 依赖,无法创建我的 JDA 项目的 JAR

Posted

技术标签:

【中文标题】由于 pom 依赖,无法创建我的 JDA 项目的 JAR【英文标题】:Unable to create a JAR of my JDA project because of pom dependency 【发布时间】:2019-03-19 21:00:21 【问题描述】:

我有一个带有 JDA API 的 Kotlin 项目,我需要将它部署在 Heroku 环境中。为此,我在 build.gradle 文件中创建了一个 JAR 任务。

jar 
    baseName = 'discord-stats-bot'
    version =  'v1'
    manifest 
        attributes('Main-Class': 'com.vchernogorov.discordbot.BotKt')
    
    from 
        configurations.compile.collect  it.isDirectory() ? it : zipTree(it) 
    

但由于以下错误,我无法构建此 JAR 文件。

16:02:03 vchernogorov $ ./gradlew jar
:kaptGenerateStubsKotlin UP-TO-DATE
:kaptKotlin UP-TO-DATE
:compileKotlin UP-TO-DATE
:compileJava UP-TO-DATE
:copyMainKotlinClasses UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:inspectClassesForKotlinIC UP-TO-DATE
:jar

FAILURE: Build failed with an exception.

* What went wrong:
Could not expand ZIP '/Users/vchernogorov/.gradle/caches/modules-2/files-2.1/club.minnced/opus-java/1.0.4/596995aaf2f5b5091c4d251fdc11fa62680cc59e/opus-java-1.0.4.pom'.
> archive is not a ZIP archive

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 6.784 secs

此库是 JDA 项目中的依赖项。所以我需要帮助来配置这个jar 任务,以便正确构建我的可执行文件并将其部署到 Heroku。

编辑:这是我在build.gradle 中的dependencies 块。

dependencies 
    compile 'com.google.guava:guava:23.0'
    compile "org.jetbrains.kotlinx:kotlinx-coroutines-core:0.16"
    compile "org.jsoup:jsoup:1.10.3"
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile "net.dv8tion:JDA:3.8.0_436"
    compile "khttp:khttp:0.1.0"
    compile 'com.google.code.gson:gson:2.8.1'

【问题讨论】:

你能分享dependencies块吗? 添加了dependencies块。 【参考方案1】:

在 maven 中有一个 special 类型为 pom 的工件。它也作为依赖项发布和下载。在 jar 中,from 既不是目录也不是 jar 文件,这就是处理失败的原因。要解决它,您需要在收集之前排除*.pom,所以:

from 
   configurations
      .compile
      .findAll  !it.name.endsWith('pom') 
      .collect  it.isDirectory() ? it : zipTree(it) 
  

下次你可以使用 gradle shadow 插件或类似插件 - 一个构建 uber jar 的插件,因为它可能正确处理它。

【讨论】:

以上是关于由于 pom 依赖,无法创建我的 JDA 项目的 JAR的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ IDEA 定义的 maven pom 中的错误

Selenium - Maven 依赖项 - 无法读取工件描述符

创建maven项目pom.xml出现错误(依赖Missing)

MAVEN BUILD FAILURE - 无法解析项目 XYZ 的依赖关系

如何手动从 jitpack.io 下载 aar 和 pom 文件?

Discord JDA 无法创建角色