Hola buenas, en este post vamos a hablar un poco sobre como funciona Maven y los perfiles, principalmente enfocado a los ficheros de propiedades y la activación por defecto.
Se suele dar en ciertos proyectos en los cuales hay diferentes ficheros de propiedades según el entorno donde se necesite desplegar la aplicación. Para evitar esto, que no deja de ser una fuente de errores, estan los perfiles.
En maven podemos crear diferentes perfiles que nos permitan indicar determinadas propiedades en función del entorno donde se vaya a desplegar. De la siguiente forma:
global
defaultValue
local
true
true
localProfile
pro
false
proProfile
Como podéis ver, hemos indicado que un perfil (en este caso el local) sea activado siempre por defecto. Esto quiere decir que si no indicamos ningún valor concreto, los ficheros de propiedades tendrán el valor de las propiedades de ese perfil.
También podéis ver como hay dos tipos de propiedades. Las que estan definidas de forma global (como puede ser 'property.global') y las que estan definidas para cada perfile (como 'mvn.app.debug.mode'). Hay que tener en cuenta, que si en un determinado perfil, indicamos el valor de una propiedad global, sobreescribiremos este mismo.
Ahora tenemos el siguiente código de prueba:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "file:src/test/resources/conf/mvc-dispatcher-servlet-test.xml")
public class ConstantsUtilTest {
private final Logger LOGGER = Logger.getLogger(ConstantsUtilTest.class);
@Autowired
private ConstansUtil utility;
@Test
public void getProperties() {
try {
String propertyGlobal = utility.getPropertyGlobal();
String propertyProfile = utility.getPropertyProfile();
if(propertyGlobal == null){
Assert.fail();
}else{
LOGGER.info("propertyGlobal: "+propertyGlobal);
LOGGER.info("propertyProfile: "+propertyProfile);
Assert.assertTrue(true);
}
} catch (final Exception except) {
LOGGER.error("Error: ", except);
Assert.assertTrue(false);
}
}
Si no indicamos ningún perfil y ejecutamos el código, nos devolverá el siguiente valor.
25 jul 2015 00:00:00,000 INFO [es.home.test.properties.ConstantsUtilTest: 30] propertyGlobal: global
25 jul 2015 00:00:00,000 INFO [es.home.test.properties.ConstantsUtilTest: 31] propertyProfile: localProfile
Si por lo contrarío lo compilamos y ejecutamos con un perfil concreto, nos indicará la siguiente salida. (Para este caso concreto hemos utilizado el comando: mvn test -P pro).
25 jul 2015 00:00:00,000 INFO [es.discoteca.test.properties.ConstantsUtilTest: 30] propertyGlobal: global
25 jul 2015 00:00:00,000 INFO [es.discoteca.test.properties.ConstantsUtilTest: 31] propertyProfile: proProfile
No hay comentarios:
Publicar un comentario