2009-08-06 9 views
5

Tengo una aplicación que usa varios archivos de configuración (solo consideremos appli.properties aquí). Estos archivos contienen varios valores que dependen del entorno. Podemos encontrar alguna información como:Cómo filtrar los recursos durante la construcción en el proyecto Eclipse?

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

Por otro lado, tengo un conjunto de archivos de propiedades, uno por cada entorno (dev.properties, homolo.properties, etc.). Contienen los valores de algunas propiedades en los archivos de configuración. Podemos encontrar aquí este tipo de propiedades:

envi.server.port=4242 

Mi construcción está a cargo de Maven2. Todo está funcionando bien.

Sin embargo, ahora necesito importar mi proyecto en Eclipse. Mi principal preocupación es sobre el filtrado de archivos de configuración. De hecho, si no modifico nada en mi parámetro Eclipse para mi proyecto (después de un mvn eclipse: eclipse command), entonces todo mi archivo de configuración mantendrá las claves de propiedad (es decir, ${envi.server.port}) en lugar de sus valores. Y con este tipo de archivos de configuración, mi aplicación no se ejecutará dentro de Eclipse ...

así que he intentado dos soluciones:

  • Una solución completa-Maven, usando el plugin de m2eclipse. Agregué un Maven Builder en la configuración del proyecto y luego, cada vez que se realiza una compilación, el filtrado se realiza en los archivos.
  • Ant (que solo se usa dentro de Eclipse). He definido hardly una tarea que simula el filtrado Maven2 de archivos en Ant. Esta tarea solo está dedicada al filtrado, no a la compilación.

El problema común de estas dos soluciones es que el filtrado se realiza en cada operación (esencialmente se ahorra en la edición de la clase Java), y luego toma tiempo. La segunda solución es, sin embargo, más rápida (3 segundos) que la primera (más de 10 segundos).

¿Qué opinas de mi enfoque? ¿Cómo harías eso, de una mejor manera?

+0

No entiendo el problema con el uso de Maven para filtrar las propiedades. –

+0

@Mike Si entiendo esto correctamente, es que la compilación de Maven se ejecuta en cada cambio y toma ~ 10 segundos para filtrar, esto está interrumpiendo. –

Respuesta

2

Si los recursos no se cambian con tanta frecuencia, puede configurar la compilación Maven para que solo se ejecute después de una compilación Limpiar, entonces no interferirá tanto, sin embargo, esto no hace nada para acelerar la compilación.

En cuanto a hacer el filtrado más rápido, no conozco ningún otro mecanismo simple que pueda ayudar, como ya dijiste, necesitas que Ant o Maven ejecuten el filtrado, y ambos se toman un tiempo para configurarlo antes de la construcción, lo que resulta en la desaceleración.

Si esto le causa muchos problemas, puede escribir un Incremental Eclipse builder personalizado que realice el filtrado en los deltas. Esto debería ser considerablemente más rápido, pero obviamente mucho más esfuerzo para escribir.

Cuestiones relacionadas