
Manifest-Version: 1.0
Main-Class: hello.embed.EmbedTomcatSpringMain
실행할 main() 메서드의 클래스를 지정해주어야 한다.
WAR 파일
WAR는 분명 내부에 라이브러리 역할을 하는 jar 파일을 포함하고 있다.
하지만 JAR 파일은 jar파일을 포함할 수 없어서, 라이브러리 역할을 하는 jar 파일도 항상 함께 가지고 다녀야 한다.
Jar 안에는 여러 클래스를 포함할 수 있다는 점을 이용하여, 라이브러리에 사용되는 class들을 뽑아서 새로 만드는 jar에 포함하여 만들 수 있다. 이를 Fat Jar라고 부른다.
jar 내부에 jar를 포함할 수 있는 특별한 구조의 jar를 만들고, 내부 jar를 포함하여 실행 할 수 있도록 만든 jar를 실행 가능 Jar(Executable Jar)라 한다.
실행 가능 Jar 파일
META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: org.springframework.boot.loader.JarLauncher
Start-Class: hello.boot.BootApplication
Spring-Boot-Version: 3.0.2
Spring-Boot-Classes: BOOT-INF/classes/
Spring-Boot-Lib: BOOT-INF/lib/
Spring-Boot-Classpath-Index: BOOT-INF/classpath.idx
Spring-Boot-Layers-Index: BOOT-INF/layers.idx
Build-Jdk-Spec: 17
실행 가능 Jar가 아니라, IDE에서 직접 실행할 때는 BootApplication.main() 을 바로 실행한다. IDE가 필요한 라이브러리를 모두 인식할 수 있게 도와주기 때문에 JarLauncher가 필요하지 않다