ресурсы в приложении Spring Boot отсутствуют в файле jar при использовании плагина Spring Boot Maven
я использую Spring-Boot v1.3.0.M5 с Maven v3.3.3. Раньше я мог запускать приложение Spring Boot (boot) с консоли с помощью этой команды.
mvn clean package spring-boot:run
однако мне пришлось пересмотреть мой pom.xml
для учета различных условий сборки. В частности, я использую профили Maven для изменения свойств файлов программа загрузки. Теперь, когда я запускаю вышеупомянутую команду, загрузочное приложение не запускается и жалуется на следующее исключение.
вызвано: java.ленг.NumberFormatException: для входной строки: "${MULTIPART.MAXREQUESTSIZE}"
у меня есть файл свойств, расположенного по src/main/resources/config/application.properties
. И этот файл свойств имеет кучу пар ключ-значение, которая выглядит следующим образом.
multipart.maxFileSize=${multipart.maxFileSize}
multipart.maxRequestSize=${multipart.maxRequestSize}
тогда в моем 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
и посмотрите, что внутри , в application.properties
файл находится внутри банки.
однако, если я введу mvn clean package spring-boot:run
, потом и не внутри банки. На самом деле, ничего под src/main/resources
попадает в файл jar.
эта проблема немного раздражает меня, потому что если я хочу запустить свое загрузочное приложение из командной строки, Мне нужно сделать два шага.
mvn clean package
java -jar ./target/app-0.0.1-SNAPSHOT.jar
любые идеи о том, что я делаю не так?
2 ответов
As описано в документации mvn spring-boot:run
добавляет src/main/resources
перед вашим classpath для поддержки горячей перезагрузки по умолчанию. Вы можете отключить это легко
<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>
попробуйте это :
<resources>
<resource>
<directory>src/main/resources/config</directory>
<filtering>true</filtering>
<includes>
<include>**/*.properties</include>
</includes>
</resource>
</resources>