티스토리 뷰

[예제로 배우는 스프링 입문] 2. 예제 프로젝트 준비를 보고 학습한 내용을 기록.

 

예제 프로젝트 준비

✔️ 프로젝트 소개

스프링 프레임워크를 사용해서 동물병원을 예제로 만든 아픈 동물 등록, 주인 등록, 예약 등을 할 수 있는 간단한 웹 애플리케이션이다.

 

spring-projects/spring-petclinic

A sample Spring-based application. Contribute to spring-projects/spring-petclinic development by creating an account on GitHub.

github.com

 

✔️ 프로젝트 클론

위 프로젝트를 클론한다. (git@github.com:spring-projects/spring-petclinic.git)

커맨드로 클론하는 방법이 있으나 인텔리제이의 [New > Project From Version Control...] 을 이용하여 클론하였다.

 

✔️ 프로젝트 빌드

spring-petclinic 위치에서 다음을 실행한다.

# 메이븐으로 프로젝트 빌드
./mvnw package

아래와 같이 한참동안 다운로드가 진행되었다.

...
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-containers/1.0-alpha-30/plexus-containers-1.0-alpha-30.pom (0 B at 0 B/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
Downloading from spring-milestones: https://repo.spring.io/milestone/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
Downloading from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom
Downloaded from central: https://repo.maven.apache.org/maven2/org/codehaus/plexus/plexus-utils/1.4.5/plexus-utils-1.4.5.pom (0 B at 0 B/s)
Downloading from spring-snapshots: https://repo.spring.io/snapshot/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
Downloading from spring-milestones: https://repo.spring.io/milestone/org/codehaus/plexus/plexus-classworlds/1.2-alpha-9/plexus-classworlds-1.2-alpha-9.pom
...

여기서 mvnw란 무엇일까?

 

Quick Guide to Maven Wrapper

Learn how to set up and use Maven Wrapper in a Maven project.

www.baeldung.com

mvnw는 Maven Wrapper의 줄임말로서, 특정 버전의 Maven이 필요한 프로젝트 (또는 Maven을 설치하지 않으려는 사용자)를 위한 훌륭한 선택이라고 할 수 있다. 운영 체제에 여러 버전을 설치하는 대신 프로젝트에서 요구하는 버전으로 유지하기 위해 사용하는 도구이다.

...
[INFO] --- maven-jar-plugin:3.2.0:jar (default-jar) @ spring-petclinic ---
[INFO] Building jar: /Users/yjlee/dev/spring-petclinic/target/spring-petclinic-2.4.0.BUILD-SNAPSHOT.jar
[INFO] 
[INFO] --- spring-boot-maven-plugin:2.4.0:repackage (repackage) @ spring-petclinic ---
[INFO] Replacing main artifact with repackaged archive
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:20 min
[INFO] Finished at: 2020-12-20T17:51:26+09:00
[INFO] ------------------------------------------------------------------------

빌드 성공!

 

✔️ 프로젝트 실행

방법1: 프로젝트를 실행하기 위한 명령을 실행한다.

# 빌드한 jar 파일 실행
java -jar target/*.jar
cf. package라는 Maven Lifecycle:
메이븐 패키지 빌드를 실행하면 이 프로젝트를 빌드해서 패키지 파일을 만든다 .근데 이 프로젝트는 jar 프로젝트이다. 어떻게 알 수 있냐면 pom.xml 파일에 <packaging></packaging>이라는 옵션을 지정하지 않으면 기본적으로 jar(자바 애플리케이션 아카이브) 프로젝트가 된다. 그래서 빌드시 jar 파일이 생성된다. 
...
2020-12-20 18:08:11.475  INFO 72194 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
...

Tomcat started on port(s): 8080 (http) with context path '' -> 톰캣이 8080 포트에 떴다는 것을 로그 메시지에서 확인할 수 있다.

localhost:8080으로 접속해보면 PetClinic 애플리케이션을 확인할 수 있다.

방법2: PetClinicApplication.java 파일의 main 메서드를 실행한다. (Mac 단축키: SHITF + CONTROL + R)

 

728x90
댓글