Due progetti distinti con un progetto dipendente condiviso a Maven
-
18-09-2020 - |
Domanda
Ho due progetti, "Appa" e "App", che dipende ciascuno da un terzo progetto, "comune".Sono in procinto di spostarli da ANT a Maven, ma sto avendo qualche difficoltà a capire il modo migliore per farlo a Maven.La mia struttura della tua cartella è simile a questa:
root
+ common
+ appA
+ appB
.
Sono stato in grado di aggiungere un genitore Pom.xml alla radice e avere comuni, APPA e APPB come moduli di questo progetto genitore per ottenere Appa e App per costruire, ma questo non è quello che voglio, un Pom radice.xml non è appropriato da quando APPA e APPB sono progetti completamente non correlati.
Vorrei che APPA e APPB siano progetti separati Maven che dipendono da entrambi dal terzo progetto comune e lo costruirà se necessario, in modo che io possa entrare nella cartella Appa o APPB e digitare "Pacchetto MVN" per costruireAPPA + Comune o APPB + comune, rispettivamente.È così che ho impostato in formica ma potrebbe non esserci un parallelo appropriato a Maven.Qualsiasi aiuto o nudge nella giusta direzione è molto apprezzato:)
Soluzione
.(...) Ma questo non è quello che voglio, una root pom.xml non è appropriata da quando APPA e APPB sono progetti completamente non correlati.
Allora non farlo, non utilizzare l'aggregazione se non si desidera e dichiarare semplicemente common
come dipendenza dal POM di appA
e nel POM di appB
.Qualcosa del genere:
<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>
.
Le dipendenze vengono risolte attraverso il repository locale in modo da poter generarecodicitagcode il progetto mvn install
prima (e dopo qualsiasi modifica per renderli "visibili").
Durante lo sviluppo, una pratica comune è di importare progetti dipendenti nel proprio IDE e configurarli a dipendere dal progetto all'interno lo spazio di lavoro (VS Binary Depenencies).Ciò consente di risparmiare il passaggio common
per apportare modifiche visibili.La maggior parte degli IDES supporta questo approccio.