Sto cercando di impostare un progetto Maven multi-modulo e le dipendenze tra moduli apparentemente non vengono impostate correttamente.
Io ho:
<modules>
<module>commons</module>
<module>storage</module>
</modules>
nel POM genitore (che ha un pom di tipo packaging) e poi sottodirectory commons/
e storage/
che definiscono poms JAR con lo stesso nome.
Lo spazio di archiviazione dipende da Commons.
Nella directory principale (master), corro mvn dependency:tree
e vedo:
[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
Perché la dipendenza dai "comuni" fallisce, anche se il reattore lo ha ovviamente visto perché elabora con successo il suo albero delle dipendenze? Non dovrebbe assolutamente andare in rete per trovarlo perché è proprio lì ...
Il pom per la conservazione:
<?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>
Grazie per eventuali suggerimenti!
(Modificare)
Per chiarire, quello che sto cercando qui è questo: non voglio dover installare il modulo X per costruire il modulo Y che dipende da X, dato che entrambi sono moduli referenziati dallo stesso POM genitore. Questo ha un senso intuitivo per me che se ho due cose nello stesso albero dei sorgenti, non dovrei dover installare prodotti intermedi per continuare la compilazione. Spero che il mio pensiero abbia un senso qui ...