我正在将Spring-Boot v1.3.0.M5与Maven v3.3.3。我曾经能够使用此命令从控制台运行Spring Boot(boot)应用程序。
mvn clean package spring-boot:run
但是,我不得不进行修改pom.xml以考虑到不同的环境构建。特别是,我使用Maven配置文件来修改启动应用程序的属性文件。现在,当我运行前面提到的命令时,启动应用程序无法运行,并出现以下异常。
pom.xml
原因:java.lang.NumberFormatException:对于输入字符串:“ $ {MULTIPART.MAXREQUESTSIZE}”
我有一个位于的属性文件src/main/resources/config/application.properties。而且此属性文件具有一堆键/值对,如下所示。
src/main/resources/config/application.properties
multipart.maxFileSize=${multipart.maxFileSize} multipart.maxRequestSize=${multipart.maxRequestSize}
然后在my中pom.xml,我的构建定义如下。
<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>
我注意到,如果我键入mvn clean package并查看jar文件内部,则该application.properties文件位于jar中。
mvn clean package
jar
application.properties
但是,如果输入mvn clean package spring-boot:run,则applications.properties文件 不在 jar中。实际上,没有任何内容src/main/resources使它进入jar文件。
applications.properties
src/main/resources
这个问题对我来说有点烦,因为如果我想从命令行运行启动应用程序,那么我现在必须做两个步骤。
java -jar ./target/app-0.0.1-SNAPSHOT.jar
关于我在做什么错的任何想法吗?
如文档中所述 ,默认情况下在类路径前面mvn spring- boot:run添加src/main/resources以支持热重载。您可以轻松关闭此功能
mvn spring- boot:run
<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>