2009-09-05 18 views

risposta

27
  • Dipendenza Gestione: Gli strumenti di compilazione seguire un modello di componente che fornisce suggerimenti su dove cercare le dipendenze. In Eclipse/Netbeans, devi dipendere da un JAR e non sai davvero se questo JAR è stato aggiornato o meno. Con questi strumenti di compilazione, essi "conoscono" gli aggiornamenti delle dipendenze (generalmente a causa di una buona integrazione con il repository di controllo del codice sorgente), ricalcolano le dipendenze transitive e assicurano che tutto sia sempre costruito con le ultime versioni.

  • Controllo accesso: Java, a parte il controllo accessi di livello di classe, non ha un'astrazione più elevata. Con questi strumenti di compilazione puoi specificare esattamente quali progetti vuoi dipendere da te e controllare la visibilità e l'accesso a un livello superiore di granularità.

  • Controllo personalizzato: la build di Eclipse/Netbeans crea sempre file JAR. Con i meccanismi di compilazione personalizzati, è possibile creare il proprio archivio personalizzato (interno aziendale) con ulteriori informazioni sui metadati, se lo si desidera.

  • Plugin: Esistono numerosi plug-in dotati di strumenti di creazione che possono eseguire varie operazioni durante la creazione. Da qualcosa di base come la generazione di Javadocs a qualcosa come più non banale esecuzione di test e ottenere la copertura del codice, l'analisi statica, generazione di report, ecc

  • Trasporti: Alcuni sistemi di compilazione gestire anche il trasporto degli archivi - da uno sviluppo sistema a un sistema di distribuzione o produzione. Quindi, puoi configurare percorsi di trasporto, orari e simili.

Date un'occhiata a alcuni server di integrazione continui come CruiseControl o Hudson. Inoltre, lo features page of Maven fornisce alcune informazioni su ciò che desideri sapere.

+0

scusa ma cos'è una dipendenza? – cesar

+4

Bene, se stai facendo un progetto personale, probabilmente una build di eclissi sarà sufficiente.Tuttavia, se si fa parte di un'organizzazione e si sta costruendo un componente che fa parte di un sistema più grande, il componente dipenderà da altri componenti del sistema, anch'essi in costante sviluppo. Queste sono le tue dipendenze. – Anirudh

+1

penso che si debba dire che anche un progetto personale richiede uno strumento di costruzione - e non è difficile usare maven/ant/softsons, o dio non voglia, nemmeno farlo! Solo affidarsi a un IDE per costruire è un segno di uno sviluppatore che non si preoccupa del modo in cui lavorano. Un buon artigiano usa buoni strumenti e costruire strumenti è uno di questi. – Chii

1

Funzioni diverse. Ad esempio, Maven può eseguire la scansione delle dipendenze e andare a scaricarle e le loro dipendenze in modo da non doverle fare. Anche per un progetto di medie dimensioni potrebbe esserci un numero molto elevato di dipendenze. Non credo che Eclipse possa farlo.

+0

Eclipse può farlo ... con il plug-in Maven. – topchef

+0

@gigory: quindi alla fine, è ancora un esperto! – Chii

1

@anonymous,

  • Perché ti ho scontato che io, un membro della tua squadra, sta usando un IDE per tutto il tempo ? Potrei voler creare il codice su un server di compilazione senza frontali, è lo stesso ?
  • Mi negheresti inoltre il diritto di utilizzando un motore di integrazione continua ?
  • Posso recuperare le dipendenze da un repository centrale, per favore? Come lo posso fare?
  • Vuoi collegarmi a un IDE specifico? Non riesco ad eseguire Eclipse facilmente sul mio vecchio laptop, ma ne acquisterò uno nuovo.

Forse dovrei disinstallare anche subversion e utilizzare patch o semplicemente cartelle zip su una condivisione sftp/ftp/Samba.

+4

uhhhhhh ... cosa? – cesar

+0

