Как добавить новый источник с помощью gradle kotlin-dsl
Я хочу добавить источник src/gen/java
, С groovy это довольно просто и уже описано в https://discuss.gradle.org/t/how-to-use-gradle-with-generated-sources/9401/5
sourceSets {
gen {
java.srcDir "src/gen/java"
}
}
Но я придерживался kotlin-dsl, чтобы добавить новый. Все, что у меня есть, это:
java {
sourceSets {
}
}
Может ли кто-нибудь помочь здесь
10 ответов
Вы должны попробовать следующее:
java.sourceSets.create("src/gen/java")
Надеюсь, это то, что вам нужно!
Ответ @s1m0nw1 правильный, чтобы добавить новый источник. Но чтобы просто добавить новую исходную папку в существующий исходный набор, это можно использовать:
java.sourceSets["main"].java {
srcDir("src/gen/java")
}
Работал у меня на Gradle 4.10.2:
sourceSets.getByName("main") {
java.srcDir("src/main/java")
java.srcDir("src/main/kotlin")
}
sourceSets.getByName("test") {
java.srcDir("src/test/java")
java.srcDir("src/test/kotlin")
}
Приведенные выше коды также можно использовать в subprojects
блок.
Работал для меня на Gradle 4.10.2:
sourceSets.create("integrationTest") {
java.srcDir("src/integrationTest/java")
java.srcDir("build/generated/source/apt/integrationTest")
resources.srcDir("src/integrationTest/resources")
}
котлин-dsl
sourceSets {
this.getByName("androidTest"){
//Adds the given source directory to this set.
this.java.srcDir("src/mock/java")
}
this.getByName("test"){
this.java.srcDir("src/mock/java")
}
}
Я хотел добавить исходный набор с именем "интеграция тестов" и исходный каталог src/test-integration/kotlin
, Я смог сделать это, объединив два ранее существовавших ответа:
java.sourceSets.create("test-integration").java {
srcDir("src/test-integration/kotlin")
}
Вот что у меня было раньше:
main.kotlin.srcDirs = main.java.srcDirs = ['src']
test.kotlin.srcDirs = test.java.srcDirs = ['test']
main.resources.srcDirs = ['resources']
test.resources.srcDirs = ['testresources']
Выше теперь переводится как:
sourceSets {
main {
java {
srcDirs("src")
}
resources {
srcDirs("resources")
}
}
test {
java {
srcDirs("test")
}
resources {
srcDirs("testresources")
}
}}
Начиная с Gradle 7.5:
sourceSets {
main {
java.sourceSets {
create("gen"){
java.srcDir("src/gen/java")
}
}
}
}
Если вам интересно, как это сделать вJetpack Compose + Jvm
приложение:
plugins {
kotlin("jvm")
id("org.jetbrains.compose") version "1.4.1"
}
kotlin {
sourceSets {
main {
kotlin.srcDir("src/jvmMain/kotlin")
resources.srcDir("src/jvmMain/res")
}
}
dependencies {
implementation(compose.desktop.currentOs)
}
}
Ставка на способ использования плагина jvm-test-suite, например:
plugins {
// ..
`jvm-test-suite`
}
testing {
suites {
register("konsistTest", JvmTestSuite::class) {
dependencies {
// Add 'main' source set dependency (optional)
implementation(project())
// Add Source set specific dependencies
implementation("com.lemonappdev:konsist:0.11.0")
}
}
}
}
The konsistTest
— имя нового исходного набора. Теперь просто создайте каталог с таким же именем в IDE: