Maven v3.3.3でSpring-Boot v1.3.0.M5を使用しています。以前は、このコマンドを使用して、コンソールからSpring Boot(ブート)アプリケーションを実行できました。
mvn clean package spring-boot:run
ただし、さまざまな環境のビルドを考慮して、pom.xml
を修正する必要がありました。特に、Mavenプロファイルを使用して、ブートアプリケーションのプロパティファイルを変更しています。ここで、前述のコマンドを実行すると、ブートアプリケーションの実行に失敗し、次の例外が表示されます。
原因:Java.lang.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
と入力してjar
ファイルの中を見ると、application.properties
ファイルはjarの中にあることに気付きました。
ただし、mvn clean package spring-boot:run
と入力すると、applications.properties
ファイルはjar内でnotになります。実際、src/main/resources
の下では何もjarファイルになりません。
コマンドラインからブートアプリケーションを実行する場合は、2つの手順を実行する必要があるため、この問題は少し面倒です。
mvn clean package
Java -jar ./target/app-0.0.1-SNAPSHOT.jar
私が間違っていることに関するアイデアはありますか?
ドキュメントに記載mvn spring-boot:run
追加src/main/resources
は、デフォルトでホットリロードをサポートするクラスパスの前にあります。これは簡単にオフにできます
<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>