pom plugin exclude example maven-2 resources

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 o mvn install -Pprod