2009-08-06 4 views
5

Ho un'applicazione che utilizza diversi file di configurazione (lascia solo prendere in considerazione appli.properties qui). Questi file contengono diversi valori che dipendono dall'ambiente. Possiamo trovare alcune informazioni quali:Come filtrare le risorse durante la compilazione nel progetto Eclipse?

server.port=${envi.server.port} 

D'altra parte, ho una serie di proprietà file, uno per ogni ambiente (dev.properties, homolo.properties, etc.). Contengono i valori per alcune proprietà nei file di configurazione. Possiamo trovare qui questo tipo di proprietà:

envi.server.port=4242 

La mia build è gestita da Maven2. Tutto funziona bene.

Tuttavia, ora devo importare il mio progetto in Eclipse. La mia preoccupazione principale riguarda il filtro dei file di configurazione. Infatti, se non modifico nulla nel mio parametro Eclipse per il mio progetto (dopo un comando eclissi : eclissi), allora tutti i miei file di configurazione manterranno le chiavi di proprietà (cioè ${envi.server.port}) invece dei loro valori. E con tali file di configurazione, la mia applicazione non verrà eseguita all'interno di Eclipse ...

Così ho provato due soluzioni:

  • Una full-Maven soluzione, utilizzando plugin di m2eclipse. Aggiungo un Maven Builder nella configurazione del progetto e quindi, ogni volta che viene creata una build, il filtro viene eseguito sui file.
  • Ant (che viene utilizzato solo all'interno di Eclipse). Ho definito hardly un'attività che simula il filtro Maven2 dei file in Ant. Questo compito è dedicato esclusivamente al filtraggio, non alla compilazione.

Il problema comune di queste due soluzioni è che il filtro viene eseguito in ogni operazione (essenzialmente salva in classe Java) e quindi richiede tempo. La seconda soluzione è comunque più veloce (3 secondi) rispetto alla prima (più di 10 secondi).

Cosa ne pensi del mio approccio? Come lo faresti, in un modo migliore?

+0

Non riesco a capire il problema con l'utilizzo di Maven per filtrare le proprietà. –

+0

@Mike Se ho capito bene, è che la build di Maven viene eseguita ad ogni modifica e richiede circa 10 secondi per eseguire il filtraggio, questo è sconvolgente. –

risposta

2

Se le risorse non vengono modificate così spesso, è possibile impostare il build Maven in modo che venga eseguito solo dopo una build di pulizia, quindi non interferirà così tanto, ciò non fa comunque nulla per accelerare la compilazione.

Per quanto riguarda fare il filtraggio più veloce, non so di qualsiasi altro meccanismo semplice che vi aiuterà, come hai detto è necessario sia Ant o Maven per eseguire il filtraggio, ed entrambi richiedere un certo tempo per impostare prima di costruire, con conseguente rallentamento.

Se ciò causa molti problemi, è possibile scrivere un numero personalizzato Incremental Eclipse builder che esegue il filtro sui delta. Questo dovrebbe essere considerevolmente più veloce, ma ovviamente è molto più difficile scrivere.