maven-2 - plugin - resources exclude maven
¿Cómo copiar un recurso u otro en Maven dependiendo del entorno de destino? (4)
Tengo que crear guerra de prueba y guerra de producción, que tendrá un archivo log4j.properties
diferente en el directorio WEB-INF
. Tengo estos archivos log4j.properties
(test war) y dev.log4j.properties
(para producción enivorment).
Cómo copiar el archivo log4j.properties
en el archivo log4j.properties
para la guerra de producción?
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 de 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>
El código anterior no funcionó para mí, tuve que cambiarlo a lo 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>
La última respuesta está funcionando. Pero debes 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>
- Use los perfiles de Maven ( http://maven.apache.org/guides/introduction/introduction-to-profiles.html )
Cree un perfil "dev" y "prod", seleccionando un conjunto alternativo de 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>
Construya usando el perfil deseado a través de:
mvn install -Pdev
omvn install -Pprod