2011-09-15 12 views
7

Ho un progetto Java, con lo standard Java Builder selezionato come unico costruttore. Inoltre, la build è configurata per la compilazione automatica.Aggiunta di builder al progetto in Eclipse e Incremental-ness

Quello che mi piacerebbe capire è la circostanza costruttiva risultante quando aggiungo una formica a questo progetto (project -> properties -> builders). Quello che mi aspetterei è che ogni volta che apporto una modifica al mio sorgente Java, verrà eseguito sia Java Builder che la mia formica, ma non sembra che la mia build di form sia in esecuzione.

Quando aggiungo per la prima volta la build della formica, viene eseguito, quindi vedo l'output nella console. Tuttavia, quando apporto le modifiche ai miei file sorgente, non viene eseguito di nuovo, cioè non vedo l'output nella console. So che Java Builder è ancora in esecuzione a causa del fatto che le mie modifiche sono state inserite nella consapevolezza del codice Eclipse, ovvero posso fare riferimento a tali modifiche da altre classi, ecc.

Nota, se invoco manualmente la generazione, ovvero tramite Project -> Build All, viene eseguito il build della formica, ovvero vedo di nuovo l'output nella console.

Quindi, perché la generazione di formiche che ho aggiunto non viene eseguita con la costruzione automatica? Nota, non mi aspetterei necessariamente che sia in grado di fare un lavoro incrementale, dal momento che non è fatto per quello, ma avrei pensato che sarebbe esploso quando il Java Builder si spegne? Mi sto perdendo qualcosa?

+0

Questo collegamento (http://www.eclipse.org/articles/Article-Builders/builders.html) sembra suggerire che forse la mia formica di form sia in esecuzione, in background, e l'output non viene proprio la console. Suggerisce inoltre che sia le build automatiche che quelle Build All sono "incrementali" in quanto il builder riceverà un delta di modifiche, in modo che possa applicare le attività di build in modo incrementale. . . ma se questo è il caso, non capisco come il mio form.xml abbia accesso a tali informazioni delta. . . – chad

+0

Amico !! Non c'è NULLA su internet su questo !! Ho sbattuto la testa contro il muro di questo costruttore che ho scritto e non funziona !!! Hai trovato la risposta alla tua Q? –

+2

no. Dovresti invertire la mia domanda e forse attirerà l'attenzione di alcune persone più consapevoli di eclissi. – chad

risposta

1

Il generatore di formiche, o qualsiasi altro costruttore del caso, ha diversi metodi per costruire un progetto. Quando una build si verifica in Eclipse, viene chiamato il metodo build(int kind, Map<String, String> args, IProgressMonitor monitor) di tutti i builder attivi, ma esistono diversi tipi di build, che qualsiasi builder controlla nel metodo build. I tipi di costruzione sono:

FULL_BUILD 
AUTO_BUILD 
INCREMENTAL_BUILD 
CLEAN_BUILD 

Ecco una sintassi esempio di costruzione:

protected IProject[] build(int kind, Map<String, String> args, IProgressMonitor monitor) throws CoreException { 
    if (kind == FULL_BUILD) { 
     fullBuild(monitor); 
    } else { 
     IResourceDelta delta = getDelta(getProject()); 
     if (delta == null) { 
      fullBuild(monitor); 
     } else { 
      incrementalBuild(delta, monitor); 
     } 
    } 
    return null; 
} 

Come si può vedere, un costruttore può decidere di reagire a un certo tipo di costruzione, e anche agire in modo diverso per diversi tipi di build, quindi, la mia ipotesi è che il formatore di formiche sia implementato in modo che reagisca solo alla compilazione completa e non alla build incrementale.

0

Hai configurato il tuo generatore Ant per l'esecuzione durante una build "automatica"? Per fare ciò, selezionare le proprietà del builder, andare alla pagina Targets e utilizzare Set Targets per Auto Build.

Ho un costruttore di formica che è in esecuzione nel mio progetto Eclipse su tutti i tipi di build (così anche sul salvataggio dei file sorgente modificati), e non mi ricordo cambiare niente altro.

Problemi correlati