2013-04-24 7 views
7

Sto usando Intellij Idea 12 e ho un progetto multi-modulo maven.Intellij progetto multi-modulo maven, l'aggiornamento in uno dei sottomoduli non è propogato per la guerra

Per rendere più semplice Supponiamo che ho:

  • Modulo A - compilato alle JAR
  • Modulo B - a seconda del modulo A e anche compilato alle JAR
  • Modulo C - a seconda del modulo B, ma compilato per WAR

so Intellij ha il proprio meccanismo di generazione per i progetti Maven così quando ho costruire una guerra per la prima volta e distribuire a Tomcat in generale tutti funziona come dovrebbe. Il problema inizia quando è necessario apportare modifiche in uno dei sottomoduli, ad esempio Modulo A e ricostruire la Guerra (ricostruzione Modulo C)

Intellij come sembra utilizza il vecchio Modulo Un vaso che era stato precedentemente costruito e ignora qualsiasi modifiche apportate al modulo A durante la creazione/costruzione del modulo C.

L'unico modo che ho trovato per risolvere questo è eseguire un build Maven sui moduli A e B e creare inizialmente WAR con Maven e distribuirlo come sorgente esterna.

Il problema è che ho 10 WAR che voglio distribuire e più di 20 sottomoduli che sono stati compilati in barattoli. Non ha senso ricostruire tutte le guerre quando voglio vedere solo le modifiche che ho apportato in uno dei sottomoduli che riguardano un WAR. E sicuramente non ha senso costruirli esternamente con la riga di comando mentre paghiamo per la licenza Intellij Ultimate (quindi posso lavorare con i server delle applicazioni)

Ora confrontando questo comportamento con altri IDE 1. Netbeans funziona naturalmente con progetti Maven via Maven e tutte le build/implementazioni e tali operazioni vengono eseguite con Maven e non con un meccanismo interno. 2. Eclipse fa lo stesso con il suo meccanismo interno ma tutti i JAR vengono aggiornati quando vengono ricostruiti i progetti WAR. (O qualche altra magia che funziona)

C'è un modo di lavorare in modo diverso con IDEA o non c'è?

+0

Per favore, postalo su Intellij Idea JIRA tracker. – MariuszS

+0

"Crea progetto automaticamente" è abilitato nell'IDEA? – MariuszS

+0

Pubblicato su Intellij Youtrack - http://youtrack.jetbrains.com/issue/IDEA-106162 –

risposta

1

Alla fine ho trovato una soluzione ibrida per questo: Cose da fare prima Tomcat è gestito:

  1. Pulire tutti
  2. Genera pacchetto e registrarsi (in archivio) tutti i progetti che dovrebbero diventare JAR
  3. Compile solo (non costruire) WAR proietta
  4. manufatti Corporatura guerra con IntelliJ (Ciò è necessario per la disponibilità hot swap)

Ecco come avvio Tomcat.

Informazioni dettagliate:

  1. creare 3 Maven configurazioni run

    1.1 Pulire tutti i progetti Maven Clean for all Projects 1.2 Corporatura tutti i progetti con gli artefatti JAR. Devi includere manualmente tutti i tuoi progetti con l'opzione di prova "-pl". Opzionalmente è possibile eseguire "Maven pulito" prima del lancio di questa configurazione (vedi screenshot) Build Jars 1.3 Compile tutti i progetti con gli artefatti di guerra - No imballaggio con MavenCompile WARs

  2. Crea configurazione di Tomcat per costruire artefatti di guerra e includere altre configurazioni per eseguire prima del lancio enter image description here

Ora, quando Tomcat viene eseguito, è possibile sostituibilità delle modifiche al codice (se JVM permette) o semplicemente riavviare il server per includere tutto il codice nuovo/modifiche. Il ritiro di questo è un tempo di avvio leggermente più lungo di Tomcat. Questo è qualcosa con cui siamo disposti a convivere ..... Per ora

0

Penso che la distribuzione di codice caldo funzioni solo con artefatti esplosi. In IDEA 11 rinominare la directory esplosa, perché gli artefatti maven si trovano nella stessa posizione e il nome è lo stesso.

+0

La distribuzione a caldo è ancora un sogno per me :) Ho problemi di "aggiornamento" anche quando voglio ridistribuire la mia guerra a tomcat. –

+0

Cosa stai distribuendo? Artefatti esplosi o esterni? –

+0

Guerre generate da Idea Intellij, questo è quello che voglio distribuire –

Problemi correlati