我的項目是使用 Gradle 和 Kotlin DSL 進行構建。我現在想添加一個用于測試的自定義源集。相關代碼如下:java { sourceSets.create("systemTest") { java.srcDir("src/system-test/java") resources.srcDir("src/system-test/resources") }}通過使用它,我在 Intellij 中獲得了另一個模塊,該模塊被視為源模塊。我還嘗試了以下方法將其標記為測試模塊:idea.module { testSourceDirs.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)testSourceDirs.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)}但是,如果我然后./gradlew clean idea使用生成的文件打開項目(通常我從 Gradle 導入我的項目),則 system-test 文件夾根本不會被視為源模塊。任何人都有使用 Kotlin DSL 聲明自定義源集并將其標記為測試模塊的經驗?編輯:我現在使用 Groovy 創建了一個示例 Gradle 項目,并且使用以下代碼可以正常工作(我猜這只是我上面語句的 groovy 版本):sourceSets { systemTest { java { compileClasspath += main.output + test.output runtimeClasspath += main.output + test.output srcDir file('src/system-test/java') } resources.srcDir file('src/system-test/resources') }}idea { module { testSourceDirs += project.sourceSets.systemTest.java.srcDirs testSourceDirs += project.sourceSets.systemTest.resources.srcDirs }}所以要么我對 Kotlin DSL 的轉換是錯誤的,要么是 Intellij 方面的一個錯誤。
2 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
好像我把 Kotlin 轉換錯了,應該是
idea.module {
val testSources = testSourceDirs
testSources.addAll(project.sourceSets.getByName("systemTest").java.srcDirs)
testSources.addAll(project.sourceSets.getByName("systemTest").resources.srcDirs)
testSourceDirs = testSources
}
使用此代碼段,testSourceDirs更改集并將相關源集標記為測試模塊。

慕森王
TA貢獻1777條經驗 獲得超3個贊
另一種方法:
testSourceDirs = testSourceDirs.plus(sourceSets["integrationTest"].java.srcDirs)
testResourceDirs = testResourceDirs.plus(sourceSets["integrationTest"].resources.srcDirs)
添加回答
舉報
0/150
提交
取消