2013-03-20 18 views
11

ho incontrato il basso "modello" per Maven relazioni padre-figlio: Relation ship examplehttp://yuml.me/3f8dd366Maven relazione padre-figlio

In questo esempio abbiamo un modulo con 2 moduli secondari. Il modulo ha un gen padre "Parent per la costruzione del modulo" che conosce i due sottomoduli in quanto figli.

I sottomoduli come mai non sanno che questo genitore li conosce e pensano che il loro genitore sia quello denominato "Genitore per la gestione delle dipendenze". Quale è dotato di configurazioni più comuni, come la gestione delle dipendenze, configurazione del plugin, proprietà comuni ecc

La mia domanda:
Si tratta di un "buon" modello? Il significato ha vantaggi/svantaggi come il patter apparentemente più intuitivo del bambino < -> parent parent:

+0

dove hai trovato questo modello? Sono curioso di discutere questo approccio nella mia squadra. In realtà, penso che il genitore dell'edilizia sia piuttosto strano, penso che ogni modulo dovrebbe sapere come costruire se stesso e la costruzione del progetto dovrebbe essere la composizione dell'edificio di ogni singolo modulo, ma parlare con persone più esperte e leggere la fonte di questo approccio potrebbe farmi cambiare idea! – ThanksForAllTheFish

+0

Quelle frecce sembrano davvero confuse (le direzioni), e non penso che tu stia usando "genitore" in modo coerente. In realtà so che Maven non supporta l'ereditarietà multipla. Per favore chiarisci cosa intendi per "genitore". – djechlin

+0

@mardavi lo abbiamo in molti progetti presso la nostra azienda – RonK

risposta

9

una cosa interessante da guardare è il pom aggregatore.

È un pom che raggruppa il progetto per modulo, senza avere una relazione "genitore-figlio". Il pom aggregatore non ha la gestione delle dipendenze. Gestisce solo la build.

Avere sia pom (gen) che pom aggregatore è una caratteristica piuttosto potente di Maven.

Potete trovare ulteriori informazioni here.

This maven page ha anche informazioni preziose su come impostare pom per progetti complessi.

+0

Nel nostro team abbiamo creato i nostri poms in quel modo. Disaccoppiando il POM padre e il POM dell'aggregatore si evita ad esempio di dover aggiornare il pom padre di ogni modulo ogni volta che si aggiunge un nuovo modulo nel ciclo di vita della build. Nel nostro caso l'aggregatore POM è qui solo per configurare facilmente la build (in Jenkins) configurando il progetto multi-modulo e non ogni sottomodulo. – YMomb

+0

Grazie per il chiarimento, dopo aver letto queste pagine mi sono reso conto che la mia terminologia era errata – RonK

+0

Nessun problema. Penso che la confusione tra pom pom e aggregator pom sia abbastanza comune. Alcune persone tendono ad usare un pom genitore quando dovrebbe essere usato un aggregatore. – phoenix7360

0

Questo è in realtà un bene per avere una configurazione aziendale che non si preoccupa dei suoi figli e contiene cose come proprietà, dependecyGestione , depositi, ecc pluginManagement che tutti loro erediteranno

Forse questo può aiutare: Company wide parent pom

5

Hum ... Penso di non essere d'accordo con i termini della tua foto. Ecco come vedo questo:

enter image description here

questo modo di organizzare moduli possono essere fonte di confusione per molti sviluppatori, ma è un modo legale di fare le cose.

In ogni caso, non consiglio questo approccio perché è confuso. Ma a volte, la loro non è un'alternativa.

Quando si utilizza questa configurazione?

uno (o più) del modulo sub già di un genitore (cioè è stato sviluppato in un altro progetto, ma è necessario ricostruire esso).Si noti che la voce <module> nel progetto multi-modulo è un percorso relativo in modo da poter avere qualcosa di simile:

<modules> 
    <module>../../somedir/othermodule</module> 
    ... 
</modules> 

Quando è possibile, vi consiglio di utilizzare il multi-modulo anche come il genitore perché:

  • meno confusione
  • pulite e leggibili <modules> e <parent> sezioni (non c'è bisogno di utilizzare i percorsi relativi brutti per specificare il genitore o sottomoduli)
  • è possibile organizzare i moduli in una struttura gerarchica pulito sotto SCM (in modo che Maven-release-plugin sarà felice) (so che Eclipse non piace progetti gerarchici, ma questo è un altro problema)
+0

Grazie, la mia terminologia era davvero sbagliata. Puoi per favore approfondire quando useresti questo tipo di configurazione? Inoltre, si consiglia di impostare il progetto multi-modulo come genitore dei moduli? – RonK

Problemi correlati