[01]스프링부트 퀵스타트 - Maven으로 Java 시작하기 with CLI


회사에서 스프링 부트를 사용하고 있습니다. 그래서 스프링부트를 공부하면서 알게된 내용을 정리합니다. 시리즈로 스프링부트 + 메이븐을 통해서 협업할 수 있는 환경 설정 까지 간단하게 다루려고합니다.

이 포스트의 목표

  • Maven 으로 프로젝트 생성
  • 자바 실행

이 포스트에서는 메이븐 기반의 일반적인 자바 프로젝트를 생성하는 것에 대해서 설명합니다. 생성된 자바 프로젝트는 라이브러리 프로젝트로 활용될 예정입니다.

이 포스트를 시작하기 전에

이 포스트는 다음의 부분에 대한 설명을 하지 않습니다.

  • Java 설치
  • maven 설치

프로젝트 생성

메이븐 기반의 자바 프로젝트를 설치하기 위해서 다음의 명령어를 실행합니다.

mvn archetype:generate -DarchetypeArtifactId="maven-archetype-quickstart" -DarchetypeGroupId="org.apache.maven.archetypes" -DarchetypeVersion="1.4"

위의 명령어를 실행하면 다음과 같은 질문을 합니다.

Define value for property 'groupId': co.storyg.blog
Define value for property 'artifactId': common
Define value for property 'version' 1.0-SNAPSHOT: : 
Define value for property 'package' co.storyg.blog: : co.storyg.blog.common
Confirm properties configuration:
groupId: co.storyg.blog
artifactId: common
version: 1.0-SNAPSHOT
package: co.storyg.blog.common
Y : [정확하게 입력했다면 엔터]

프로젝트 디렉토리로 이동합니다.

cd common

메이븐 wrapper 설치를 하여 메이븐이 없는 환경에서도 사용할 수 있도록 설정합니다.

mvn -N io.takari:maven:wrapper -Dmaven=[원하는 버전 입력]

https://maven.apache.org/docs/history.html 에서 최신 버전을 확인 가능

메이븐 compile 을 하여 jar 파일을 빌드합니다.

./mvnw compile
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------------< co.storyg.foo:common >------------------------
[INFO] Building common 1.0-SNAPSHOT
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ common ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] skip non existing resourceDirectory ./src/main/resources
[INFO] 
[INFO] --- maven-compiler-plugin:3.8.0:compile (default-compile) @ common ---
[INFO] Nothing to compile - all classes are up to date
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  0.304 s
[INFO] Finished at: 2020-02-29T08:30:06+09:00
[INFO] ------------------------------------------------------------------------

생성된 jar 파일을 실행합니다.

java -cp $(pwd)/target/classes co.storyg.blog.common.App 
Hello world