gradle 6.x kotlin jar publi с загрузочной пружиной sh терпит неудачу, обходной путь в gradle- kotlin -dsl необходим - PullRequest
2 голосов
/ 25 февраля 2020

примечания к выпуску gradle 6.x говорит нам, что maven-publish загрузка загрузочных файлов не работает, потому что задание по умолчанию jar отключено плагином весенней загрузки.

Обходной путь - сообщить Gradle, что загружать. Если вы хотите загрузить bootJar, то вам необходимо настроить исходящие конфигурации для этого:

configurations {
   [apiElements, runtimeElements].each {
       it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }
       it.outgoing.artifact(bootJar)
   }
}

к сожалению, все мои попытки перевести это на gradle- kotlin -dsl не удаются:


configurations {
   listOf(apiElements, runtimeElements).forEach {
       it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }
       it.outgoing.artifact(bootJar)
   }
}

* What went wrong:
Script compilation errors:

it.outgoing.artifacts.removeAll { it.buildDependencies.getDependencies(null).contains(jar) }
                                                                             ^ Out-projected type 'MutableSet<CapturedType(out (org.gradle.api.Task..org.gradle.api.Task?))>' prohibits the use of 'public abstract fun contains(element: E): Boolean defined in kotlin.collections.MutableSet'

it.outgoing.artifacts.removeAll { it.buildDependencies.getDependencies(null).contains(jar) }
                                                                                      ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
                                                                                                             public val TaskContainer.jar: TaskProvider<Jar> defined in org.gradle.kotlin.dsl
it.outgoing.artifact(bootJar)
                     ^ Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public val TaskContainer.bootJar: TaskProvider<BootJar> defined in org.gradle.kotlin.dsl

есть идеи, как сделать этот groovy обходной путь в Gradle Kotlin DSL?

1 Ответ

2 голосов
/ 25 февраля 2020

jar и bootJar - это задачи Gradle. Вы можете получить ссылку на задачу в Kotlin DSL следующим образом:

configurations {
   listOf(apiElements, runtimeElements).forEach {
       // Method #1
       val jar by tasks
       it.outgoing.artifacts.removeIf { it.buildDependencies.getDependencies(null).contains(jar) }

       // Method #2
       it.outgoing.artifact(tasks.bootJar)
   }
}
...