복붙노트

[SPRING] Spring Boot Maven Plugin을 사용할 때 jar 파일에서 Spring Boot 애플리케이션의 자원이 누락된다.

SPRING

Spring Boot Maven Plugin을 사용할 때 jar 파일에서 Spring Boot 애플리케이션의 자원이 누락된다.

Maven v3.3.3에서 Spring-Boot v1.3.0.M5를 사용하고 있습니다. 나는이 명령으로 콘솔에서 Spring Boot (부팅) 응용 프로그램을 실행할 수있었습니다.

mvn 클린 패키지 spring-boot : run

그러나 다른 환경 빌드를 고려하여 pom.xml을 수정해야했습니다. 특히 Maven 프로파일을 사용하여 부팅 응용 프로그램의 등록 정보 파일을 수정합니다. 이제 앞에서 언급 한 명령을 실행하면 부팅 응용 프로그램이 실행되지 않고 다음 예외가 발생합니다.

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 패키지를 입력하고 jar 파일 안을 들여다 보면 application.properties 파일이 jar 파일 안에 있다는 것을 알게되었습니다.

그러나 mvn clean 패키지 인 spring-boot : run을 입력하면 applications.properties 파일이 jar 파일에 없습니다. 사실, src / main / resources 아래의 어떤 것도 jar 파일에 들어 가지 않습니다.

명령 줄에서 내 부팅 응용 프로그램을 실행하려면 지금 두 단계를 수행해야하기 때문에이 문제는 다소 귀찮습니다.

내가 뭘 잘못하고 있는지에 대한 아이디어가 있습니까?

해결법

  1. ==============================

    1.문서 mvn spring-boot : run에 설명 된대로 classpath 앞에 src / main / resources를 추가하여 기본적으로 핫 리로드를 지원합니다. 이 기능을 쉽게 끌 수 있습니다.

    문서 mvn spring-boot : run에 설명 된대로 classpath 앞에 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>
    
  2. ==============================

    2.다음을 시도하십시오.

    다음을 시도하십시오.

     <resources>
            <resource>
                <directory>src/main/resources/config</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                </includes>
            </resource>  
    </resources>
    
  3. from https://stackoverflow.com/questions/33197230/resources-in-a-spring-boot-application-are-missing-from-jar-file-when-using-spri by cc-by-sa and MIT license