본문 바로가기
Data Engineering/메이븐

Maven 뽀개기 2 - 간단한 실습

by 무언가 하는 소소 2022. 8. 24.
728x90
반응형

 

 

전편

☞ 2022.08.20 - [Data Engineering/Maven] - Maven 뽀개기 1 - Maven이란? Maven 설치

 

 

아직 다루지 않은 내용이 많지만 일단 실습부터 해보면 훨씬 감이 더 잘 올 것 같아서 실습을 먼저 넣었다. 이론을 먼저 익히고 싶은 분들은 나중에 실습편을 봐주길 바란다. IDE를 사용하여 메이븐을 보다 더 간편하게 사용할 수 있지만 우선은 커맨드라인을 통해 메이븐을 쓰는 것을 익혀보자.

 

1. 프로젝트 생성

mvn archetype:generate

프로젝트를 생성하면 아주 긴 텍스트가 출력된다. 이때 프로젝트 템플릿을 고를 수 있는데 그냥 엔터를 치면 maven-archetype-quickstart 템플릿이 선택된다. 

.
.
.
3127: remote -> us.fatehi:schemacrawler-archetype-maven-project (-)
3128: remote -> us.fatehi:schemacrawler-archetype-plugin-command (-)
3129: remote -> us.fatehi:schemacrawler-archetype-plugin-dbconnector (-)
3130: remote -> us.fatehi:schemacrawler-archetype-plugin-lint (-)
3131: remote -> ws.osiris:osiris-archetype (Maven Archetype for Osiris)
3132: remote -> xyz.luan.generator:xyz-gae-generator (-)
3133: remote -> xyz.luan.generator:xyz-generator (-)
3134: remote -> za.co.absa.hyperdrive:component-archetype (-)
3135: remote -> za.co.absa.hyperdrive:component-archetype_2.11 (-)
3136: remote -> za.co.absa.hyperdrive:component-archetype_2.12 (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 1942:

엔터를 치면 또 텍스트가 출력되다가 아래와 같이 groupID, artifactID, version, package를 입력하라고 뜬다. version은 디폴트 값으로 하였다. package까지 입력하고 엔터를 치면 [Y] 창이 뜬다. 별 문제 없으면 그대로 엔터를 누르면 (문제가 있으면 n을 입력) 프로젝트 생성이 끝난다.

Define value for property 'groupId':   practice
Define value for property 'artifactId': practice
[INFO] Using property: version = 1.0-SNAPSHOT
Define value for property 'package' practice: : practice
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Archetype: maven-archetype-quickstart:1.4
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: practice
[INFO] Parameter: artifactId, Value: practice
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: package, Value: pratice
[INFO] Parameter: packageInPathFormat, Value: pratice
[INFO] Parameter: package, Value: pratice
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: groupId, Value: practice
[INFO] Parameter: artifactId, Value: practice
[INFO] Project created from Archetype in dir: /Users/user/suyeon_dev/maven_pratice/practice
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  07:49 min
[INFO] Finished at: 2022-08-16T23:22:29+09:00
[INFO] ------------------------------------------------------------------------

 

 

2. 프로젝트 구성

생성된 프로젝트를 보면 아래 사진과 같은 구성을 가지고 있다. 아래가 메이븐의 기본 레이아웃이다. 베이스 디렉토리에는 pom.xml 파일이 있고 src 폴더가 있다. src 폴더 안에는 main 폴더와 test 폴더가 있고 그 아래 java파일 등이 존재한다. (메이븐을 쓰지 않았더라도 IDE를 이용해 프로젝트를 만든 경험이 있는 사람들은 다 알 구성이라고 생각된다.) 생성된 폴더에 따라 필요한 파일을 작성하면 메이븐이 빌드할 때 알아서 필요한 파일을 찾는다. test 폴더에 main이 있는 파일을 넣는 등 잘못 넣으면 메이븐이 파일을 찾지 못해 에러가 난다. 만약 파일 위치를 옮기고 싶다면 pom.xml에 파일의 위치를 명시해주어야 한다.  

 

 

3. 프로젝트 빌드

프로젝트의 베이스 디렉토리(pom.xml이 있는 곳)로 이동하여 아래의 명령어를 치면 빌드가 되어 jar 파일이 만들어진다. 

mvn package

결과창을 보면 유닛 테스트 실행 결과도 나오고  빌드가 성공적으로 마무리 된 것을 볼 수 있다. 

[INFO] 
[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
[INFO] Running pratice.AppTest
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.016 s - in pratice.AppTest
[INFO] 
[INFO] Results:
[INFO] 
[INFO] Tests run: 1, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] 
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ practice ---
[INFO] Building jar: /Users/user/suyeon_dev/maven_pratice/practice/target/practice-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  3.798 s
[INFO] Finished at: 2022-08-16T23:43:53+09:00
[INFO] ------------------------------------------------------------------------

 

 

4. 프로그램 실행

mvn package로 생성된 target 폴더에 들어가서 아래와 같이 명령어를 치면 프로그램이 실행된다.

java -classpath <jar파일이름>.jar <실행할class이름>

아래는 결과물!

이렇게 복잡한 명령어를 쳐야하는 이유는 해당 jar 파일이 실행가능한 파일이 아니기 때문이다. 이건 추후에 다루도록 하겠다. 

 

 

5. 프로그램 삭제

다시 베이스 디렉토리로 가서 아래 명령어를 치면 빌드된 프로젝트가 제거된다. 

mvn clean

 

이번 포스팅에서는 정말 기본적인 실습을 했다. 근데 실제로 프로젝트를 생성할 때도 위와 크게 다르지 않다. 메이븐에서 지정한 폴더에 맞게 파일을 넣어주고 pom.xml에 디펜던시를 잘 명시해주면 메이븐이 많은 일을 대신 해준다. 

 

 

다음편

 2022.08.22 - [Data Engineering/Maven] - Maven 뽀개기 3 - POM

 

Maven 뽀개기 3 - POM

전편 ☞ 2022.08.22 - [Data Engineering/Maven] - Maven 뽀개기 3 - POM 메이븐의 핵심은 POM이라 할 수 있다. POM은 프로젝트의 베이스 디렉토리에 있는 XML 파일(pom.xml)이다. POM 파일에 우리가 원하는 컨피..

dogfootja.tistory.com

728x90
반응형

댓글