使用Spring Boot Maven插件时,jar文件中缺少Spring Boot应用程序中的资源
我使用Spring-Boot v1.3.0.M5和Maven v3.3.3。 我曾经能够使用此命令从控制台运行我的Spring Boot(启动)应用程序。
mvn clean package spring-boot:run
但是,我不得不修改我的pom.xml
以考虑不同的环境构建。 特别是,我使用Maven配置文件来修改启动应用程序的属性文件。 现在,当我运行前面提到的命令时,启动应用程序无法运行并抱怨以下exception。
引起:java.lang.NumberFormatException:对于输入字符串:“$ {MULTIPART.MAXREQUESTSIZE}”
我有一个位于src/main/resources/config/application.properties
的属性文件。 此属性文件有一堆键值对,如下所示。
multipart.maxFileSize=${multipart.maxFileSize} multipart.maxRequestSize=${multipart.maxRequestSize}
然后在我的pom.xml
,我的构建定义如下。
src/main/resources true **/*.properties src/main/resources false **/*.properties org.springframework.boot spring-boot-maven-plugin env-dev true env dev 250MB 250MB env-stg false env stg 500MB 500MB
我注意到如果我输入mvn clean package
并查看jar
文件, application.properties
文件就在jar中。
但是,如果我输入mvn clean package spring-boot:run
,那么applications.properties
文件不在 jar中。 实际上, src/main/resources
下的任何内容都不会进入jar文件。
这个问题对我来说有点烦人,因为如果我想从命令行运行我的启动应用程序,我现在必须做两个步骤。
-
mvn clean package
-
java -jar ./target/app-0.0.1-SNAPSHOT.jar
关于我做错的任何想法?
如文档 mvn spring-boot:run
所述, mvn spring-boot:run
会在类路径前添加src/main/resources
以支持默认的热重载。 你可以轻松关闭它
... ... org.springframework.boot spring-boot-maven-plugin 1.2.7.RELEASE false ... ...
试试吧:
src/main/resources/config true **/*.properties