Definiendo entornos con Maven

3 junio, 2009

Etiquetas: , ,

Una pregunta, ¿qué pasa cuando quieres desplegar tu aplicación en diferentes entornos? Lo normal es que estos entornos no sean iguales, aunque es lo aconsejable. Lo normal es que no acaben de tener la misma configuración, por ejemplo el nivel de logs (debug para desarrollo, error para producción…). Lo normal, vaya, es que tengas que controlar la configuración para cada entorno por separado. Frameworks como Ruby on Rails, o Symfony ya vienen con esta idea de tener entornos diferentes, con configuración diferente y propiedades diferentes, pero en Java te lo tienes que “currar” un poco más.

Ahora bien, tienes dos opciones, o lo haces a “manija” o te lo curras con algún sistema automatizado para cambiar estas configuraciones. Y es aquí donde viene que ni pintado Maven, en particular los Profiles de Maven. Y es que:

Profiles are specified using a subset of the elements available in the POM itself (plus one extra section), and are triggered in any of a variety of ways. They modify the POM at build time, and are meant to be used in complementary sets to give equivalent-but-different parameters for a set of target environments (providing, for example, the path of the appserver root in the development, testing, and production environments). As such, profiles can easily lead to differing build results from different members of your team.

Aquí un simple ejemplo de que cómo especificar diferentes recursos a maven según el entorno:

<profiles>
  <profile>
    <id>env-dev</id>
    <activation>
      <property>
        <name>env</name>
        <value>dev</value>
      </property>
    </activation>
    <build>
      <resources>
        <resource>
          <filtering>false</filtering>
          <directory>
            ${basedir}/src/main/resources/dev
          </directory>
        </resource>
      </resources>
    </build>
  </profile>
  <profile>
    <id>env-test</id>
    <activation>
      <property>
        <name>env</name>
        <value>test</value>
      </property>
    </activation>
    <build>
      <resources>
        <resource>
          <filtering>false</filtering>
          <directory>
            ${basedir}/src/main/resources/test
          </directory>
        </resource>
      </resources>
    </build>
  </profile>
</profiles>

El ejemplo es sencillo, especifica las carpetas de los resources del proyecto para los entornos de desarrollo y de test. Ahora lo que se necesita para activarlo es ejecutar Maven pasando como parámetro -Denv=dev o -Denv=test. Hay otras maneras de activar los Profiles. Puede depender del sistema operativo donde estés compilando el proyecto, si existen o dejan de existir diferentes archivos (también dependiendo del entorno en el que te encuentres)… Lo importante de la configuración es saber que en el tag activation es dónde y cómo se activan los profiles.

<activation>
  <property>
    <name>env</name>
    <value>test</value>
  </property>
</activation>

Con este código estamos diciendo que cuando se compile el proyecto, si existe una variable llamada env con valor test pasada como parámetro, el Profile se active. No es muy dificil… Así, si queremos compilar el proyecto en el entorno de desarrollo (-Denv=dev) la llamada sería:


GeSHi Error: GeSHi could not find the language (using path /home/content/67/7140967/html/blog/wp-content/plugins/codecolorer/lib/geshi/) (code 2)

Bueno, esto sólo ha sido un ejemplo básico, no dejéis de revisar la documentación del POM de Maven para obtener más información y profundizar más en el tema.

Con la camiseta al trabajo!

7 mayo, 2009

Etiquetas:

Con la camiseta del Barça. Mañana toca ir al trabajo con la camiseta del Barça, y es que después de ver cómo el Barça gana 2-6 al Madrizzz y elimina de la Champions al Chelsea en el minuto 93 jugando con uno menos, cuando todo estaba perdido, no se puede hacer otra cosa…

VISCA EL BARÇA i VISCA LO PUTO GUSILUZ!

EuRuKo 2009!

4 mayo, 2009

Etiquetas: ,

Sorpresa la que me he llevado esta mañana al ver que voy al EuRuKo 2009. Y es que gracias a Linking Paths, que patrocinan el evento, he conseguido una entrada. Muchísimas gracias.

EuRuKo 2009

Vale, tenía el 50% de posibilidades de que me tocara la entrada, pero siempre hace ilusión que te toquen estas cosas y si, además, es para aprender pues genial. Y es que EuRuKo es

EuRuKo is an annual conference about the Ruby programming language with an informal atmosphere and lots of opportunities to listen, to talk, to hack and to have fun. This year takes place on Barcelona, Spain, the days 9th and 10th of May.

Por cierto, esto para Aitor & company de Linking Paths, la primera ronda la pago yo.

Aupa!