Spring

Spring _ JAR(Java Archive) , WAR(Web application Archive)

검은고양이개발자 2023. 4. 6. 16:04
반응형

 

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 파일이 생성된 걸 볼 수 있습니다.

 

 

반응형