pom plugin exclude example java spring maven deployment

java - plugin - resources build maven



¿Perfiles de maven o perfiles de muelles? (5)

muchas aplicaciones java se construyen con maven. maven tiene el concepto de perfiles, es realmente útil para compilar paquetes de versiones para diferentes entornos. por ejemplo, dev/test/prod usando diferentes path / jndiname / security rule / properties files ... Creo que no tengo que listar códigos aquí para explicarlo.

Spring es un marco muy agradable y popular para el desarrollo de Java, ya que spring3 también ha apoyado el concepto de perfiles.

Ahora viene la pregunta, para liberar a diferentes ENVs, ¿cuál es mejor? Ahora mismo prefiero el perfil de Maven. Desde la primavera hay que copiar cada definición de bean en cada perfil. y necesita un inicializador / propiedad para que Spring sepa qué perfil debe activarse.

pero siento que el perfil de primavera es más flexible que el perfil de Maven.

¿Qué piensas? por favor dar algunos consejos. gracias.


Como se mencionó en las otras respuestas: todo depende de cómo trabajes :)

Lo que se nos ocurrió en los últimos años utilizando maven y ahora los perfiles de la primavera 3.1 es esto:

  • Usamos el plugin de liberación de maven para cortar lanzamientos. Esto causa problemas con los entornos si usaríamos perfiles de Maven, ya que tendríamos que reconstruir la versión o al menos la etiqueta con cada perfil de Maven.
  • por lo tanto, creamos en el archivo .war para todos los entornos y usamos Spring PropertyPlaceholderConfigurer para configurar la aplicación (o algún recurso JNDI según el cliente). Esto permite tener solo un lanzamiento de maven.
  • Los perfiles de resorte entran cuando los ambientes también difieren. por ejemplo, un servicio de autenticación que no está disponible en todos los entornos. Aquí pegamos ese servicio y lo colocamos en un perfil de resorte. Activamos los perfiles de resorte en las propiedades que lee PropertyPlaceholderConfigurer que usamos de todos modos.

Hay algunos buenos tutoriales sobre cómo hacer eso:

por lo general, solo usamos perfiles de Maven para dividir la compilación en partes diferentes para los desarrolladores y la compilación de integración continua. En realidad, ya no los usamos para entornos de destino para los archivos .war. Todavía utilizamos perfiles de Maven para implementaciones automatizadas de bases de datos, que difieren más en comparación con las aplicaciones web (cantidad de datos, datos de prueba, ...), pero estos no se entregan en formato zip.

Seguramente hay otras formas de ir. No creo que sea el final de la historia :)

Pero puede ayudar.


Creo que depende de tus necesidades. Si tiene diferentes dependencias basadas en el entorno (es decir, controladores jdbc, etc.), querrá usar maven para resolver esto.

Si solo es cuestión de configurar su implementación, probablemente esté mejor usando Spring.


Los perfiles de Maven proporcionarían una solución en tiempo de construcción, mientras que los perfiles de SpringFramework ofrecerían una alternativa de tiempo de ejecución. Creo que esta es la primera pregunta que uno puede hacerse: si quiere tener un paquete único que se pueda implementar en diferentes entornos, o si quiere que la herramienta de compilación proporcione paquetes diferentes de acuerdo con el entorno de destino.

Una cosa a tener en cuenta es que pueden surgir muchas preguntas si tiene diferentes paquetes implementados en servidores diferentes. En mi lugar de trabajo, por ejemplo, si estoy implementando un paquete para corregir un error que ocurrió anteriormente en el entorno de producción, una política de la empresa indicaría que el único escenario aceptable es que tengo el mismo paquete de soluciones en QA y en los servidores de producción.


Resulta que usé properties-maven-plugin para configurar una propiedad del sistema dependiendo de qué perfil de Maven se activó. Luego, en Spring, estaba activando programáticamente los perfiles que quería, según la propiedad del sistema:

String activeProfile = System.getProperty ("myapp.profile");

appContext.getEnvironment (). setActiveProfiles (....)

Además, cuando quería vincular directamente los dos tipos de perfil (maven / spring), estaba configurando la propiedad spring.profiles.active a través del plugin maven.

Es posible que las prácticas de Thoses estén equivocadas en el diseño, pero resolvieron mis problemas.


Si necesitas diferentes artefactos, ve con Maven. Si es solo una configuración real que puede configurarse DESPUÉS de que el artefacto esté construido, entonces los perfiles Spring del usuario.