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

Yug*_*hou 36 intellij-idea gradle

最近,我发现我在Idea中的所有gradle项目导入了main和test的分离模块.模块看起来像这样:

在此输入图像描述

如您所见,有一个"主"模块,其内容根是src/main,仅包含主类和资源,还有一个"测试"模块.模块看起来不对劲.这是预期的行为吗?

想法是Intellij Idea 2016.1.1和gradle是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()
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*nce 33

您可以在Gradle设置中将其关闭.首选项 - >构建,执行,部署 - >构建工具 - > Gradle:取消选中每个源集创建单独的模块.

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

  • 似乎IDEA 2019.2中不再有``为每个源集创建单独的模块''选项了 (4认同)
  • 经过4天的搜索来解决生成类无法找到bean的Querydsl错误,反之亦然,这就解决了这个问题.谢谢. (2认同)

Arn*_*ter 13

我有同样的效果,这不是我所期望的,特别是因为IntelliJ 14 Ultimate在同一个项目中表现完全不同.

这是随2016.1版引入的IntelliJ的新行为,用于处理复杂的Gradle项目(在您引入新的源集之前从未完全运行).

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

另请参见IntelliJ IDEA 2016.1Gradle Goodness中的新功能:源设置为IntelliJ IDEA模块.


gal*_*rio 12

环境

  • IntelliJ IDEA 2017.2(Build#IU-172.3317.76,建于2017年7月15日)
  • Windows 10
  • Gradle项目

故障排除

就我而言,我找不到' Alex Spence '提到的选项.

您可以在Gradle设置中将其关闭.首选项 - >构建,执行,部署 - >构建工具 - > Gradle:取消选中每个源集创建单独的模块.

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

我们可以在导入或创建模块和导入项目时取消选中此选项.

进口项目时

  • 文件 - >新建 - >来自现有源的项目... - >选择文件 - > Gradle - > 取消选中每个源集创建单独的模块
  • 欢迎页面 - >导入项目 - >选择文件 - > Gradle - > 取消选中为每个源集创建单独的模块

何时导入模块

  • 项目结构 - >添加 - >导入模块 - >选择文件 - > Gradle - > 取消选中每个源集创建单独的模块

在创建新模块时

  • 您也可以在创建新模块时取消选中此选项.

  • @Eria在这里有一种解决方法https://youtrack.jetbrains.com/issue/IDEA-222172 (2认同)