Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    16

    [eclipse-jetty] creare war con dipendenze

    Salve a tutti,
    ho vari progetti in eclipse dipendenti fra loro tipo BackOffice, ResourceManager, MyFramework ecc e un progetto principale Portal che è di fatto la servlet che genera le pagine.
    In locale uso Jetty e ogni progetto importa i progetti che gli servono, avvio il progetto Portal con il plugIn RunJettyRun e tutto funziona perfettamente... o quasi

    Ora devo fare il deploy di Portal su un Tomcat online e quindi mi serve un war.

    Come faccio a creare il war di Portal che includa tutte le dipendenze degli altri progetti?

    Esiste una maniera semplice che non preveda l'utilizzo di maven, ant o affini?

    Se jetty di suo quando carica il progetto carica anche tutte le dipendenze... non posso avere un war di tutto quanto direttamente da Jetty?

  2. #2
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    ecco perché sconsiglio di usare plugin integrati con eclipse e di allontanarsi dalla configurazione di produzione.

    1. se usi plugin integrati, hai tutta una serie di impostazioni che eclipse fissa per te che non conosci. Ad occhio (senza vedere niente) in questo caso il problema principale è che tu hai creato delle dipendenze, ma queste sono valide nel build path del progetto. Quando jetty va a prendere i vari pezzi, trova nel build path i progetti e per magia (?!?) include tutto.
    Questa operazione deve essere fatta da te, o manualmente o con ant o con maven, ma deve essere fatta da te
    2. tomcat in generale vuole un file .war che abbia al suo interno tutto quello che gli serve. Quindi devi provvedere ad includere tutte le librerie che usi (ricordandoti che alcune possono andare in conflitto con quello che hai sul server) in modo da avere tutto pronto e funzionante quando fai il deploy su tomcat (deploy che equivale alla scompattazione del war).
    Lavorare in condizioni simili fin da subito, ti avrebbe acceso un campanello d'allarme.

    In definitiva: ti consiglio di automatizzare la creazione del tuo war usando ant o maven e di fare l'operazione senza usare l'IDE, il che significa che ti rendi indipendente da quest'ultimo e ti metti in condizioni in cui l'avere i sorgenti ti basta a compilare.
    Inoltre, capisci subito quali sono le dipendenze di ogni pezzo (e quindi come legare e dare il giusto ordine di compilazione)
    RTFM Read That F*** Manual!!!

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    16
    Ovviamente cio che dici non fa una piega
    E in linea di principio concordo anche sul fatto che avere il controllo di quali siano le dipendenze dei vari progetti non è certo un male.
    Tuttavia un dubbio mi rimane... ho come la sensazione che ogni volta che devo accendere la macchina mi tocca aprire il cofano e ricollegare tutti i cavi elettrici

    Se io attraverso l'ide di eclipse configuro nel buildPath le dipendenze fra i vari progetti e creo dei progetti "Lib" in cui importo i vari jar's (es. un progetto LibHibernate, importo i jars di Hibernate e poi includo il progetto nel buildPath del progetto a cui serve Hibernate)... alla fine... configurare un ant o un maven (escluso la gestione delle versioni per Maven)... non faccio 2 volte lo stesso lavoro?
    A me pare che se Jetty è in grado di recuperarsi le dipendenze attraverso il buildPath abbia gia fatto lui il lavoro no?
    In fondo il war che mi occorre non è che uno zip di tutto quello che Jetty carica ogni volta che lancia il mio progetto...

    Forse mi sfugge qualcosa... anzi... probabile visto che tutti fanno come fai tu

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Tuttavia un dubbio mi rimane... ho come la sensazione che ogni volta che devo accendere la macchina mi tocca aprire il cofano e ricollegare tutti i cavi elettrici
    Ogni volta che costruisci una nuova macchina, metti insieme tutti i pezzi del motore, magari li hai costruiti nella tua catena di montaggio, testati, ma di certo quando li metti insieme parti da zero (è ovvio), mica fai conto che sulla tua catena tutto funzionava e fuori non devi aggiungere altro!!!

    Si tutto funziona finché esegui da eclipse, perché in pratica stai dicendo all'IDE dove trovare tutte le librerie di cui ha bisogno. L'IDE al posto tuo farà i suoi calcoli e ti renderà tutto disponibile. E ti fa comodo, perché hai una catena di montaggio in cui al momento non devi occuparti dei dettagli.
    Ma quando hai finito, hai il pezzo del motore, non hai la macchina. La macchina devi costruirla. O assembli a manina, o ti prendi un montatore a cui dici cosa fare e lui lo fa per te. Ecco che entrano in gioco maven e/o ant.

    Il war non è solo quello, hai ragione tu che è uno zip, ma è un archivio formato con un certo criterio. Hai da specificare ad esempio il manifest in modo da leggere correttamente il progetto. Hai da specificare il classpath del progetto.
    Non so se mi hai capita
    RTFM Read That F*** Manual!!!

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2010
    Messaggi
    16
    ... fantastico... della serie... come suicidarsi usando un motore come metafora

    quello che tu dici mi è perfettamente chiaro ma rimane il fatto che sia jetty che lo stesso eclipse quando lanci un debug sul tomcat locale... (e cosi pure immagino se in locale usi un qualsiasi altro server) fanno un deploy... solo che non creano nessun war ovviamente ma eseguono direttamente cio che leggono dal buildPath... è corretto?

    Se si allora potrebbero anche a questo punto generare, opzionalmente, un war perfettamente allineato con le info del buildPath...

    Invece cosi, oltre all'onere di doversi studiare ant o maven (che non sono affatto banali se i progetti sono complessi) si ha pure l'onere di dover tenere allineati i vari progetti e le relative dipendenze.

    Voglio dire... era tanto impossibile fare in modo che Export>war file compliasse pure le dipendenze?

    Magari esise qualche plugIn che fa qualcosa di simile?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Che sia chiaro, jetty, tomcat, glassfish funzionano allo stesso modo da fuori o da dentro eclipse. Significa che le STESSE ed identiche operazioni le devi fare fuori e le devi fare dentro.
    Se non ricordo male (e a dire il vero non ci ho perso mai tanto tempo) su eclipse crei un war temporaneo esploso poi nella dir di lavoro del plugin (vai a vedere che fa il motore sotto al posto tuo) e/o copi la directory di lavoro nella web dir, esattamente come faresti se tu facessi il deploy manuale. Eclipse si incarica di farlo per te.
    Nel fare questo legge le impostazioni che tu hai dato come build path.
    Se tu devi rendere disponibile tutto questo all'esterno, devi costruire il tutto e un plugin che fa in automatico le cose per te non sai mai a pieno come lavora. Impara a comandare sulle cose che sviluppi e deploy, non a farti comandare dalle impostazioni dell'IDE.

    Inoltre tu hai testato tutto usando le applicazioni di defautl dell'IDE, situazione errata.

    Seconda cosa: non è male che impari a maneggiare risorse come ant o maven. In realtà
    sono molto più semplici e potenti di quanto tu possa pensare.
    Ti assicuro che per compilare il tuo programma e creare un war il build.xml che devi creare (parlando di ant) non è nè tanto grosso nè tanto complicato. Tieni conto che già ci sono i task javac e war, poi hai le opzioni del manifest che puoi specificare in poco tempo.

    Vuoi fare tutto con eclipse, prova a vedere le opzioni di esportazione war, ma non garantisco sui default usati. Quei tool mi hanno sempre fatto perdere più tempo di quanto ne abbia guadagnato e ho smesso di usarli quasi subito, se non per situazioni in cui mi occorre debuggare. Alla fine ho sempre perso meno tempo a scrivermi da sola le cose che mi servono che non a spiegare alle varie finistrelle dell'IDE e ai vari file di configurazione interni suoi cosa voglio per poi rifare tutto non appena c'è un aggiornamento!!

    ps: tutti i grossi progetti che ho visto sono gestiti con ant e/o maven, compilabili e disponibili senza l'uso di nessun IDE, un motivo ci sarà se tutti lavorano e producono roba in grado di funzionare senza IDE!!!
    RTFM Read That F*** Manual!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.