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