J'utilise Spring-Boot v1.3.0.M5 avec Maven v3.3.3. J'avais l'habitude de pouvoir exécuter mon application Spring Boot (boot) à partir de la console avec cette commande.
mvn clean package spring-boot:run
Cependant, j'ai dû réviser mon pom.xml
pour tenir compte de différentes générations d'environnement. En particulier, j'utilise des profils Maven pour modifier les fichiers de propriétés de l'application de démarrage. Maintenant, lorsque j'exécute la commande mentionnée précédemment, l'application de démarrage ne parvient pas à s'exécuter et se plaint de l'exception suivante.
Causée par: Java.lang.NumberFormatException: pour la chaîne de saisie: "$ {MULTIPART.MAXREQUESTSIZE}"
J'ai un fichier de propriétés situé à src/main/resources/config/application.properties
. Et ce fichier de propriétés a un tas de paires clé-valeur qui ressemble à ce qui suit.
multipart.maxFileSize=${multipart.maxFileSize}
multipart.maxRequestSize=${multipart.maxRequestSize}
Ensuite, dans mon pom.xml
, ma construction est définie comme suit.
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<excludes>
<exclude>**/*.properties</exclude>
</excludes>
</resource>
</resources>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<profiles>
<!-- development -->
<profile>
<id>env-dev</id>
<activation>
<activeByDefault>true</activeByDefault>
<property>
<name>env</name>
<value>dev</value>
</property>
</activation>
<properties>
<multipart.maxFileSize>250MB</multipart.maxFileSize>
<multipart.maxRequestSize>250MB</multipart.maxRequestSize>
</properties>
</profile>
<!-- staging -->
<profile>
<id>env-stg</id>
<activation>
<activeByDefault>false</activeByDefault>
<property>
<name>env</name>
<value>stg</value>
</property>
</activation>
<properties>
<multipart.maxFileSize>500MB</multipart.maxFileSize>
<multipart.maxRequestSize>500MB</multipart.maxRequestSize>
</properties>
</profile>
<profiles>
J'ai remarqué que si je saisis mvn clean package
et regarde à l'intérieur du fichier jar
, le fichier application.properties
est à l'intérieur du fichier jar.
Cependant, si je saisis mvn clean package spring-boot:run
, le fichier applications.properties
est pas à l'intérieur du fichier jar. En fait, rien sous src/main/resources
ne le fait dans le fichier jar.
Ce problème est un peu gênant pour moi car si je veux exécuter mon application de démarrage à partir de la ligne de commande, je dois maintenant effectuer deux étapes.
mvn clean package
Java -jar ./target/app-0.0.1-SNAPSHOT.jar
Des idées sur ce que je fais mal?
Comme décrit dans la documentationmvn spring-boot:run
ajoute src/main/resources
devant votre chemin de classe pour prendre en charge le rechargement à chaud par défaut. Vous pouvez désactiver cela facilement
<build>
...
<plugins>
...
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.2.7.RELEASE</version>
<configuration>
<addResources>false</addResources>
</configuration>
</plugin>
...
</plugins>
...
</build>
Essayez juste ceci:
<resources>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>