Ich verwende Spring-Boot v1.3.0.M5 mit Maven v3.3.3. Ich war in der Lage, meine Spring Boot (Boot) -Anwendung mit diesem Befehl von der Konsole aus auszuführen.
mvn clean package spring-boot:run
Ich musste jedoch meinen pom.xml
überarbeiten, um anderen Umgebungs-Builds Rechnung zu tragen. Insbesondere verwende ich Maven-Profile, um die Eigenschaftendateien der Startanwendung zu ändern. Wenn ich jetzt den zuvor erwähnten Befehl ausführte, kann die Startanwendung nicht ausgeführt werden und beschwert sich mit der folgenden Ausnahme.
Verursacht durch: Java.lang.NumberFormatException: Für Eingabezeichenfolge: "$ {MULTIPART.MAXREQUESTSIZE}"
Ich habe eine Eigenschaftendatei unter src/main/resources/config/application.properties
. Und diese Eigenschaftendatei enthält eine Reihe von Schlüssel-Wert-Paaren, die wie folgt aussehen.
multipart.maxFileSize=${multipart.maxFileSize}
multipart.maxRequestSize=${multipart.maxRequestSize}
Dann ist mein Build in meinem pom.xml
wie folgt definiert.
<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>
Ich habe festgestellt, dass wenn ich mvn clean package
eingebe und in die jar
-Datei schaue, die application.properties
-Datei sich in der Dose befindet.
Wenn ich jedoch mvn clean package spring-boot:run
eingebe, befindet sich die applications.properties
-Datei nicht im jar. Tatsächlich macht nichts unter src/main/resources
es in die JAR-Datei.
Dieses Problem ist für mich etwas ärgerlich, denn wenn ich meine Startanwendung über die Befehlszeile ausführen möchte, muss ich jetzt zwei Schritte ausführen.
mvn clean package
Java -jar ./target/app-0.0.1-SNAPSHOT.jar
Irgendwelche Ideen, was ich falsch mache?
Als beschrieben in der Dokumentation fügt mvn spring-boot:run
vor Ihrem Klassenpfad src/main/resources
hinzu, um das Hot-Reload standardmäßig zu unterstützen. Sie können dies leicht ausschalten
<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>
Versuchen Sie einfach folgendes:
<resources>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>