본문 바로가기

BackEnd/Spring

maven이란?

반응형

1. maven이란?

 

빌드 도구인 maven의 주요 특징 중 하나는 의존 모듈(jar 파일) 관리에 있다.

 

메이븐의 경우 중앙 저장소(central repository)라고 불리는 서버로부터 필요한 jar 파일을 다운

 

로드 받아 의존 모듈을 관리한다.

 

라이브러리들을 편리하게 공유하고 다운받고자 나온 것이 메이븐이다.

 

즉, 요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리들

 

을 동으로 다운 할 수 있다.

 

 jar파일을 직접적으로 다른이에게 보낼 필요 없이 pom.xml에 필요한 것을 명시해놓으면 네트워크

 

를 통해서 라이브러리를 매우 손쉽게 다운할 수 있다.

 

Maven을 이용하게 된다면 코드 몇줄로 필요한 라이브러리를 작동시키고 그 라이브러리가 필요로 

 

하는 다른 라이브러리(의존 라이브러리)들까지 자동으로 관리해준다. 

 

Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 도구,툴(build tool)이다.

 

즉, 자바 소스를 compile하고 package해서 deploy하는 일을 자동화 해주는 것이다.

 

Java 기반 프로젝트의 라이프사이클 관리를 목적으로 하는 빌드 도구이다.

 

컴파일과 빌드를 동시에 수행, 테스트를 병행하거나 서버 측 Deploy 자원을 관리할 수 있는 환경

 

을 제공한다.

 

* Life cycle      : 논리적인 작업 흐름

* pom.xml (Project Object Model) : 메이븐이 프로젝트를 처리하는 필요한 정보를 제공하는 파일

* Artifact         : 프로젝트에 필요한 jar, war, pom 등등

* Deploy         : Artifact 를 로컬 저장소에 저장하는 행위

 

2.  Maven의 활용

 

1. Build

- 소스 코드를 컴파일 한다

- 테스트 코드를 컴파일 한다

- 기타 패키지 생성을 위한 바이너리를 생성

 

2. Package

- 배포 가능한 jar, war, exe 파일 등을 생성

 

3. Test

- 단위 테스트(Unit test) 등을 실행

 

4. Report

- 빌드/패키지/테스트 결과를 정리하고, 빌드 수행 리포트를 생성

 

5. Release

- 빌드 후 생성된 Artifact를 로컬 혹은 원격 저장소에 저장한다.

 

2.  빌드툴

 

일반적으로 빌드 툴이 제공해주는 기능으로는 다음과 같은 기능들이 있다.

 

전처리(preprocessing), 컴파일(Compile), 패키징(packaging), 테스팅(testing), 배포(distribution)

 

빌드 툴로는 Ant, Maven, Gradle 등이 있다.

 

 

3. 나의 프로젝트

 

이클립스(STS)에서 스프링 프로젝트를 생성하는 방식은

Maven이나 Gradle 프로젝트를 생성한 후 프레임워크를 추가하는 방식


STS나 Eclipse의 스프링 관련 플러그인을 설치하면 별도의 설정 없이 몇 번의 클릭만으

 


로도 Maven을 사용하는 스프링 프로젝트를 생성할 수 있다. 
이클립스에서 제공하는 메이븐 지원 기능을 이용해서 프로젝트 생성.
Spring Legacy Project 메뉴를 이용하면 여러 종류의 스프링 기반

 

 

프로젝트를 Maven 기반으로 생성, 

Spring MVC Project를 이용해서 생성


프로젝트를 최초로 생성하면 필요한 코드와 라이브러리를 다운로드함
생성된 

프로젝트의 라이브러리는 pom.xml 파일을 통해서 관리


완료된 후에는 프로젝트 구조의 Maven Dependencies 항목을 통

 


해서 스프링 프레임워크 라이브러리들이 제대로 변경되었는지를 확인

같이 참고하면 좋은 자료 : 컴파일,빌드,배포 과정

https://cg-developer.tistory.com/392

https://backback.tistory.com/216

https://jeong-pro.tistory.com/168

https://suwoni-codelab.com/java/2015/05/20/Maven-goal/

myjamong.tistory.com/153

myjamong.tistory.com/154

반응형

'BackEnd > Spring' 카테고리의 다른 글

unit test에 대해  (0) 2020.01.27
스프링 프레임워크에 대해  (0) 2020.01.24
스프링 시큐리티의 내부구조  (0) 2020.01.14
스프링 시큐리티의 기본동작 방식  (0) 2020.01.14
스프링에서 context에 대한 이해  (0) 2020.01.14