Besoin :
- Un service spring-boot
service-project
hérite (au sens maven) d'un projet parentparent-project
. - Une maven property est définie dans le
parent-project
:<my.value>toto</my.value>
- On veut utiliser cette property dans une Spring @Value du
service-project
Le build + run utilise podman
podman machine start
Par facilité on exécute toutes les commandes depuis un conteneur.
Depuis le répertoire racine de ce repo git (attention syntaxe powershell ${PWD}
...) :
podman run -it -v ${PWD}:/pom-to-prop-value -p 8080:8080 eclipse-temurin:17-jdk-alpine sh
Dans le conteneur :
cd /pom-to-prop-value/service-project
./mvnw clean install
Dans le conteneur :
./mvnw spring-boot:run
Attendu : la page http://localhost:8080/
doit afficher Greetings from Spring Boot! toto
Dans le conteneur, exécuter :
Dans le conteneur, exécuter :
/pom-to-prop-value/service-project # ./mvnw help:effective-pom > effective-pom.txt
On doit obtenir :
<properties>
<java.version>17</java.version>
<my.value>toto</my.value>
</properties>
Test avec un fichier quelconque src\main\resources\test.txt
, qui contient la ligne Hello ${name}
. (name
est une property standard maven)
Le effective-pom du service-project
doit contenir :
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
Dans le conteneur, exécuter :
./mvnw resources:resources
Le fichier service-project\target\classes\test.txt
doit contenir la ligne Hello service-project
.
Le fichier service-project\target\classes\application.properties
doit contenir la ligne also.my.value=toto
https://spring.io/guides/gs/spring-boot
https://spring.io/guides/topicals/spring-boot-docker
https://maven.apache.org/plugins/maven-resources-plugin/examples/filter.html