dimenticatene, per dirla semplicemente, se l'unica persona che usa il tuo codice o la tocca, sei tu, quindi fai come ti pare. –

+4

Questi sono buoni punti, ma sarei più propenso a revocare questo se non lo citassi come queste domande condiscendenti –

2

Il problema con la creazione dall'IDE, è che ci sono tonnellate di impostazioni che interessano la costruzione. Quando si utilizza uno strumento di compilazione tutte le impostazioni si condensano in una forma più o meno leggibile in un piccolo insieme di script o file di configurazione. Ciò consente nel caso ideale a chiunque di eseguire una build con pochissima configurazione manuale.

Senza lo strumento di compilazione potrebbe diventare quasi impossibile compilare anche il codice in diciamo un anno, perché si dovrà decodificare tutte le impostazioni

+0

Questo è un buon punto. Potrebbero esserci casi in cui il team che esegue la verifica e la costruzione e il confezionamento dei contenuti sarà diverso dal team di sviluppo e non avrà necessariamente un IDE installato (e di conseguenza nessuna impostazione IDE). È quindi importante avere le impostazioni di compilazione al di fuori del proprio IDE. – Anirudh

12

In cima a tutte le altre risposte. La ragione principale per cui i miei progetti sono realizzabili senza essere obbligati a utilizzare NetBeans o Eclipse è che rende molto più semplice l'installazione di build automatizzate (e continue).

Sarebbe alquanto complicato (in confronto) configurare un server che in qualche modo avvia eclissi, aggiorna la sorgente dal repository, crea tutto, invia una mail con il risultato e copia l'output in un punto in un disco dove le ultime 50 build sono memorizzate.

0

Per ampliare la risposta di Jens Schauder, molte di quelle opzioni di compilazione finiscono in una sorta di file .project. Uno dei mali di Eclipse è che memorizzano nomi di percorso assoluti in tutti i file di progetto, quindi non è possibile copiare un file di progetto da una macchina all'altra, che potrebbe avere il proprio spazio di lavoro in una directory diversa.

Il motivo più forte per me è la generazione automatica.

+0

Tosh. Eclipse memorizza solo i percorsi assoluti se impostato per farlo. Se si utilizzano contenitori del percorso di classe, variabili o riferimenti relativi all'area di lavoro, non vi sono percorsi assoluti. Non incolpare lo strumento per le tue cattive pratiche. –

0

Gli IDE funzionano solo su un livello di astrazione più elevato.

NetBeans utilizza nativamente Ant come strumento di creazione sottostante e recentemente può aprire direttamente i progetti maven in NetBeans. Quindi, il tipico progetto NetBeans può essere compilato con form e il tuo progetto di maven è già un progetto NetBeans.

Come in ogni discussione GUI vs CLI, gli IDE sembrano più semplici per i principianti, ma una volta ottenuta l'idea diventa complicato fare cose complesse.

Cambiare la configurazione con un IDE significa fare clic in un punto che è facile per le cose di base, ma per cose complesse è necessario trovare il posto giusto per fare clic. Inoltre, gli IDE sembrano nascondere le informazioni importanti. Fare clic su un pulsante per aggiungere una libreria è facile ma non si può ancora sapere dove si trova la libreria, ecc.

Al contrario, l'utilizzo di una CLI non è facile da iniziare, ma diventa rapidamente facile. Permette di fare cose complesse più facilmente.

Utilizzare Ant o Maven significa che ognuno può scegliere il proprio IDE per elaborare un codice. Dire a qualcuno di installare IDE X per compilare è molto più sovraccarico che dire "corri il comando <build> nella tua shell". E ovviamente non puoi spiegare il primo a uno strumento esterno.

Per riassumere, l'IDE utilizza uno strumento di compilazione stesso. In caso di NetBeans Ant (o Maven) viene utilizzato in modo da poter ottenere tutti i vantaggi e gli svantaggi di quelli. Eclipse usa le sue stesse cose (per quanto ne so) ma può anche integrare gli script delle formiche.

