Utilizzo Spring-Boot v1.3.0.M5 con Maven v3.3.3. Ero abituato a eseguire la mia applicazione Spring Boot (boot) dalla console con questo comando.in un'applicazione Spring Boot non sono presenti nel file jar quando si utilizza il plug-in Maven Spring Boot
mvn clean package spring-boot:run
Tuttavia, ho dovuto rivedere la mia pom.xml
per tenere conto di ambiente diverso costruisce. In particolare, sto usando i profili Maven per modificare i file delle proprietà dell'applicazione di avvio. Ora quando eseguo il comando menzionato in precedenza, l'applicazione di avvio non riesce a funzionare e si lamenta con la seguente eccezione.
Causato da: java.lang.NumberFormatException: Per stringa di input: "$ {} MULTIPART.MAXREQUESTSIZE"
ho una proprietà di file che si trova a src/main/resources/config/application.properties
. E questo file di proprietà ha un sacco di coppie chiave-valore che assomigliano al seguente.
Quindi nel mio pom.xml
, la mia build è definita come segue.
<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>
ho notato che se digito mvn clean package
e guardare all'interno del file jar
, il file application.properties
è all'interno del vaso.
Tuttavia, se digito mvn clean package spring-boot:run
, allora il file non è applications.properties
all'interno del vaso. Infatti, nulla sotto src/main/resources
lo inserisce nel file jar.
Questo problema è un po 'fastidioso per me, perché se voglio eseguire la mia applicazione di avvio dalla riga di comando, devo fare due passaggi ora.
mvn clean package
java -jar ./target/app-0.0.1-SNAPSHOT.jar
Tutte le idee su quello che sto facendo male?
Ho provato ad aggiornare la mia versione spring-boot a 1.3.2.RELEASE, e ora la soluzione che hai proposto si rompe.I file delle proprietà vengono copiati ma il build Maven non sostituisce i valori delle proprietà. La documentazione a cui mi hai riferito dice anche: "Si noti che un effetto collaterale dell'utilizzo di questa funzione è che il filtraggio delle risorse in fase di compilazione non funzionerà." Qualche idea? Non volevo postare una nuova domanda. –
[Leggi le note di rilascio] (https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#maven-resources-filtering)? Non penso che questo abbia niente a che fare con il tuo problema. Questo è solo il controllo di ciò che accade quando esegui l'app usando il plugin Maven. –
trovo la stessa domanda con te e come la aggiusti? – Chevalier