Spring Boot의 .original 파일이란 무엇입니까?

Spring Boot 프로젝트를 만들고 mvn clean package 명령을 실행하면 target 디렉토리에 다음과 같이 .original 파일이 만들어집니다.



이것은 뭐야, 라고 하는 것으로 조사해 보았습니다.

.original 파일은 단지 Jar 또는 War



네, 그냥 Jar 파일, War 파일입니다.

Spring Boot는 Executable Jar(War)를 만들 수 있습니다.
이 형식으로 되어 있는 것이, .original 가 아닌 분의 Jar나 War입니다.
.original 는 Executable이 아니라 단지 Jar나 War라는 것입니다.

Jar와 War를 압축 해제하고 내용을 비교하면 알 수 있지만 Executable Jar (War)는 실행에 필요한 Spring Boot 관련 클래스를 포함하거나 디렉토리 구성이 다릅니다.

자세한 내용은 공식 문서에 설명되어 있습니다.
htps : // / cs. sp 링 g. 이오/sp린 g-보오 t/두 cs/쿤 t/레후 렌세/HTML/에 쿠타 bぇ-r. HTML

Spring Boot Maven Plugin이 만든



이 파일은 Spring Boot Maven Plugin에서 만들었습니다.
이 Plugin에는 spring-boot:repackage 라는 골이 있어, 여기서 Executable Jar (War) 를 작성해, 원래 Maven 로 package 되고 있던 Jar 와 War 를 .original 라는 명칭으로 리네임하고 있습니다.

왜, mvn clean package 라고 하는 느낌으로, spring-boot:repackage 를 지정하지 않은데 작성되어 버리는가 하면, 입니다.

pom.xml (발췌)
<plugin>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <executions>
    <execution>
      <id>repackage</id>
      <goals>
        <goal>repackage</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <mainClass>${start-class}</mainClass>
  </configuration>
</plugin>
repackagepackage 단계에서 실행되므로 mvn clean package 하면 repackage 도 실행됩니다.

.original 파일을 만들지 않으려면



Executable Jar (War) 를 작성할 필요가 있으면, .original 파일은 반드시 작성되어 버립니다.
하지만 단지 Jar나 War를 작성하는 것만으로 하고 싶다면, 다음 중 하나로 Executable Jar (War)의 작성을 건너뛸 수 있습니다.
  • 명령의 인수로 지정하는 경우
  • mvn clean package -Dspring-boot.repackage.skip=true
    
  • pom.xml로 설정하는 경우

  • pom.xml
    <build>
      <plugins>
        <plugin>
          <groupId>org.springframework.boot</groupId>
          <artifactId>spring-boot-maven-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
      </plugins>
    </build>
    

    .original 파일 사용



    내장 Tomcat을 사용하지 않고 War 파일을 응용 프로그램 서버에 배포하는 작업이라면 Executable War 일 필요는 없습니다.
    (물론 Executable War에서도 배포가 가능합니다.)

    Executable War에는 실행에 필요한 Spring Boot 클래스와 Maven에서 provided 범위로 만든 라이브러리도 포함되어 있으므로 일반 War 파일보다 파일 크기가 커지는 경향이 있습니다.
    따라서 이러한 작업을 수행하는 경우 .original 파일을 배포하거나 위의 설정을 수행하여 Executable War를 만들지 않도록 하여 파일 크기를 줄일 수 있습니다. .

    다만, java 커멘드로 바삭하게 실행할 수 있는 것이 Spring Boot의 장점이라고 생각합니다만.

    좋은 웹페이지 즐겨찾기