Lors de l'exécution de commandes telles que
mvn dependency:build-classpath
ou
mvn exec:Java
Maven est incapable de résoudre une dépendance d'un de mes modules sur un autre.
[ERREUR] Echec de l'exécution de l'objectif sur le projet analyseur-application: Impossible de résoudre les dépendances du projet projet_groupe: A: jar: 0.1-SNAPSHOT: Impossible de trouver l'artefact project_group: B: jar: 0.1-SNAPSHOT.
La structure du projet est la suivante:
/pom.xml
/A/pom.xml
/B/pom.xml
Le parent pom est comme suit:
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>project_group</groupId>
<artifactId>parent</artifactId>
<packaging>pom</packaging>
<version>0.1-SNAPSHOT</version>
<name>parent</name>
<modules>
<module>A</module>
<module>B</module>
</modules>
Le premier module enfant (celui qui ne résout pas la dépendance):
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>A</artifactId>
<packaging>jar</packaging>
<name>A</name>
<dependencies>
<dependency>
<groupId>parent_group</groupId>
<artifactId>B</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
Le deuxième module enfant (la dépendance):
<project xmlns="http://maven.Apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>parent_group</groupId>
<artifactId>parent</artifactId>
<version>0.1-SNAPSHOT</version>
</parent>
<artifactId>B</artifactId>
<packaging>jar</packaging>
<name>B</name>
Avez-vous couru mvn clean install
au moins une fois sur le projet pour installer les dépendances dans votre référentiel local?
Le réacteur Maven est bizarre de cette façon, il ne conserve les modules que pour certaines tâches. Lorsque vous exécutez une cible de construction qui ne fait que quelque chose pour un sous-projet, même si Maven crée d'abord des dépendances, elle ne les conserve pas dans le réacteur (parfois).
L'installation dans le référentiel local est une solution de contournement, mais elle est horrible et doit être évitée autant que possible, car vous pouvez facilement vous retrouver avec des résultats de génération obsolètes.
Une solution un peu moins laide consiste à combiner deux cibles de construction, la deuxième cible de fabrication faisant quelque chose d'inoffensif, mais déclenchant l'ajout de réacteur dans tous les sous-projets.
Par exemple, vous pouvez combiner la tâche de votre choix avec les tâches 'Compiler' ou 'Package'.
Voir également la réponse la plus votée à l'adresse Maven ne reconnaît pas les modules frères lors de l'exécution de mvn dependency: tree
Cette erreur peut également être due au fait que Maven est en mode hors connexion.
Parfois, il me semble que le mode hors connexion est activé accidentellement dans IntelliJ IDEA. Pour le désactiver, basculez le Toggle Offline Mode
bascule dans la barre d’outils Maven
ou décochez la case Travailler hors ligne dans les paramètres sous Build, Execution, Deployment > Build Tools > Maven
.