gpt4 book ai didi

java - IntelliJ 可以从 Gradle 导入非标准源目录吗?

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:26 26 4
gpt4 key购买 nike

我正在转换为使用 IntelliJ(版本 2019.1)。使用的多项目目录结构对于每个项目都有标准的 src/main/javasrc/test/java,但另外还有一些非标准的目录结构,例如:src/testsupport/java

Gradlew(使用 IntelliJ 中打包的内部/推荐的 gradlew)用于导入项目。 Gradle 构建文件包括:

apply plugin: 'idea'
apply plugin: 'java'

经过编辑以提高清晰度

每个项目都导入良好。项目间引用适用于标准目录。但是,当我在项目 B 中,但需要从项目 A 访问 src/generated/javasrc/testsupport/java 时,这些不会被导入(从 gradle 命令行编译良好的 import 语句在 IntelliJ 中显示为无法解析)。是否需要进行配置更改或执行某些操作才能使这些生效?

目前,我有:

subprojects {
idea {
module {
testSourceDirs += project.sourceSets.generated.java.srcDirs
testSourceDirs += project.sourceSets.testsupport.java.srcDirs
}
}
}

最佳答案

您需要 Gradle 的帮助,为您的项目定义的自定义源创建源集。所以从你的问题来看,类似:

(使用 Kotlin DSL)

allprojects {
apply {
plugin("idea")
plugin("java-library")
}

repositories {
mavenCentral()
}

configure<SourceSetContainer> {
create("generated") {
compileClasspath += project.the<SourceSetContainer>()["main"].output
runtimeClasspath += project.the<SourceSetContainer>()["main"].output
}
create("testsupport") {
compileClasspath += project.the<SourceSetContainer>()["main"].output
runtimeClasspath += project.the<SourceSetContainer>()["main"].output
}
}

val api by configurations
val testImplementation by configurations
val testRuntimeOnly by configurations

dependencies {
api(platform("org.junit:junit-bom:5.5.1"))
testImplementation("org.junit.jupiter:junit-jupiter-api")
testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}

val test by tasks.getting(Test::class) {
useJUnitPlatform()
}
}

以上将为您提供:

enter image description here

现在您想在 projectB 中使用 projectA,因此 projectB 的 Gradle 文件将包含对 projectA 的依赖项:

dependencies {
implementation(":projectA")
}

这应该可以帮助您入门。请记住,上面给出的示例使用 Kotlin DSL您应该能够将其转换回 Groovy。

引用文献:

关于java - IntelliJ 可以从 Gradle 导入非标准源目录吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57149223/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com