Per quanto riguarda gli strumenti di compilazione Maven è significativamente diverso da Ant. Può scaricare le dipendenze specificate fino al punto di scaricare un server Web per eseguire il progetto.

1

Gli strumenti di compilazione consentono di creare automaticamente una build, senza l'invenzione umana, che è essenziale se si dispone di una base di codice in grado di creare molte applicazioni (come facciamo noi).

Vogliamo essere certi che ciascuna e tutte le nostre applicazioni possano essere compilate correttamente dopo qualsiasi modifica al codice base. Il modo migliore per verificare è lasciare che un computer lo faccia automaticamente usando uno strumento di integrazione di Continouos. Controlliamo semplicemente il codice e il server CI riprende che c'è un cambiamento e ricostruisce tutti i moduli influenzati da quel cambiamento. Se qualcosa dovesse rompersi, la persona responsabile viene spedita direttamente.

È estremamente utile poter automatizzare le cose.

3

Se si è un singolo sviluppatore o un gruppo molto piccolo, può sembrare che un sistema di compilazione sia solo un overhead. Man mano che aumenta il numero di sviluppatori, diventa difficile tenere traccia di tutte le modifiche e assicurarsi che gli sviluppatori continuino a sincronizzarsi. Un sistema di costruzione riduce il tasso di aumento di tali spese generali man mano che la tua squadra cresce. Considera i problemi relativi alla creazione di tutto il codice in Eclipse dopo aver lavorato a più di 100 sviluppatori sul progetto.

Un motivo valido per disporre di un sistema di compilazione separato è quello di garantire che ciò che è stato consegnato ai clienti sia compilato da una versione specifica del codice archiviata in SCM. Ciò elimina un'intera classe di problemi relativi ai "lavori sulla mia scatola" e, a mio avviso, questo vantaggio vale da solo lo sforzo in termini di tempo di supporto ridotto. Le build isolate (ad esempio su CI server) evidenziano anche problemi di sviluppo, ad es. dove sono state commesse modifiche parziali o di rottura, quindi hai la possibilità di cogliere i problemi in anticipo.

Una build in un IDE crea qualsiasi cosa accada sulla scatola, mentre un sistema di build standalone produrrà una build riproducibile direttamente da SCM. Ovviamente ciò potrebbe essere fatto all'interno di un IDE, ma AFAIK solo invocando qualcosa come Ant o Maven per gestire tutti i passi di costruzione.

Poi ovviamente ci sono anche gli direct benefits dei sistemi di costruzione. Un sistema di compilazione modulare riduce i problemi di copia-incolla e gestisce la risoluzione delle dipendenze e altri problemi relativi alla creazione. Questo dovrebbe consentire agli sviluppatori di concentrarsi sulla consegna del codice. Ovviamente ogni nuovo strumento introduce i propri problemi e la curva di apprendimento coinvolta può far sembrare che un sistema di costruzione sia un inutile sovraccarico (solo Google I hate Maven per farsi un'idea).

+0

consigliate Maven? – cesar

+0

Prendere in prestito da Churchill. È stato detto che Maven è la peggiore forma di strumento di costruzione, tranne tutti gli altri che sono stati provati. –

0

In tutti i progetti, gli sviluppatori spesso invocano manualmente il processo Build.but non è adatto per progetti di grandi dimensioni, dove è molto difficile tenere traccia di ciò che deve essere costruito, in quale sequenza e quali dipendenze ci sono in il processo di costruzione. Quindi usiamo strumenti di costruzione per i nostri progetti.
Strumenti di costruzione Esegui le varietà dell'attività nell'applicazione che lo sviluppatore farà nella vita quotidiana.
Sono
1.Download delle dipendenze.
2.Compilazione del codice sorgente in codice binario.
3.Packaging di quel codice binario.
4. Test di esecuzione.
5. Disposizione ai sistemi di produzione.

Problemi correlati