web-dev-qa-db-fra.com

Pourquoi mes projets Gradle créent des modules séparés pour le principal et le test dans Intellij Idea

Récemment, j'ai trouvé tous mes projets Gradle dans Idea Import Séparez les modules pour Main et Test. Les modules ressemblent à ceci:

enter image description here

Comme vous pouvez le voir, il existe un module "principal" dont la racine de contenu est le src/main et ne comprend que les classes et ressources principales, et il existe également un module "test". Les modules ne semblent tout simplement pas corrects. Est-ce un comportement attendu?

L'idée est Intellij Idea 2016.1.1 et le gradle est 2.11

Voici le contenu de 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()
}
32
Yugang Zhou

J'ai le même effet qui n'est pas ce à quoi je m'attendais d'autant plus qu'IntelliJ 14 Ultimate se comporte complètement différemment sur le même projet.

Il s'agit du nouveau comportement d'IntelliJ introduit avec la version 2016.1 pour gérer des projets Gradle complexes (qui n'a jamais fonctionné complètement auparavant lorsque vous avez introduit de nouveaux ensembles source).

Cela semble un peu étrange mais fonctionne (mieux qu'avant). Et vous pouvez maintenant voir les dépendances pour chaque ensemble de sources dans la fenêtre du projet Gradle.

Voir aussi Quoi de neuf dans IntelliJ IDEA 2016.1 et Gradle Goodness: Source définit comme IntelliJ IDEA Modules .

13
Arne Burmeister

MISE À JOUR:

Il semble que Jetbrains ait supprimé la case à laquelle je faisais référence depuis que j'ai posté cela. La réponse de galcyurio ressemble à la bonne façon de désactiver cette fonctionnalité dans les versions actuelles.

Réponse originale:

Vous pouvez désactiver cela dans les paramètres Gradle. Préférences -> Build, Execution, Deployment -> Build Tools -> Gradle: décochez créer des modules séparés par ensemble source.

J'ai dû le désactiver car cela provoquait des échecs de construction car Make ne faisait qu'extraire le jeu de sources principal. C'est probablement un bogue dans Intellij parce que gradle peut encore très bien construire les projets.

32
Alex Spence

Environnement

  • IntelliJ IDEA 2017.2 (Build # IU-172.3317.76, construit le 15 juillet 2017)
  • Windows 10
  • Projet Gradle

Dépannage

Dans mon cas, je ne trouve pas l'option mentionnée par ' Alex Spence '.

Vous pouvez désactiver cela dans les paramètres Gradle. Préférences -> Build, Execution, Deployment -> Build Tools -> Gradle: décochez créer des modules séparés par ensemble source .

J'ai cherché cette option, heureusement, beaucoup d'autres réponses m'ont montré où se trouve cette option.

Solution

Nous pouvons décocher cette option lorsque nous importons ou créons un module et importons un projet.

lors de l'importation d'un projet

  • Fichier -> Nouveau -> Projet à partir de sources existantes ... -> sélectionnez le fichier -> Gradle -> décochez créer des modules séparés par ensemble de sources
  • Page d'accueil -> Importer un projet -> sélectionner un fichier -> Gradle -> décocher créer des modules séparés par ensemble source

lors de l'importation du module

  • Structure du projet -> Ajouter -> module d'importation -> sélectionner un fichier -> Gradle -> décochez créer des modules séparés par ensemble source

lors de la création d'un nouveau module

  • Vous pouvez également décocher cette option lorsque vous créez un nouveau module.
11
galcyurio