J'utilise Spring-Boot v1.3.0.M5 avec Maven v3.3.3. J'avais l'habitude d'exécuter mon application Spring Boot (boot) depuis la console avec cette commande.ressources dans une application de démarrage Spring sont manquantes dans le fichier jar lors de l'utilisation Spring Boot Maven Plugin
mvn clean package spring-boot:run
Cependant, j'ai dû réviser mon pom.xml
pour tenir compte de l'environnement différent construit. 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 précédemment mentionnée, l'application de démarrage ne peut pas s'exécuter et se plaint de l'exception suivante.
Causée par: java.lang.NumberFormatException: Pour chaîne d'entrée: "$ {} MULTIPART.MAXREQUESTSIZE"
J'ai un fichier de propriétés situées à 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
, mon build est défini 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>
Je remarqué que si je tape mvn clean package
et regarder à l'intérieur du fichier jar
, le fichier application.properties
est à l'intérieur du pot.
Cependant, si je tape dans mvn clean package spring-boot:run
, le fichier est applications.properties
pas à l'intérieur du pot. En fait, rien sous src/main/resources
le fait dans le fichier jar.
Ce problème est un peu ennuyeux pour moi parce que si je veux exécuter mon application de démarrage à partir de la ligne de commande, je dois faire deux étapes maintenant.
mvn clean package
java -jar ./target/app-0.0.1-SNAPSHOT.jar
Toutes les idées sur ce que je fais mal?
J'ai essayé de mettre à jour ma version de spring-boot à 1.3.2.RELEASE, et maintenant la solution que vous avez proposée casse.Les fichiers de propriétés sont copiés mais la génération Maven ne remplace pas les valeurs de propriétés. La documentation que vous m'avez renvoyée indique même 'Notez qu'un effet secondaire de l'utilisation de cette fonctionnalité est que le filtrage des ressources au moment de la construction ne fonctionnera pas. 'Des idées? Je ne voulais pas poster une nouvelle question. –
[Lire les notes de publication] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering)? Je ne pense pas que cela ait quelque chose à voir avec votre problème. Cela ne contrôle que ce qui se passe lorsque vous exécutez l'application à l'aide du plugin Maven. –
Je trouve la même question avec vous et comment y remédier? – Chevalier