Guida introduttiva agli strumenti di compilazione [chiusa]

1

Sono nel mio ultimo anno su CS, lavorando al mio primo progetto significativo, quindi ho pensato che fosse ora di imparare e utilizzare gli strumenti di costruzione.

Ho letto di Maven principalmente e ho sentito parlare di Ant. Mi piacerebbe conoscere la tua opinione su cui dovrei imparare a utilizzare per un progetto che verrà sviluppato solo da una persona, tenendo presente la curva di apprendimento e la funzionalità che sarà utile in questo caso.

    
posta latusaki 09.12.2011 - 02:23
fonte

3 risposte

9

Entrambi hanno il loro principale punto di forza e saranno entrambi sufficienti a soddisfare i tuoi bisogni. Ecco il mio piccolo confronto con entrambi, spero che ti permetta di scegliere.

Maven

Il più avanzato dei due e certamente uno degli strumenti di costruzione più avanzati che ho usato. Ma chiamarlo uno strumento costruito non lo descrive veramente come una delle funzionalità più innovative di Maven riguarda la gestione delle dipendenze. In breve, gestirà tutto il lavoro con le librerie esterne, le scaricherà per te, convaliderà che le loro dipendenze siano anche risolte e scaricate, in breve gestirà molti dettagli unti della costruzione di un sistema complesso.

Maven si basa anche su convenzioni su come si impaginano le cartelle del progetto per codice sorgente, risorse, test, ecc. Segui queste conversioni e funziona semplicemente (tm). Cerca di essere più intelligente di loro e ti darà pena oltre la comprensione. Ho esagerato un po 'qui, V3 è diventato molto più amichevole dei precedenti ma ti lascerà a volte grattarti la testa.

Ancora queste convenzioni rendono possibile creare un progetto molto rapidamente e con poche dichiarazioni nel tuo pom.xml (il punto di ingresso della build) sarai in grado di costruire il tuo progetto, eseguire tutti i tuoi test e creare un file jar semplicemente emettendo una singola istruzione da riga di comando (pacchetto mvn clean). Nessuno script, nessuna programmazione segue la convenzione.

Un altro effetto collaterale di queste convenzioni è che tutti i progetti di Maven sono fondamentalmente creati allo stesso modo ottenere un nuovo ragazzo per unirsi o scavare più a fondo in una dipendenza che sta agendo in su è un gioco da ragazzi.

La magia è probabilmente l'aspetto peggiore di lavorare con Maven. Se sei un maniaco del controllo, Maven ti sbilancia spesso. Ma attenersi ad essa e comprendere la magia ti ricompenserà pienamente con una produttività complessivamente molto più elevata.

Ant

Ant è più antica di Maven e non la gestisce tanto. Ant avrà pre-confezionato un sacco di attività che è necessario assemblare manualmente in uno script di build. Lo script è un mix tra dichiarativo xml e scripting. lo script Ant è in realtà completato da Turing, quindi puoi fare molto con esso, ma XML non è il mezzo migliore per scrivere una logica di scripting complessa.

Ant ti lascerà in controllo e ti fornirà già molte cose in scatola. Tuttavia questo controllo ha un costo e dovrai lavorare a fondo e inquadrare il tuo ambiente di costruzione.

Anche Ant non gestisce, almeno non in modo naturale, le dipendenze. ad esso è solo un'altra cartella classpath che è necessario popolare manualmente. ci sono modi per gestire questo problema attraverso altri sistemi come Ivy .

Ant con Ivy fornirà quasi tutta la potenza di Maven, ma ti lascerà molto più controllo sul tuo processo.

Detto questo, una volta realizzato il framing della build, Ant è abbastanza facile da usare e se hai strutturato correttamente i file build.xml è piuttosto semplice espandersi e ridimensionarlo. inquadra la tua costruzione in modo sbagliato e ti ritrovi a dover riscrivere tutto da zero solo per supportare quel secondo progetto.

Il meglio dei due mondi

Vai con Maven in quanto richiederà quasi la stessa quantità di lavoro da configurare come strumento, ma ti farà andare molto più veloce.

Leggi il libro di Maven che ti offre tutto ciò che ti serve per iniziare. Se a un certo punto hai bisogno di maggiore controllo puoi consultare il plug-in Maven Antrun . Ti permetterà di eseguire script antispam arbitrari pur avendo accesso a tutti gli ambienti e le convenzioni di Maven. Detto questo, molto probabilmente non ne avrai bisogno. Personalmente ho usato Maven per 6 anni e solo una volta ho dovuto usarlo.

Ci sono altri strumenti di compilazione per Java ma questi due (insieme a Ivy per completare Ant) ma non li ho provati quindi non posso commentarli qui.

    
risposta data 09.12.2011 - 03:38
fonte
1

Maven e Ant sono stati strumenti di build / project management molto popolari, ma non saranno disponibili per sempre. Se vuoi provare qualcosa che è al limite in questi giorni, dai un'occhiata a Gradle .

Gradle ti offre il meglio di entrambi i mondi (Ant e Maven).

  • Gestione delle dipendenze out of the box (Ant non ha questo senza Ivy ed è un po 'complicato da configurare)
  • Un ciclo di vita del progetto riconfigurabile / estensibile. (Hai il ciclo di vita con Maven ma è difficile riconfigurarlo)
  • Niente più XML. (Quando si scrivono gli script gradle, si programma in una lingua reale (groovy))
  • Funzionalità di creazione di più progetti (è più facile avere moduli più focalizzati più piccoli e incollarli insieme)
  • Integrazione con Ant e Maven

(solo per citare alcuni ... per ulteriori informazioni, consulta il loro sito web )

Potrebbe comunque essere una buona idea imparare su Ant e Maven, solo perché la maggior parte dei posti utilizza ancora uno di questi due strumenti, quindi puoi usarlo come un generatore di esperienza.

    
risposta data 09.12.2011 - 04:24
fonte
0

Vorrei provare a Maven. Al giorno d'oggi è lo strumento di compilazione più popolare utilizzato con Java. Sembra quasi che ogni framework e libreria Java che puoi immaginare sia costruito usando questo metodo, che (almeno) due cose:

  • Andando avanti è molto probabilmente un'abilità più desiderabile di Ant.
  • La gestione delle dipendenze integrata in Maven (una funzionalità che Ant non ha) può essere utilizzata per includere facilmente tutte quelle librerie e framework di terze parti nel progetto.

Utilizza anche buone filosofie come "convention over configuration" che incoraggia strutture di progetto coerenti in tutti i progetti che lo utilizzano (quindi quando vedi un progetto Maven, sai immediatamente dove dovrebbero essere la maggior parte delle cose) e che le tue configurazioni di build sono bello, piccolo e manutenibile.

Nessuno strumento è particolarmente difficile da imparare. Learning Maven è più sull'apprendimento di concetti, mentre l'apprendimento di Ant è più sull'apprendimento di singoli comandi.

EDIT: questo è davvero un buon documento su Maven: link

    
risposta data 09.12.2011 - 02:45
fonte

Leggi altre domande sui tag