코딩마을방범대
실행 가능한 war 파일 만들기 본문
728x90
1. 톰캣 서버에 배포를 위해 war 파일을 생성하였으나
수동으로 생성하여 실행하니 Error: Invalid or corrupt jarfile 파일명.war 라는 오류가 발생함
2. war 프로젝트로 생성 시 자동으로 생성되는 SNAPSHOT을 수동 Exploded에 추가해서 생성해보니 아래와 같은 오류 발생
> java -jar test.war
war에 기본 Manifest 속성이 없습니다.
이 때 부터 뭔가 가능할 것 같아서 찾아보았더니 실행가능한 war 파일이 빌드 시 자동 생성된다는 것이였다!
( 물론 war 프로젝트거나 build.gradle을 설정했을 경우에만 )
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif)
프로젝트 생성 시 war 프로젝트로 생성하지 않았어도
아래와 같이 build.gradle을 설정하고 Add Frameworks Support에서 web Application 선택 후 빌드 시,
build -> libs 폴더에 war 파일이 자동 생성된다. (여태 그걸 몰라서 수동으로 만듬..)
plugins {
id 'war'
...
}
...
bootWar {
archiveFileName = "지정할 이름.war"
}
bootWar{} 는 이름을 설정해주기 위해 입력한 것으로, 이름 설정이 필요 없다면 굳이 안 넣어도됨!
( default: 프로젝트명-0.0.1-SNAPSHOT.war로 생성됨 )
짜잔!!!!!!!!!!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/023.gif)
💡 TIPS
WAR 파일 배포 시 주의할 점
1. 외장 톰캣을 이용할 경우 Main 클래스에 SpringBootServletInitializer 상속이 필요함
@SpringBootApplication
public class MainClass extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainClass.class);
}
public static void main(String[] args) {
SpringApplication.run(MainClass.class, args);
}
}
참고사이트
[Spring Boot]war로 배포하기 (Gradle + 내/외장 톰캣)
728x90
'💡 백엔드 > Java' 카테고리의 다른 글
SpringBoot의 @Qualifier와 @Primary (0) | 2023.06.20 |
---|---|
CrudRepository, PagingAndSortingRepository와 JpaRepository의 차이 (0) | 2023.06.20 |
디버깅 실행 시 application이 정상적으로 실행 되지 않을 경우 (0) | 2023.06.01 |
웹 소켓을 이용한 메시지 전송(백엔드 - SpringBoot) (0) | 2023.06.01 |
실무에서 쓰이는 어노테이션 및 메소드 (0) | 2023.05.31 |