Ich versuche ein Multi-Modul-Projekt zu erstellen. Das Projekt wurde erfolgreich erstellt, aber wenn ich versuche, ein Modul als Abhängigkeit von einem anderen Modul zu verwenden, wird eine Ausnahme generiert. Beim Erstellen eines Moduls mit Eclipse wurde die Verpackung als Glas ausgewählt. Beim Erstellen des Moduls wurde das Verpackungs-Tag in der untergeordneten Datei pom.xml jedoch nicht erwähnt, und das Verpackungs-Tag wurde manuell als Glas eingefügt. Folgendes ist mein Elternteil 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-Kindermodul:
<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>
------------------------
Untergeordnetes Servicemodul:
<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>
------------------------------------------
Das Dao-Modul maven sauber und erfolgreich installiert, aber wenn ich versuche, Service-Modul zu verwenden, wird es eine folgende Ausnahme erzeugen:
[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
Ich versuche die Lösung aus dem Web zu finden, aber die Lösung wird immer noch nicht gefunden. Wenn ich in Eclipse das Dependency Hierarchy
Des Servicemoduls öffne, wird das DAO-Modul als Ordner angezeigt, der nicht jar ist. Unten sehen Sie den Screenshot von Dependency Hierarchy
des Servicemoduls.
Für den Fall, dass jemand darauf zurückkommt, war es meines Erachtens das Problem, zuerst das übergeordnete pom zu installieren, von dem alle diese Submodule abhängen, so dass der Maven Reactor die notwendigen Abhängigkeiten zu nicht sammeln kann Bauen Sie das Submodul.
Also aus dem Stammverzeichnis (hier D:\luna_workspace\empire_club\empirecl
) es braucht wahrscheinlich nur ein:
mvn clean install
(Nebenbei: <relativePath>../pom.xml</relativePath>
ist nicht wirklich notwendig, da es ist der Standardwert ).
In meinem Fall habe ich vergessen, dass es sich um die Verpackung von Konfliktglas gegen Pom handelt. Ich habe vergessen zu schreiben
<packaging>pom</packaging>
In jeder untergeordneten pom.xml-Datei
Meine Lösung bestand darin, es zwischen artifaktId
und version
einzufügen.
<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>