기본
빌드
- 소스코드 파일들을 컴퓨터에서 실행할 수 있는 소프트웨어로 변환하는 일련의 과정이다. 다음과 같은 과정을 진행한다.
- 라이브러리 다운로드
- 소스코드를 바이너리코드로 컴파일.
- 컴퓨터가 이해할 수 있는 기계어로 변환하는 작업이다.
- 자바의 경우, JVM에서 실행 가능한 바이트 코드 형태의 '클래스파일'이 생성되는데, 이것이 바이너리코드 이다.
- 바이너리 코드를 패키징
- 내가 만든 애플리케이션 코드를, 배포하고 동작시킬 수 있도록 패키징 하는 것
- jar, war 파일로 패키징을 한다고 한다.
- jar
- JAVA 애플리케이션이 동작할 수 있도록 자바 프로젝트를 압축한 파일
- class 파일(자바의 바이너리코드), 라이브러리 파일을 포함
- JRE 만 있어도 실행 가능함(java -jar 프로젝트명.jar)
- war
- Servlet / JSP 컨테이너에 배치할 수 있는 웹 애플리케이션을 압축한 파일
- 웹 관련 자원을 포함한다 (JSP, Servlet, JAR, Class, XML, HTML, JavaScript)
- 사전 정의된 구조를 사용한다 (WEB-INF, META-INF)
- 별도의 웹 서버가 필요하다(WAS)
- 테스트 실행
- 프로덕션 시스템에 배포
- package(archive)
- 아카이브 파일(.war, .ear)로 배포
- 아카이브 파일은, WAS에 의해 압축이 풀린다.
- 파일이 많은 경우 압축을 푸는 시간이 오래 걸릴 수 있다.
- 원격 서버에 배포시 한 개의 파일만 전송하면 된다.
- WAS(Tomcat)에서 제공하는 업로드를 통한 배포 기능을 활용할 수 있다.
- exploded
- 아카이브 파일을, 압축 해제한 형태의 디렉터리로 배포
- 별도의 디렉터리에 원본 소스를 복사하여 만든다
- 압축 및 해제 과정이 불필요하다
- 파일이 많은 경우 복사하는 시간이 오래 걸릴 수 있다.
- 원본 소스를 건드리지 않고 배포를 원하는 경우에 적합하다.
- 원격 서버에 배포시 파일이 많은 경우 전송 시간이 오래 걸릴 수 있다
- in-place
- 소스 디렉터리를 그대로 배포
- 추가적인 복사 과정 불필요
- 로컬 서버에 배포하는 경우 적합
- WAS(Tomcat)가 런타임시 생성하는 파일이 소스와 섞일 수 있는 문제가 있다.
- package(archive)
이것을 해주는 도구(빌드도구)가, maven, gradle 등이 있는 것이다
빌드 도구
- Ant
- 빌드만 진행해줌
- 따라서, 웹 프로젝트에 필요한 라이브러리를 직접 다운받아서 사용했는데, 스프링을 사용하는 경우 버전에 따른 라이브러리의 변경이 잦아 불편함이 따랐다.
- Maven
- 빌드 + 자동 라이브러리 관리
- 라이브러리를 자동으로 추가 및 관리해주며, 라이브러리 버전을 자동으로 동기화해주는 장점이 있다.
- maven에서 지원하지 않는 라이브러리는, 직접 다운로드 받은 후, WEB-INF 폴더의 lib 폴더를 만들어, 원하는 라이브러리의 jar 파일을 추가하면 사용할 수 있다.
- Gradle
- 빌드 + 자동 라이브러리 관리
- Maven 보다 빠르고 편리하며, 현재 거의 모든 신규 프로젝트의 빌드 도구로 사용되고 있다.
참고 블로그
https://hye0-log.tistory.com/27
https://wangmin.tistory.com/50
'웹 애플리케이션' 카테고리의 다른 글
[Tomcat] No artifacts marked for deployment (0) | 2022.09.17 |
---|