JAR / WAR
JAR과 WAR는 둘 다 자바 애플리케이션을 패키징 하는 방식입니다.
JAR은 Java Archive의 약자로, 라이브러리 모듈 또는 단일 애플리케이션을 배포할 때 사용되는 방식이며,
WAR는 Web Archive의 약자로, 웹 애플리케이션을 배포할 때 사용되는 방식입니다.
JAR과 WAR에는 구조적으로도 차이가 있는데
JAR 같은 경우는 폴더 구조가 없으며 메타데이터(manifest) 파일을 포함합니다.
반면 WAR는 웹 애플리케이션의 구조를 따르는 폴더 구조와 웹 관련 파일들(html, jsp, servlet 등)을 포함합니다.
이러한 차이 때문에 웹 어플리케이션을 배포하는 때 WAR는 JAR보다 훨씬 효율적이며 편리합니다.
JAR 패키징 방법
기본 설정에서 어플리케이션을 build 하게 되면 JAR 방식으로 패키징 됩니다
./gradlew build
터미널을 통해 파일 경로에 접근하여 위의 코드를 작성하면 build가 이루어집니다.
그 결과 build 디렉터리가 생성되며 build / libs에 들어가면 다음과 같이 JAR 타입이 생성된 걸 볼 수 있습니다.
WAR 패키징 방법
위에 봤듯이 아무것도 바꾸지 않고 기본 설정으로 build를 하게 되면 JAR 타입으로 패키징 되는 것을 확인했습니다.
그렇다면 어떻게 WAR 타입으로 패키징 할 수 있을까요?
1. build.gradle 수정
plugins {
id 'org.springframework.boot' version '2.4.2'
id 'io.spring.dependency-management' version '1.0.11.RELEASE'
id 'war' // 추가합니다.
id 'java'
}
build.gradle 에 있는 plugins에 id 'war'를 추가해 줍니다.
2. {project} Application 파일 수정
@SpringBootApplication
public class CordJgApplication extends SpringBootServletInitializer { // (1)
public static void main(String[] args) {
SpringApplication.run(CordJgApplication.class, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { // (2)
return builder.sources(CordJgApplication.class);
}
}
(1) SpringBottServletInitializer를 상속합니다.
(2) config를 Override 합니다.
return 되는 값에서 suources() 안에 있는 class는 본인의 프로젝트명. class로 작성해야 합니다.
그러면 이제 JAR 때와 같이 똑같이 build를 해보겠습니다.
이번에도 build / libs 경로를 들어가 보면 WAR 파일이 생성된 걸 볼 수 있습니다.
'Spring' 카테고리의 다른 글
Ngrok - 특징 및 사용법 (로컬 서버를 공개 서버로) (0) | 2023.04.06 |
---|---|
Apache Tomcat (톰캣) (0) | 2023.04.06 |
Java Spring _ SSR(Server Side Rendering) ,CSR(Client Side Renderin (0) | 2023.03.23 |
MapStruct / Spring MVC에서 DTO오 Entity간의 매핑 처리하기 (0) | 2023.03.18 |
Spring Security 권한 부여 (0) | 2023.03.17 |