В настоящее время мы пытаемся перенести наши существующие build.gradle
скрипты на новый Kotlin DSL. Прямо сейчас мы боремся с конфигурацией jar
задачи.
Наш проект - это простой многопроектный. Допустим, у нас Core
, Plugin
и Plugin
используют классы из Core
. Теперь при сборке Plugin
целевая банка должна включать все используемые классы из Core
.
Вот как это выглядело раньше:
jar {
from sourceSets.main.output
from project(':Core').sourceSets.main.output
}
И это текущее решение с Kotlin DSL:
val jar: Jar by tasks
jar.apply {
from(java.sourceSets["main"].allSource)
from(project(":Core").the<SourceSetContainer>()["main"].allSource)
}
Однако приведенный выше пример дает мне ошибку Extension of type 'SourceSetContainer' does not exist. Currently registered extension types: [ExtraPropertiesExtension]
. Я также пробовал другие найденные мной фрагменты кода, но пока ни один из них не работает.
Я также пробовал это (как предложено в первом ответе):
val jar: Jar by tasks
jar.apply {
from(java.sourceSets["main"].allSource)
from(project(":Core").sourceSets.getByName("main").allSource)
}
Но затем IDE (а также задача jar
) утверждает, что sourceSets
недоступен: Unresolved reference. None of the following candidates is applicable because of receiver type mismatch: public val KotlinJvmProjectExtension.sourceSets: NamedDomainObjectContainer<DefaultKotlinSourceSet> defined in org.gradle.kotlin.dsl
.
Я надеюсь, что кто-то может нам помочь, потому что очень неприятно тратить часы на настройку вместо того, чтобы писать какой-либо полезный код.
Заранее большое спасибо.