2009-02-04 11 views

Respuesta

54
  • perfiles de uso de Maven (http://maven.apache.org/guides/introduction/introduction-to-profiles.html)
  • crear un "dev" y el perfil "prod", la selección de un conjunto alternativo de los recursos para cada perfil. Hacer Dev activo por defecto.

    <profiles> 
        <profile> 
         <id>dev</id> 
         <activation> 
          <activeByDefault>true</activeByDefault> 
         </activation> 
         <build> 
          <resources> 
           <resource> 
            <directory>src/main/resources/dev</directory> 
           </resource> 
          </resources> 
         </build> 
        </profile> 
        <profile> 
         <id>prod</id> 
         <build> 
          <resources> 
           <resource> 
            <directory>src/main/resources/prod</directory> 
           </resource> 
          </resources> 
         </build> 
        </profile> 
    </profiles> 
    
  • construir con el perfil deseado a través de: mvn install -Pdev o mvn install -Pprod

+0

¡Esto parece mucho más elegante que lo que tenía antes! –

+2

Me alegro de escucharlo. Maven puede parecer complicado, pero cuando se utiliza en las mejores líneas de práctica, se escucha a gente como usted decir "¡hermosa!" –

+0

Muy útil. Para una versión ligeramente más complejo puede agregar directorios adicionales "recurso": dev true src/main/resources/común src/main/resou RCE/dev

9

Lo resolví utilizando el complemento maven-resources, donde creé el directorio prod que tiene los recursos para el entorno de producción y los copié en el directorio WEB-INF/classes en la fase de recursos del proceso.

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
     <execution> 
      <id>copy-prod-resources</id> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>copy-resources</goal> 
      </goals> 
      <configuration> 
       <outputDirectory>webapp/WEB-INF/classes</outputDirectory> 
       <resources> 
        <resource> 
         <directory>src/main/resources/prod</directory> 
         <filtering>true</filtering> 
        </resource> 
       </resources> 
      </configuration> 
     </execution> 
    </executions> 
</plugin> 
5

El código anterior no funcionó para mí - tuvo que cambiar a la siguiente:

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <executions> 
    <execution> 
     <id>copy-prod-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <!-- this is important --> 
     <overwrite>true</overwrite> 
     <!-- this as well (target/ was missing) --> 
     <outputDirectory>${basedir}/target/classes</outputDirectory> 
     <resources> 
      <resource> 
      <directory>src/main/resources/prod</directory> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
3

Última respuesta está funcionando. Pero necesita dar la versión para que funcione.

<plugin> 
    <artifactId>maven-resources-plugin</artifactId> 
    <version>2.3</version> 
    <executions> 
    <execution> 
     <id>copy-prod-resources</id> 
     <phase>process-resources</phase> 
     <goals> 
     <goal>copy-resources</goal> 
     </goals> 
     <configuration> 
     <!-- this is important --> 
     <overwrite>true</overwrite> 
     <!-- target --> 
     <outputDirectory>${basedir}/target/classes</outputDirectory> 
     <resources> 
      <resource> 
      <!-- source --> 
      <directory>src/main/resources/prod</directory> 
      </resource> 
     </resources> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

Intenté esta solución pero ahora maven está agregando un directorio prod adicional a las clases. Mis otros directorios como dev y test también se crean. ¿Qué estoy haciendo mal aquí? – Gambo

Cuestiones relacionadas