Dois projectos distintos com um dependente projeto no maven
-
18-09-2020 - |
Pergunta
Eu tenho dois projetos, "appA" e "appB", que cada dependem de um terceiro projeto, "comum".Eu estou no processo de movimentação de formiga para o maven, mas estou tendo alguma dificuldade em descobrir a melhor maneira de fazê-lo no maven.A minha estrutura de pastas parecido com este:
root
+ common
+ appA
+ appB
Eu tenho sido capaz de adicionar um pai pom.xml para a raiz e comuns, appA e appB como módulos deste projecto principal para obter appA e appB para construir, mas não é isso que eu quero, uma raiz pom.xml não é adequado, uma vez que o appA e appB são completamente alheios projetos.
Eu gostaria de appA e appB ser separado maven projetos de que tanto depende o terceiro projeto comum, e irá criar, se necessário, para que eu possa ir para a appA ou appB pasta e digite "mvn pacote" para construir a appA + comum ou appB + comum, respectivamente.Isto é como eu tenho em Formiga, mas pode não ser apropriado paralelo no maven.Qualquer ajuda ou conselhos que estão na direção certa, é muito apreciado :)
Solução
(...) mas não é isso que eu quero, uma raiz pom.xml não é adequado, uma vez que o appA e appB são completamente alheios projetos.
Então não fazê-lo, não use de agregação, se não quiser e só declarar common
como uma dependência no POM de appA
e no POM de appB
.Algo como isto:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>foo</groupId>
<artifactId>appA</artifactId>
<packaging>jar</packaging>
<version>X-SNAPSHOT</version>
...
<dependencies>
<dependency>
<groupId>bar</groupId><!-- at your discretion -->
<artifactId>common</artifactId>
<version>Y.Z-SNAPSHOT</version>
</dependency>
...
</dependencies>
...
</project>
As dependências são resolvidas através de um repositório local, então você vai ter que mvn install
o common
projeto pela primeira vez (e depois de qualquer alteração para torná-los "visível").
Durante o desenvolvimento, uma prática comum é dependente de importação de projetos na sua IDE e configurá-los para que dependem de projeto dentro o espaço de trabalho (vs binário dependências).Isso salva o install
passo para fazer alterações visíveis.A maioria das IDEs oferece suporte a essa abordagem.