Estou tentando configurar um projeto Maven com vários módulos e as dependências entre os módulos aparentemente não estão sendo configuradas corretamente.
Eu tenho:
<modules>
<module>commons</module>
<module>storage</module>
</modules>
no POM pai (que tem um pom do tipo de embalagem) e, em seguida, nos subdiretórios commons/
e storage/
que definem os poms JAR com o mesmo nome.
O armazenamento depende do Commons.
No diretório principal (mestre), executo mvn dependency:tree
e vejo:
[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
Por que a dependência de "bens comuns" falha, embora o reator obviamente a tenha visto porque processa com sucesso sua árvore de dependência? Definitivamente, não deveria ir para a rede para encontrá-lo, pois está bem ali ...
O pom para armazenamento:
<?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>
Obrigado por qualquer sugestão!
(Editar)
Para esclarecer, o que estou procurando aqui é o seguinte: Não quero ter que instalar o módulo X para construir o módulo Y que depende de X, visto que ambos são módulos referenciados no mesmo POM pai. Isso faz sentido intuitivo para mim que, se eu tiver duas coisas na mesma árvore de origem, não devo ter que instalar produtos intermediários para continuar a compilação. Espero que meu pensamento faça algum sentido aqui ...