Ho Maven app con 3 diversi profili, di seguito specificatoQual è il modo corretto per sostituire i file in Maven?
<profiles>
<profile>
<id>dev</id>
<properties>
<profileVersion>DEV</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
<profile>
<id>test</id>
<properties>
<profileVersion>1.0.0-RC1</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
<profile>
<id>prod</id>
<properties>
<profileVersion>1.0.0-Final</profileVersion>
<webXmlFolder>${id}</webXmlFolder>
</properties>
</profile>
</profiles>
E devo struttura Maven come questa:
src/main/config/default/WEB-INF/web.xml
src///config/test/WEB-INF/web.xml principale/config/dev/WEB-INF/web.xml
src principale
src/main/config/prod/WEB-INF/web.xml
src/main/webapp/WEB-INF/
Il mio compito è quello di impostare nominato web.xml in webapp/WEB- INF durante la costruzione, dipende dal profilo specificato. Se nessun profilo è specificato, allora web.xml sta copiando dalla cartella predefinita.
Ho un plugin, ma non funziona.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.4</version>
<executions>
<execution>
<id>copy-prod-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<overwrite>true</overwrite>
<outputDirectory>${project.build.outputDirectory}/classes/WEB-INF</outputDirectory>
<resources>
<resource>
<directory>src/main/config/${webXmlfolder}/WEB-INF</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Qualche idea? Ho passato molto tempo con quel problema e sono un po 'confuso ora.
tutti i profili definiti si basano sulla proprietà $ {id}, è definita nel resto del POM? –
Il mio errore era che $ {id} valore segnaposto era il nome completo dell'app definita come [groupId: artifactId: version] invece solo il nome id del profilo. :) –