2014-12-22 47 views
10

Diciamo che ho un progetto maven che contiene alcuni moduli Maven.Progetto IntelliJ multi-modulo con Maven - Come aggiungere dipendenze da un modulo a un altro?

Il mio modulo principale dipende dagli altri moduli, quindi quando compilo il modulo principale dovrebbero essere compilati insieme.

La domanda è, come aggiungere questi moduli come dipendenze al modulo principale?

so se ho un lib personalizzato che voglio usare con Maven, diciamo un utilities project, devo compilare il barattolo del progetto, fare un mvn install:install-file su di esso per installarlo sul repository locale e quindi aggiungere allo pom.xml.

Devo farlo con tutti i miei moduli e aggiungere la dipendenza allo pom.xml sul mio modulo principale? Perché se dovrebbe essere fatto in questo modo, ci sarà molto lavoro da fare quando si cambia codice negli altri moduli.

Qual è la migliore pratica da utilizzare evitare il problema della compilazione/installazione dei moduli nel repository locale?

+0

La semplice dichiarazione come dipendenza dovrebbe funzionare. Almeno funziona con eclipse quando si verifica la risoluzione degli artefatti dell'area di lavoro. –

+0

Vuoi dire aggiungere gli altri moduli come dipendenze non di tipo Maven? In questo modo gli altri utenti del Progetto, dopo aver effettuato il check-out dal controllo della versione, devono risolvere manualmente le dipendenze tra i moduli. Se ci sono troppi moduli nel progetto e dipendenze interne tra tutti i moduli renderebbe la vita difficile. Non c'è modo di impostare le dipendenze su altri moduli tramite pom.xml, quindi può essere condiviso attraverso il controllo della versione? –

+0

No, come semplice dipendenza da parte di esperti. Vedi: http://books.sonatype.com/mvnex-book/reference/multimodule-sect-simple-web.html –

risposta

3

La domanda è, come aggiungere questi moduli come dipendenze al modulo principale?

Allo stesso modo si aggiunge qualsiasi altra dipendenza al progetto Maven. Aggiungendo ID gruppo, id artefatto e versione all'elemento <dependency>

Devo farlo con tutti i miei moduli e aggiungere la dipendenza al pom.xml sul mio modulo principale?

Se il modulo principale dipende su qualche modulo A, allora solo il pom del modulo principale dovrebbe contenere la dipendenza dichiarazione verso modulo A. Fate che per tutte le dipendenze del modulo.

Non so cosa intendi per "molto lavoro quando si modifica il codice su altri moduli". Maven non ha nulla a che fare con le modifiche al codice, ma costruisce i progetti come sembrano al momento ...

Qual è la migliore pratica da utilizzare per evitare la difficoltà di compilare/installare i moduli nel repository locale?

Qualsiasi progetto che si invoca mvn install su viene generato ed è jar copiato nel repository locale. Questo è tutto ciò che devi fare per ottenere il barattolo nel repository. Questo metterà anche tutti i barattoli dipendenti, se disponibili, nel repository locale.

Per quanto riguarda le migliori pratiche per i progetti multi-modulo:

Se il progetto principale (quella che ha i moduli all'interno) ha <modules> sezione che elenca i moduli della vostra applicazione, ed i moduli sono in sottodirectory del progetto genitore, quindi semplicemente mvn install (o qualsiasi altra cosa tu voglia fare) il progetto genitore e questo farà sì che tutti i moduli vengano costruiti in ordine definito dalle dipendenze dichiarate tra di loro. Ciò significa che se il modulo principale ha dipendenza dal modulo A, allora il modulo A sarà costruito prima del modulo principale. In questo modo è possibile creare e installare tutti i moduli con un solo comando. D'altra parte questo approccio rende più stretto l'accoppiamento tra i moduli che non è desiderato in alcuni casi, quindi dipende dal tuo caso di utilizzo se è un buon approccio o meno.

Problemi correlati