Ich versuche, ein Maven-Projekt mit mehreren Modulen einzurichten, und die Abhängigkeiten zwischen den Modulen werden anscheinend nicht richtig eingerichtet.
Ich habe:
<modules>
<module>commons</module>
<module>storage</module>
</modules>
in der übergeordneten POM (die eine Verpackung vom Typ POM hat) , und dann Unterverzeichnisse commons/
und storage/
welche definieren JAR poms mit dem gleichen Namen.
Die Speicherung hängt von Commons ab.
Im Hauptverzeichnis (Master) starte ich mvn dependency:tree
und sehe:
[INFO] Building system
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
[INFO] domain:system:pom:1.0-SNAPSHOT
[INFO] \- junit:junit:jar:3.8.1:test
[INFO] ------------------------------------------------------------------------
[INFO] Building commons
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
[INFO] [dependency:tree {execution: default-cli}]
...correct tree...
[INFO] ------------------------------------------------------------------------
[INFO] Building storage
[INFO] task-segment: [dependency:tree]
[INFO] ------------------------------------------------------------------------
Downloading: http://my.repo/artifactory/repo/domain/commons/1.0-SNAPSHOT/commons-1.0-SNAPSHOT.jar
[INFO] Unable to find resource 'domain:commons:jar:1.0-SNAPSHOT' in repository my.repo (http://my.repo/artifactory/repo)
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failed to resolve artifact.
Missing:
----------
1) domain:commons:jar:1.0-SNAPSHOT
Warum schlägt die Abhängigkeit von "Commons" fehl, obwohl der Reaktor sie offensichtlich gesehen hat, weil er seinen Abhängigkeitsbaum erfolgreich verarbeitet? Es sollte definitiv nicht ins Netz gehen, um es zu finden, da es genau dort ist ...
Der Pom zur Aufbewahrung:
<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<packaging>jar</packaging>
<parent>
<artifactId>system</artifactId>
<groupId>domain</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<groupId>domain</groupId>
<artifactId>storage</artifactId>
<name>storage</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- module dependencies -->
<dependency>
<groupId>domain</groupId>
<artifactId>commons</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- other dependencies -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Vielen Dank für alle Vorschläge!
(Bearbeiten)
Zur Verdeutlichung suche ich hier Folgendes: Ich möchte nicht Modul X installieren müssen, um Modul Y zu erstellen, das von X abhängt, da beide Module vom selben übergeordneten POM referenziert werden. Dies macht für mich intuitiv Sinn, dass ich keine Zwischenprodukte installieren muss, wenn ich zwei Dinge im selben Quellbaum habe, um den Build fortzusetzen. Hoffentlich macht mein Denken hier Sinn ...