취미로 음악을 하는 개발자

[Spring Boot] war 파일 배포 본문

공대인/Spring[Boot]

[Spring Boot] war 파일 배포

영월특별시 2019. 9. 3. 15:31
728x90

bootJar

: 실행 가능한 jar파일에서 jsp가 동작하지 않는 제약점이 있어서 사용 x


bootWar

: 외장 톰캣 엔진이 포함되서 만들어짐, 실행 가능한 war파일에서 jsp가 제대로 동작함


war

: 외부 톰캣 서버에 배포될 것이므로, 내장에 톰캣 서버가 필요가 없어서 떼어낸 것



실행 화면



먼저 Gradle Tasks 창을 켜주면 위와 같은 창을 볼 수 있다.

여기서 bootwar를 해준다. 



어느 정도 시간이 지나면 맨 마지막 줄의 출력이 뜨고 빌드가 완료된다.

빌드가 정상적으로 완료되면 프로젝트 폴더/build/libs 에 가면 war 파일이 나온 것을 볼 수 있다.




명령 프롬포트 창을 키고 war 파일이 있는 폴더로 들어가서

java -jar 파일이름.war 를 해준다.



실행하면 위와 같이 이클립스에서 했던 것처럼 서버가 켜진 것을 볼 수 있다.



/uploadForm 으로 들어가서 파일을 업로드 해보면 아래와 같이 실행은 되지만 에러가 나온다.



실행가능한 war 파일 안에서 파일을 꺼내어 볼 수 있지만, 그 안에 파일을 업로드를 할 수 없기 때문에 에러가 뜬다.



다시 서버를 끄고 프로젝트 파일에서 build 폴더를 삭제해준다. (새로 만든건지 원래 있던 건지 구분하기 위해)

그리고 bootwar를 했던 것처럼 이번에는 war를 실행해준다.



아까는 build/libs 폴더가 만들어졌지만 이번에는 build 폴더까지만 만들어진 것을 볼 수 있다.


bootWar와 war로 나눠지면서 제대로 생성이 안되는 에러가 있다.

따라서 build.gradle 코드에서 아래 23,24번 줄의 코드를 추가해준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
plugins {
    id 'org.springframework.boot' version '2.1.7.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
    id 'war'
}
 
group = 'com.study'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
 
configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}
 
repositories {
    mavenCentral()
}
ext['tomcat.version'] = '8.5.38'
 
bootWar.enabled = false
war.enabled = true
 
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    implementation 'javax.servlet:jstl'
    implementation 'org.apache.tomcat.embed:tomcat-embed-jasper'
    compile fileTree(dir: 'libs', include: ['*.jar'])
}
cs


그 후에 다시 war를 실행해주면 아래와 같이 정상적으로 Task가 처리되고 libs 폴더도 만들어진다.




이제 libs 안에서 다시 만들어진 war 파일을 톰캣 서버에 옮겨서 실행해 볼 것이다.

apache 톰캣 폴더/webapp 폴더war파일을 복사해준다.

파일 이름이 길면 서버 접속 때 주소가 길어지므로 간단하게 바꿔준다. ex) FileUpload



다시 cmd를 켜서 apache 톰캣 폴더/bin에 들어가서 startup.bat을 실행시켜준다.

여러 창이 뜨면서 서버가 실행되고 정상적으로 켜지면 위와 같이 폴더가 생긴다. 



폴더 안은 위와 같이 구성되어 있다.



* 필자는 이전에 톰캣 설정 때, 8090으로 한적이 있어서 8090으로 실행한 것임.



파일 업로드 페이지로 들어가서 이전과 같이 업로드를 해보면



업로드를 하면 정상적으로 결과가 출력되고 static/upload 폴더에 업로드가 된다.


Comments