본문 바로가기

개념 정리

[개념 정리] 메이븐

메이븐: 자바의 빌드 특화 프레임워크

pom.xml 파일에 적힌 라이브러리들을 자동으로 관리하고 정해진 라이프사이클 규칙과 pom.xml 파일에 적힌 빌드 설정에 따라 빌드(코드 -> JAR, WAR, EAR)를 자동으로 해준다.

빌드: 컴파일 + a

이클립스 실행: 빌드 결과물 실행만 하기

메이븐: 테스트 + 빌드 결과물을 남기기


메이븐의 모든 것: pom.xml

프로젝트 객체 모델, POM(Project Object Model): 프로젝트에 대한 정보가 적혀 있다

이클립스에서 메이븐 프로젝트를 만들 시 루트 폴더에 있다.

이클립스에선 pom.xml파일을 수정하면 프로젝트 폴더 - 오른쪽 클릭 - 업데이트를 눌러줘야 한다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  
  <modelVersion>4.0.0</modelVersion> 

  <groupId>com.javamaven</groupId> // 프로젝트 성
  <artifactId>javaprj</artifactId> // 프로젝트 이름

  <packaging>jar</packaging> // 빌드 결과물을 jar로 설정

  <version>1.0-SNAPSHOT</version> // 프로젝트 버전

  <name>javaprj</name> // 프로젝트 이름

  <url>http://maven.apache.org</url>

  <dependencies> // 사용할 라이브러리들 목록. 목록의 모든 라이브러리들을 알아서 메이븐 저장소에서 다운받아준다.
    <dependency> // 라이브러리 1개
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <properties> // 플러그인 설정
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  
</project>

 


1.라이브러리 추가: 메이븐 원격 저장소에서 검색

https://mvnrepository.com/

 

1.원하는 자바 라이브러리를 검색하고 버전을 선택해 나오는 코드를 복사하기.

2.pom.xml파일의 <dependecies>~</dependencies>안에 넣는다.

3.프로젝트 폴더 - 오른쪽 클릭 - 메이븐 - 업데이트


2.빌드 설정: 빌드 라이프 사이클의 플러그인 설정하기

  • 메이븐의 빌드 라이프 사이클: 효율적으로 빌드하기 위한 단계 규칙
  • 이클립스에서 실행할 때 자동으로 순서에 따라 pom.xml에 적힌 플러그인 설정을 사용해 라이프 사이클 단계들을 실행
  • 각 단계들은 플러그인이 존재할 때 실행된다.

 

1.클린: 전의 프로젝트 결과물  치우기 단계 mvn clean install

  1. 프리 클린
  2. 클린
  3. 포스트 클린

2.빌드(디폴트): 프로젝트 배포 단계

  1. 인증: pom.xml이 유효하지 확인
  2. 시작
  3. 생성 소스들
  4. 프로세스 소스들
  5. 생성 리소스들
  6. 프로세스 리소스들 (기본 플러그인 존재)
  7. 컴파일: 소스 코드 컴파일 (기본 플러그인 존재)
  8. 프로세스 클래스들
  9. 생성 테스트 소드들
  10. 프로세스 테스트 소스들
  11. 생성 테스트 리소스들
  12. 프로세스 테스트 리소스들 (기본 플러그인 존재)
  13. 테스트 컴파일 (기본 플러그인 존재)
  14. 프로세스 테스트 클래스들
  15. 테스트: 유닛 테스트 실행 (기본 플러그인 존재)
  16. 준비 패키지
  17. 패키지: 소스 코드를 결과물(아티팩트)로 패키지화 (기본 플러그인 존재)
  18. 프리 통합 테스트
  19. 통합 테스트: 통합 테스트 실행
  20. 포스트 통합 테스트
  21. 확인: 통합 테스트의 결과 확인
  22. 설치: 생성된 패키지를 로컬 저장소에 설치
  23. 배포: 생성된 패키지를 원격 저장소에 배포

3.사이트: 프로젝트 사이트 문서 생성 단계

  1. 프리 사이트
  2. 사이트
  3. 포스트 사이트
  4. 사이트 배포

 

[페이즈:플러그인:골]

메이븐 빌드 라이프 사이클의 각 단계는 [페이즈:플러그인:골]로 이루어져 있다.

1.페이즈: 단계 이름

2.플러그인: 해당 단계의 목표을 달성할 프로그램. 기본으로 설정된 것도 있고 아닌 것도 있다. pom.xml에서 플러그인을 자신이 원하는 프로그램으로 변경 가능.

3.: 단계의 목표

예)

23.컴파일 - compile: org.apache.maven.plugins:maven-compiler-plugin:3.1: compile

 

각 페이즈의 현재 플러그인 설정 확인

