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

时间:2016-05-04 04:35:12

标签: intellij-idea gradle

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

enter image description here

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

构思为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()
}

3 个答案:

答案 0 :(得分:32)

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

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

答案 1 :(得分:12)

我的效果与我的预期相同,特别是因为IntelliJ 14 Ultimate在同一个项目中表现完全不同。

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

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

另请参阅What's New in IntelliJ IDEA 2016.1Gradle Goodness: Source Sets As IntelliJ IDEA Modules

答案 2 :(得分:9)

环境

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

故障排除

在我的情况下,我找不到' Alex Spence '提及。

  

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

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

解决方案

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

导入项目时

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

导入模块

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

创建新模块时

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