Domanda

Io sono davvero stanco di lottare con Maven 2 per tutto il tempo.Costruire strumenti non dovrebbe essere nel modo.Di recente sono stato a guardare Buildr e Gradle.Maven 3 sembra risolvere alcune delle lotte.Così, che cosa dovrei fare per ora?Buildr?Gradle?O aspettare un anno per Maven 3?

È stato utile?

Soluzione

Nessun sistema di compilazione è una bacchetta magica. Trovo Maven risolve più problemi di quanti ne provoca per me, ma io sono abbastanza comodo plugin di scrittura per eludere i suoi difetti, mi occupo anche di centinaia di progetti, in modo da l'eredità di Maven e l'elaborazione di dipendenza è molto utile per me.

Sfoglia così un po 'e vedrete Buildr e Gradle entrambi hanno problemi di troppo (lo stesso per Ant e Ivy), generalmente stai negoziazione una serie di problemi per un altro e il suo un caso di trovare il meno doloroso.

C'è qualcosa in particolare che ti dà fastidio su Maven o è un prurito generale? Se si tratta di un problema particolare vale la pena di guardare la Maven 3 questioni su Jira , se il problema non si rivolge, è possibile alzare di esso, altrimenti non ci può essere poco senso voi in attesa

Altri suggerimenti

Non mi aspettavo troppo da Maven 3. Le persone dietro il pedigree Maven di costruire strumenti hanno sempre sostenuto l'ipotesi che progetto si basa sono omogenei, cioè: tutto costruire problemi si riducono fondamentalmente verso il basso per lo stesso problema. Questa visione del mondo può essere tenuto abbastanza costantemente di fronte a punti di vista opposti, ma ha un costo. L'assenza di logica script in Maven ( "quando si vuole lo script sai che stai facendo qualcosa di sbagliato"), il plugin API ingombrante ( "nessun utente ordinario Maven dovrebbe desiderare di scrivere un plugin") e il repository centrale ( "noi tutti hanno le stesse dipendenze ") sono tutte testimonianze di questa ipotesi generale.

Nel mondo reale costruire problemi sono eterogenei, perché le persone a costruire il software per una vasta gamma di motivi. Tutti 'sviluppare' come se tutti i 'fori' una volta ogni tanto per risolvere i problemi unici. Indipendentemente dal vostro livello di astrazione troverete sempre somiglianze quando si confrontano i problemi di compilazione arbitrari. E 'il reveration di queste somiglianze e la condanna di differenze che è la rovina per la progettazione di Maven e il motivo per cui attira così tanto antiproiettile. In sostanza, Maven è autoritario e utopico nella sua prospettiva.

PS:. Maven ha buone caratteristiche, come convenzione-over-configurazione e l'idea di utilizzare repository (attuazione Maven di questa idea è fastidioso)

Usiamo Maven qui, ma trovo che una volta che si ottiene fuori di un semplice progetto, il pom.xml inizia a diventare sempre più complesso.Si inizia a spendere un sacco di tempo a lavorare come cavolo per configurare il vostro pom per fare quello che vuoi, e come risolvere i vari problemi.

La cosa che veramente mi ha fatto è stato l'orecchio stiamo costruendo.Ci sono più guerre in che file ear, e Maven normalmente bastoni biblioteche di tutte le guerre.Tuttavia, per ridurre la dimensione delle guerre, e per mantenere i vasi tutti uguali, abbiamo voluto mettere i vasetti condivisa tra le due guerre nell'orecchio del lib.

Purtroppo, Maven non gestisce molto bene.Abbiamo bisogno di configurare manualmente questo per ciascuna delle guerre' poms, e quindi aggiungere tutte queste dipendenze nell'orecchio del pom.

In un altro progetto che abbiamo basate su HTML file di aiuto.Le persone che scrivono aiutare a scrivere in Microsoft Word, quindi utilizzare un programma per tradurre in HTML.Un singolo carattere può cambiare riverbera in tutto centinaia di file.

Per ovviare a questo problema, il nostro sistema di guida è memorizzato nel nostro repository di origine come un unico file compresso.Quando il nostro team di documentazione crea un nuovo set di file di aiuto, che con cerniera e sostituire ciò che è nel repository.

Così, parte della mia build è decomprimere il file e inserirlo nella guerra.Facile da fare in Formica, non può farlo in Maven, a meno che non si utilizza il Antrun plugin che permette di scrivere Ant codice per gestire i problemi che Maven non può gestire senza un pieno soffiato plugin.

Posso vedere quello che Maven sta facendo, ma la teoria ha davanti della realtà.Quello che ho trovato è che l'Edera e la Formica può fare la maggior parte del controllo delle dipendenze che Maven non senza tutti i problemi di scrittura e di mantenere il poms.

