webentwicklung-frage-antwort-db.com.de

Maven kann die Abhängigkeit für ein Modul in demselben Multi-Modul-Projekt nicht auflösen

Beim Ausführen von Befehlen wie

mvn dependency:build-classpath

oder

mvn exec:Java

Maven ist nicht in der Lage, eine Abhängigkeit eines meiner Module von einem anderen aufzulösen.

[FEHLER] Ziel konnte in der Projekt-Parser-App nicht ausgeführt werden: Abhängigkeiten für das Projekt project_group konnten nicht aufgelöst werden: A: jar: 0.1-SNAPSHOT: Artefakt project_group konnte nicht gefunden werden: B: jar: 0.1-SNAPSHOT

Die Projektstruktur ist wie folgt:

/pom.xml
/A/pom.xml
/B/pom.xml

Das übergeordnete POM lautet wie folgt:

<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>

Das erste untergeordnete Modul (dasjenige, das die Abhängigkeit nicht auflösen kann):

    <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>

Das zweite Kindmodul (die Abhängigkeit):

  <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>

Hast du mvn clean install mindestens einmal im Projekt, um die Abhängigkeiten in Ihrem lokalen Repository zu installieren?

49
Andrew McKee

Der Maven-Reaktor ist auf diese Weise komisch, er hält Module nur für bestimmte Aufgaben bereit. Wenn Sie ein Build-Ziel ausführen, das nur etwas für ein Teilprojekt ausführt, werden die Abhängigkeiten von Maven (manchmal) auch dann nicht gespeichert, wenn sie zuerst erstellt werden.

Die Installation im lokalen Repository ist eine Problemumgehung, aber schrecklich und sollte nach Möglichkeit vermieden werden, da Sie leicht veraltete Build-Ergebnisse erhalten können.

Eine etwas weniger hässliche Problemumgehung besteht darin, zwei Build-Ziele zu kombinieren, wobei das zweite Build-Ziel harmlose Aktionen ausführt, jedoch in allen Teilprojekten eine Erweiterung des Reaktors auslöst.

Als Beispiel können Sie die gewünschte Aufgabe mit den Aufgaben 'Kompilieren' oder 'Packen' kombinieren.

Siehe auch die Antwort mit der höchsten Bewertung unter Maven erkennt keine Geschwistermodule, wenn mvn dependency: tree ausgeführt wird

15
tkruse

Dieser Fehler kann auch dadurch verursacht werden, dass sich Maven im Offline-Modus befindet.

Manchmal scheine ich versehentlich den Offline-Modus in IntelliJ IDEA zu aktivieren. Um es zu deaktivieren, schalten Sie das Toggle Offline Mode in der Maven-Symbolleiste umschalten

enter image description here

oder deaktivieren Sie das Kontrollkästchen Offline arbeiten in den Einstellungen unter Build, Execution, Deployment > Build Tools > Maven.

enter image description here

0
Marv