Определите производный класс Jar в Gradle с помощью Kotlin - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь сделать это в Kotlin, но я не очень понимаю, с чего начать. Я также слежу за документами gradle об определении пользовательских задач . 1

Что у меня сейчас есть:

open class FatJar @javax.inject.Inject constructor () : Jar() {
    override fun configure(closure: Closure<*>): Task {
        super.configure(closure)
        from(sourceSets.main.get().output)
        dependsOn(configurations.runtimeClasspath)
        from({
            configurations.runtimeClasspath.get().filter {
                it.name.endsWith("jar") }.map { zipTree(it) }
        })
        return this
    }
}

Переопределение configure() - это общее предположение относительно того, где подходящее место должно делать эти вещи, и я понятия не имею, достигнет ли это sh цели, поскольку я не могу запустить какую-либо версию этого ; Я также пробовал использовать блок init, но проблема не в этом.

Первая ошибка, которую я получил, была:

The constructor for type Build_gradle.FatJar should be annotated with @Inject.

Вот почему я это сделал. Примечание. Я никогда не работал напрямую с внедрением зависимостей java, и мое понимание этого минимально. Так что это автомобиль на полном ходу go культовые вещи, которые я ненавижу делать. не смог найти бесчисленное количество примеров этого точно в Интернете. это:

* What went wrong:
A problem occurred configuring root project 'imap.test'.
> Could not create task ':InteractiveClient'.
   > Could not create task of type 'FatKJar'.
      > 0

  1. У меня также есть копия Gradle In Action , которую я читал большую часть. Он содержит краткий раздел о создании пользовательских классов задач (в groovy), но, как и в официальном примере do c, они фактически применяются к базовому DefaultTask, а не Jar. Я потрясен, что меня постоянно сбивает с толку этот инструмент после того, как я потратил столько времени, пытаясь понять его. Иногда я трачу на это столько же часов, сколько пишу реальный код проекта. Это ужасно.
...