Se non stai già utilizzando Maven, provare Ant con Ivy primo.Poi, quando, Maven 3 viene fuori, provare che.Mi ricordo il passaggio da Maven 1 a Maven 2.Erano del tutto incompatibile con ogni altro e qualsiasi cosa hai imparato utilizzando Maven, 1 era obsoleto.Sarebbe sciocco per imparare e ripetere i vostri progetti in Maven 2 a trovarvi improvvisamente rifare tutto per Maven 3.

Maven 3.x è già integrato in IDE (almeno su NetBeans, controllare questo link per ulteriori infomration). Si può giocare oggi con Maven 3.x semplicemente la costruzione di un progetto di Maven con NetBeans.

Un'altra bella notizia è che Maven ha più sostegno 'impresa', con l'integrazione di EJB / WS in progetti di IDE (di nuovo, almeno su NetBeans).

Quindi mi sento di attenersi a Maven 2.x per la produzione costruisce e giocare con Maven 3.x per lo sviluppo.

Maven 2 e 3 hanno entrambi lavorato perfettamente per me su una varietà di progetti. Attualmente sto usando Maven 3 alfa 7, che funziona molto bene, soprattutto in concomitanza con il plugin di Eclipse Maven.

Maven si integra perfettamente con Ant - in entrambe le direzioni. Nel mio progetto attuale, invochiamo Maven da più volte Ant per eseguire test di integrazione complessa. Allo stesso modo, usiamo Formica via Plugin AntRun di Maven, e abbiamo anche scritto il nostro plugin Maven. Questo, tra l'altro, è una questione di minuti e si riduce a scrivere una Pojo annotato.

Maven ottiene un sacco di critiche, perché molti sviluppatori non amano le regole o convenzioni. Molto semplicemente, nessuno ti obbliga a usare Maven. Se si desidera la massima libertà - con ogni mezzo - ri-scrivere il proprio processo di generazione per ogni progetto che si uniscono. Tuttavia, se volete creare un software piuttosto che ri-inventare la ruota con un processo di compilazione su misura su ogni progetto, andare per Maven.

Mantenere il vostro codice di ben tenuto e suddiviso in moduli ben definiti e il porting tra i sistemi di compilazione diventa un problema minore.

Per quanto riguarda la società, Maven-2 è una buona scelta per la metà 2/3 ° di progetti. Per il molto semplice, formica è ancora ok. Per il molto complesso, un ibrido di Maven-2 e altri strumenti (come antrun) diventa inevitabile.

Non certo perché si hanno problemi con Maven-2.

Si differenzia dalla formica e Buildr in quanto è uno strumento per descrivere il processo di compilazione, non scripting esso. Complesso costruisce, quelli con più parti dinamiche e le dipendenze nidificate e / o transitori sono difficili da costruire, perché sono difficili da descrivere.

Dare Lattice https://github.com/hackingspirit/Lattice una prova. Io sono l'autore. Ecco lo scoop:

In Lattice costruire i file sono scritti in XML non, ma nel linguaggio Python. Presta zioni taggi sono molto meglio leggibilità e potente scripting imperativo costruire supportata da Python. Per i progetti multi-modulo. Lattice utilizza ordinamento topologico per decidere l'ordine corretto di costruire ogni modulo. E 'anche previsto che Lattice analizzerà la dipendenza del modulo per determinare come la compilazione del modulo può essere parallelizzata. il codice sorgente del reticolo è estremamente magra, attualmente si compone di circa 500 linee di codice sorgente Python.

Credo che la gente si lamentano Maven dovrebbero spendere un po 'di tempo indagando plugin disponibili. In risposta ai commenti lamenta che Maven è rigido e lo rende difficile da usare di generazione personalizzata logica / fornire un controllo a grana fine il processo di compilazione - consiglierei esaminando Ant plug-in per Maven (ci sono in realtà diverse, ma qui è una : http://maven.apache.org/plugins/maven-antrun-plugin). Ho avuto un grande successo la personalizzazione Maven costruisce con esso nel corso degli anni. In sostanza, permette di eseguire qualsiasi comando della formica come parte della costruzione Maven, e si può fare praticamente qualsiasi cosa con Ant;)

Ant con Ivy fa lo stesso Maven gestione delle dipendenze fa (in realtà, utilizza tutta l'infrastruttura di gestione delle dipendenze di Maven tra cui gli stessi repository URL), ma senza tutta la confusione di configurazione POM.

Ant con Ivy potrebbe essere un modo di gestire i problemi di dipendenza per le persone che in realtà non vogliono usare Maven. Risolve il 90% delle cose che Maven è stato supponiamo di risolvere.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top