mvn help:describe -Dcmd=clean	// 1.클린 단계
mvn help:describe -Dcmd=compile // 2.빌드 단계
mvn help:describe -Dcmd=site	// 3.사이트 단계

명령어

mvn -version	//설치되었는지, 무슨 버전인지 확인
mvn help:describe

mvn archetype:generate
mvn archetype:generate -DgroupId(성)=com.maven -DartifactId(이름)=javaproj -DarchetypeArtifactId(템플릿)=maven-archetype-quickstart

mvn compile // target/classes 폴더에 컴파일된 class파일 생성
mvn test	// src/test/java 폴더에 넣어놓은 유닛 테스트 파일들 실행
mvn package // 컴파일 + 테스트 + target 폴더에 jar파일 생성

java -classpath [jar파일 경로] [jar파일 안의 메인 파일 경로 \ 대신 .로]
java -cp target\javaprj-1.0-SNAPSHOT.jar com.maven.App

질문

더보기

 

1.메이븐은 무엇인가?

메이플은 자바 프로젝트를 한번에 빌드, 배포할 수 있는 아파치 그룹에서 만든 유명한 오픈 소스 빌드 툴이다.

자바 개발자의 일과를 단순화시켜주며 프로젝트 개발을 도와준다.

 

2.메이븐은 무엇을 도와주는가?

아파치 메이븐은 프로젝트 관리에서 빌드, 서류화, 배포(release, deploy, distribute)와 같은 모든 과정들을 도와준다.

라이브러리와 같은 종속성 다운로드 작업을 자동으로 도와준다.

프로젝트에 대한 모든 정보를 보기 쉽게 해준다.

윈도우, 리눅스, 맥 어느 플랫폼에서도 사용할 수 있기에 개발자가 다른 환경에서도 종속성 같은 걸 걱정안하고도 쉽게 빌드할 수 있게 해준다.

pom.xml파일에 종속성을 적는 것만으로도 추가할 수 있다.

 

Release: 이미 존재하는 프로그램의 새로운 버전(2.0)을 배포

Deploy: 프로그램은 기기, 서버에 설치하며 서비스를 제공

Distribute: 프로그램을 사용자들이 사용할 수 있게 제공

 

3.메이븐이 다루는 것은?

빌드, 종속성, 보고서, 배포, 메일링 리스트

 

4.ANT와 메이븐의 차이는?

ANT

1.정해진 관습(convention)이 없기에 build.xml파일에 정보를 적어야 한다

2.절차적(procedural)

3.라이프 사이클이 없다

4.스크립트를 재사용할 수 없다

5.오로지 빌드 툴

메이븐

1.정해진 관습이 있기에 pom.xml파일에 정보를 적지 않아도 된다

2.선언적(declarative)

3.라이프 사이클이 있다

4.주로 프로젝트 관리 도구로 사용된다

5.플러그인을 재사용할 수 있다

 

5.POM이란 무엇인가?

프로젝트 객체 모델로 프로젝트와 세부 설정 정보가 있는 XML파일

프로젝트 루트 폴더에 존재하며 작업을 실행할 때 메이븐은 이 POM을 찾는다

 

6.POM에 무엇이 들어갈 수 있는가?

종속성

개발자 이름

플러그인

플러그인 설정

리소스

 

7.POM의 필수 요소들은?

프로젝트 루트

모델 버전 4.0.0

그룹아이디 (사람 이름으로 따지면 성)

아티팩트아이디 (사랑 이름으로 따지면 이름. 그대로 프로젝트의 이름으로 쓰인다)

아티팩트 버전 (프로젝트 버전)

 

8.빌드 툴이란?

빌드 과정에 필수인 것. 다음 과정들에서 필요하다.

소스 코드 생성

소스 코드로부터 문서 생성

소스 코드 컴파일

컴파일된 소스 코드(class 파일)을 JAR(zip파일)로 패키징

다른 사람이 만들거나 내가 만든 패키지를 설치

 

9.윈도우에 메이븐을 설치하는 방법은?

메이븐 사이트에서 메이븐을 다운받고 압축 풀기

PATH 환경 변수에서 MAVEN_HOME으로 추가

maven -version으로 제대로 설치되었는지 확인

 

10.메이븐에서 클린, 디폴트, 사이트는 무엇인가?

빌드 라이프 사이클의 3단계

클린: 전의 프로젝트 치우기

디폴트: 프로젝트 배포

사이트: 프로젝트 사이트 문서 생성

 

 

 

'개념 정리' 카테고리의 다른 글

[개념 정리] 각 프레임워크 시작 명령어  (0) 2022.06.09
[개념 정리] 깃랩 CI/CD  (0) 2022.06.09
[개념 정리] 도커  (0) 2022.06.06
[개념 정리] Microsoft  (0) 2022.06.06
[개념 정리] 구글  (0) 2022.06.06