J'essaie de créer un projet multi-module Maven. le projet crée avec succès, mais lorsque j'essaie d'utiliser un module en tant que dépendance d'un autre module, il génère une exception. Lorsque je crée un module à l’aide d’Eclipse, j’ai sélectionné l’emballage en tant que jar, mais lorsqu’il a été créé, la balise d’emballage n’était pas mentionnée dans le fichier pom.xml et j’ai inséré manuellement l’étiquette d’emballage en tant que jar. ce qui suit est mon parent pom.xml
:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>pom</packaging>
-------------------------
<modules>
<module>empirecl-web</module>
<module>empirecl-dao</module>
<module>empirecl-service</module>
<module>empirecl-api</module>
</modules>
Dao Child Module:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-dao</artifactId>
<packaging>jar</packaging>
<name>empirecl-dao</name>
------------------------
Module Service Child:
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>com.netsol</groupId>
<artifactId>empirecl</artifactId>
<version>0.0.1-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
<artifactId>empirecl-service</artifactId>
<packaging>jar</packaging>
<name>empirecl-service</name>
<dependencies>
<dependency>
<groupId>com.netsol</groupId>
<artifactId>empirecl-dao</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>jar</type>
</dependency>
------------------------------------------
Le module Dao doit être correctement nettoyé et installé, mais lorsque j'essaie d'utiliser le module de service, il génère une exception suivante:
[ERROR] Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Failed to read artifact descriptor for com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT: Could not find artifact com.netsol:empirecl:pom:0.0.1-SNAPSHOT -> [Help 1]
org.Apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal on project empirecl-service: Could not resolve dependencies for project com.netsol:empirecl-service:jar:0.0.1-SNAPSHOT: Failed to collect dependencies at com.netsol:empirecl-dao:jar:0.0.1-SNAPSHOT
J'essaie de trouver la solution à partir du Web, mais la solution n'est toujours pas trouvée. Dans Eclipse quand j'ouvre le Dependency Hierarchy
du module de service, le module DAO était présenté sous la forme d’un dossier et non de jar. ci-dessous est la capture d'écran de Dependency Hierarchy
du module de service.
Au cas où quelqu'un y reviendrait, je pense que le problème ici était de ne pas installer le pom parent en premier, ce dont dépendent tous ces sous-modules. Le Maven Reactor ne peut pas collecter les dépendances nécessaires pour construire le sous-module.
Donc, à partir du répertoire racine (ici D:\luna_workspace\empire_club\empirecl
) il ne manque probablement qu'un:
mvn clean install
(De côté: <relativePath>../pom.xml</relativePath>
n'est pas vraiment nécessaire car c'est la valeur par défaut ).
Dans mon cas, j'ai oublié qu'il s'agissait d'un conflit entre un pot et un pom. J'ai oublié d'écrire
<packaging>pom</packaging>
Dans chaque fichier pom.xml enfant
Ma solution a été de l'insérer entre artifaktId
et version
<groupId>com.onlinechat</groupId>
<artifactId>chat-online</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>server</module>
<module>client</module>
<module>network</module>
</modules>