Configurazione condizionale Java (web.xml) - Sviluppo / Produzione
Ho la seguente configurazione nel mio file web.xml
in un'applicazione Spring:
<session-config>
<cookie-config>
<name>mycookie</name>
<http-only>true</http-only>
<secure>true</secure>
</cookie-config>
</session-config>
Il problema è: <secure>true</secure>
impone il cookie da inviare solo su HTTPS e nella mia macchina di sviluppo non ho configurato HTTPS. Tuttavia, questa configurazione è indispensabile nell'ambiente di produzione.
C'è un modo per rendere questa configurazione sensibile all'ambiente-cioè false
per lo sviluppo e true
per le build ufficiali/di produzione?
2 answers
Se stai usando Maven (che suggerirei vivamente), puoi usare i profili insieme a maven-war-plugin. È possibile specificare diversi web.xml
in ciascuno di questi profili (in modo da poter avere uno per l'ambiente prod e altri per dev). Ecco un esempio per te
<properties>
<webXmlPath>path/to/your/dev/xml</webXmlPath>
</properties>
<profiles>
<profile>
<id>prod</id>
<properties>
<webXmlPath>path/to/prod/webXml</webXmlPath>
</properties>
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${war-plugin.version}</version>
<configuration>
<webXml>${webXmlPath}</webXml>
</configuration>
</plugin>
</plugins>
</build>
Ora ogni build avrà per impostazione predefinita web.xml
con le impostazioni dev. Quando si desidera cambiarlo in build di produzione, basta eseguire
mvn clean install -Pprod
La soluzione era molto semplice usando una propety:
<secure>${session.cookie.secure}</secure>
Nel mio file di sviluppo .properties
ho aggiunto:
session.cookie.secure=false
E in test / produzione posso impostarlo su true