Intellij idea 为什么我的gradle项目在Intellij Idea中为main和test创建单独的模块

Intellij idea 为什么我的gradle项目在Intellij Idea中为main和test创建单独的模块,intellij-idea,gradle,Intellij Idea,Gradle,最近,我在Idea中找到了我所有的gradle项目,分别导入主模块和测试模块。模块如下所示: 如您所见,有一个“main”模块,其内容根是src/main,只包含主要类和资源,还有一个“test”模块。模块看起来不太对劲。这是预期的行为吗 想法是Intellij Idea 2016.1.1,等级是2.11 下面是build.gradle的内容 apply plugin: 'idea' apply plugin: 'java' apply plugin: 'spring-boot' apply

最近,我在Idea中找到了我所有的gradle项目,分别导入主模块和测试模块。模块如下所示:

如您所见,有一个“main”模块,其内容根是src/main,只包含主要类和资源,还有一个“test”模块。模块看起来不太对劲。这是预期的行为吗

想法是Intellij Idea 2016.1.1,等级是
2.11

下面是build.gradle的内容

apply plugin: 'idea'
apply plugin: 'java'
apply plugin: 'spring-boot'
apply plugin: "jacoco"

version = getVersion()

sourceCompatibility = 1.8
targetCompatibility = 1.8

configurations {
    provided
}


sourceSets {
    main {
        compileClasspath += configurations.provided
    }
    test {
        resources {
            srcDir 'src/test/data'
        }

        compileClasspath += configurations.provided
    }
}

processResources {
    filter { String line -> line.replace("{version}", getVersion()) }
}

processTestResources {
    filter { String line -> line.replace("{version}", getVersion()) }
}

idea {
    module {
        scopes.PROVIDED.plus += [configurations.provided]
    }
}

repositories {
    mavenCentral()
}

我有同样的效果,这不是我所期望的,尤其是Intellij14 Ultimate在同一个项目中表现完全不同

这是IntelliJ在2016.1版中引入的新行为,用于处理复杂的Gradle项目(在引入新的源代码集之前从未完全工作过)

它看起来有点奇怪,但工作(比以前更好)。现在,您可以在gradle项目窗口中看到每个源集的依赖项


另请参见和。

更新:

看来Jetbrains删除了我发布此消息后所指的复选框。galcyurio的答案看起来是在当前版本中禁用此功能的正确方法

原始答案:

您可以在渐变设置中关闭此选项。首选项->构建、执行、部署->构建工具->渐变:取消选中“为每个源集创建单独的模块”

我不得不关闭它,因为它会导致构建失败,因为Make只是拉入了主源代码集。这可能是Intellij中的一个bug,因为gradle仍然可以很好地构建项目

2019.2以上 我到处寻找intellij的设置,但找不到选项。 所以我在GitHub上检查了社区版本的源代码。 此选项已弃用。不确定,但它似乎被设置为不可见

此设置已弃用,仅用于故障排除,因为它与Gradle的模型不完全兼容。请考虑将其恢复到默认值(选中)

见第20-22行


环境
  • IntelliJ IDEA 2017.2(构建#IU-172.3317.76,于2017年7月15日构建)
  • 视窗10
  • 格拉德尔项目
故障排除 就我而言,我找不到“Alex Spence”提到的选项

您可以在渐变设置中关闭此选项。首选项->构建、执行、部署->构建工具->渐变:取消选中“为每个源集创建单独的模块”

我搜索了这个选项,幸运的是很多其他的答案告诉我这个选项在哪里

解决方案 我们可以在导入或创建模块并导入项目时取消选中此选项

导入项目时
  • 文件->新建->现有来源的项目…->选择文件->渐变->取消选中“为每个源集创建单独的模块”
  • 欢迎页面->导入项目->选择文件->渐变->取消选中“为每个源集创建单独的模块”
导入模块时
  • 项目结构->添加->导入模块->选择文件->渐变->取消选中“为每个源集创建单独的模块”
创建新模块时
  • 您也可以在创建新模块时取消选中此选项

感谢您提供的链接。但是,我如何
在新的更改中添加框架支持
?我是否必须在
main
test
模块上都添加
Spring
方面?如果我因此而产生循环依赖,该怎么办?经过4天的搜索以解决Querydsl错误(生成的类找不到bean,反之亦然),这就解决了问题。谢谢。在IDEA 2019.2中,似乎不再有
为每个源代码集创建单独模块的选项了。该复选框在IntelliJ IDEA 2019.2中的任何地方都不存在了。。。有人有解决这个版本的方法吗?@Eria这里有一个解决方法