Невозможно создать JAR моего проекта JDA из-за зависимости pom - PullRequest
0 голосов
/ 15 октября 2018

У меня есть проект Kotlin с JDA API, который мне нужно развернуть в среде Heroku.Для этого я создал задачу JAR в своем файле build.gradle.

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.

Редактировать: Вот мой блок dependencies в build.gradle.

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'
}

1 Ответ

0 голосов
/ 15 октября 2018

В Maven есть специальный артефакт типа pom.Он также публикуется и загружается как зависимость.В jar from нет ни каталога, ни файла jar, поэтому обработка завершается неудачно.Чтобы решить эту проблему, вам нужно исключить *.pom перед сбором, поэтому:

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

В следующий раз вы можете использовать плагин gradle shadow или аналогичный - плагин, который создает Uber JAR, поскольку он, вероятно, обрабатывает его правильно.

...