반응형

먼저 Maven을 설치하고, 실제로 Maven에서 어떻게 개발을 할것인지 나갈 것인지 그 기본 단계를 설명한다.


JDK와 빌드 도구

Java 개발은, JDK라는 도구로 한다. 이것은 아마도 Java 입문서 등에서 먼저 써 있을 것이다. JDK에 Java 런타임과 컴파일러가 들어 있으며, 이를 사용하여 개발한다고 하는 것은 확실히 맞는 설명이다. 그러나 JDK만 있으면 정말 충분한 것인가? 사실 더 필요한 것이 있다.

요즘, Java 개발에 "JDK만으로 프로그램을 컴파일하여 개발하고 있다"라고하는 사람은 없을 것이다. 현재 프로그램은 매우 복잡한 구성으로 되어 있다. 여러 소스 코드 파일, 각종 리소스들, 구체적인 정보를 기술한 설정 파일, XML에 의한 데이터 많은 비 프레임워크와 라이브러리. 이것들을 깨끗이 정리해서 JDK으로 컴파일을 하는 사람을 과연 얼마나 될지.

프로그램에 필요한 파일들이 증가함에 따라 JDK가 아닌, 본격적인 개발 도구를 이용하는 사람이 증가하고 있다. Java 개발자 중에는 "Eclipse에서만 개발한 적이 없다"라는 사람도 많을 것이다. 이런 개발자들에서 명령어로 개발하라고 하면, 모른다고 하는 사람이 대부분일 것이다.

이런 Eclipse 같은 개발 도구는 편리하지만, "개발 도구에서 만든 프로젝트 밖에 사용할 수 없다"라는 문제도 내포되어 있다. 개발 환경이 다른 개발 도구로 변경되었지만 프로젝트가 마이그레이션할 수 없는 일도 있다. 프로젝트를 보내달라고 하면, 본적도 없는 개발 도구였던 것으로 사용할 수 없을 수도 있을 것이다.

개발 도구의 차이 등에 영향을 받게되는 것은 각각의 도구로 프로젝트의 공통화가 도모되고 있지 않기 때문이다. 이러한 상황에서 최근 특히 주목 받게 된 것이 "빌드 도구"에 의한 개발이다.

빌드 도구(build tool)란?

빌드 도구라는 것은 프로젝트 생서, 테스트 빌드, 배포 등 기본적인 작업을 위한 전용 프로그램이다. 뭐, 정확하게 말하면 "프로젝트 관리 도구"라고 해야 하지만, 일반적으로 "빌드 도구"라는 표현이 더 널리 이용되고 있다.

빌드 도구는 커멘드을 사용하여 프로젝트 생성 및 빌드 작업 등을 실시한다. 커멘드으로 다양한 작업을 할 수 있도록, 다양한 개발 도구 내에서 이용하는 것도 비교적 간단하다. 따라서 최근의 개발 도구에는 빌드 도구를 지원하고, 내부에서 빌드 도구를 사용하여 프로젝트 작성 및 빌드할 수있게 되어있는 것도 증가하고 있다.

이러한 것은 실제로 프로젝트 생성 및 빌드는 빌드 도구를 수행하고 있기 때문에, 같은 빌드 도구를 지원하는 다른 프로젝트에 쉽게 프로젝트를 마이그레이션할 수 있다. 또한 빌드 도구에서 생성된 프로젝트는 거의 같은 파일 구성되기에 개발 규칙 등이 달라도 거의 같은 개발을 할 수 있다.

또한 빌드 도구 빌드의 내용을 기술한 파일(빌드 파일)를 읽고 처리를 하기 때문에, 빌드 파일의 내용을 이해하면 세심하게 프로젝트를 관리할 수 있다.

프로젝트의 복잡성에 따라, 빌드 도구의 중요성이 높아지고 있다.



Apache Maven란?

Java 프로그래머에게 사실상 표준이라고 할 수 있는 빌드 도구는 "Apache Maven"이다.

이것은 Apache Software Foundation이 개발을 진행하고 있는 오픈 소스의 빌드 도구이다. 이 Maven에서 지원되는 몇 가지 이유가 있다.

  • 원래 Java 사이에서는 Ant라는 빌드 도구이 널리 사용되고 있었다. Maven은 Ant의 후계자라고도 할 수 있는 것으로, 자연스러운 흐름으로 Ant에서 Maven으로 전환되어 어느새 사실상의 표준이되고 있었다는 느낌이 있다.

  • Maven의 가장 큰 업적은 "중앙 저장소"라는 것을 준비한 것이다. 이것은 Java에서 사용되는 다양한 라이브러리와 프로그램들을 집중 관리하는 서버에서 Maven은 이 서버에 접속하여, 필요한 프로그램을 다운로드하여 프로젝트에 설치한다. 즉, 개발자가 라이브러리 등을 직접 설치하거나 관리할 필요가 없다. Maven 이외의 빌드 도구에서도 이 Maven 중앙 리포지토리에 사용하고 있는 것이 많다.

  • Maven은 XML으로 빌드 파일을 만든다. XML을 사용하는 점에 대해서는 견해 차이가 있겠지만 필요한 정보를 알기 쉽게 구조적으로 설명하는 것으로서 XML은 널리 사용되고 있으며, 비교적 쉽게 받아 들일 수 있다. 또한 XML은 구조가 탄탄하고 분석하기 쉽기 때문에, 개발 도구에서는 전용의 비주얼 에디터 등을 많이 지원하고 있다.

다른 장점은 다양하게 있겠지만, "XML 기반 비교적 알기 쉽게 프로젝트에 사용할 라이브러리 등도 모두 함께 관리 해준다"는 것만으로 Maven을 이용하는 의미는 크다.

Maven VS Ant

Ant와 Maven은 모두 Apache에서 제공하는 빌드 도구이다. 빌드 도구의 주된 목적은 프로젝트 구축 프로세스를 쉽게하는 것이다.

Ant와 Maven 사이에는 다음과 같은 많은 차이점이 있다.

AntMaven
Ant에는 공식적인 규칙이 없으므로 build.xml 파일에 프로젝트 구조에 대한 정보를 제공해야 한다.Maven는 소스 코드, 컴파일 코드 등을 배치하기 위한 규약을 가지고 있다. 따라서 pom.xml 파일에 대한 프로젝트 구조에 대한 정보를 제공할 필요가 없다.
Ant는 절차 적입니다. 코드를 통해 할 일과 수행시기에 대한 정보를 제공해야 한다. 순서를 지정을 해야 한다.Maven은 선언적이며 모든 것을 pom.xml 파일에서 정의한다.
Ant에는 수명주기(life cycle)가 없다.Maven에는 수명주기(life cycle)가 있다.
도구(tool) 형태이다.프레임워크 형태이다.
주기능은 빌드 툴(build tool)이다..프로젝트 관리 도구(project management tool)이다.
Ant 스크립트는 재사용 할 수 없습니다.maven 플러그인은 재사용 할 수 있다.
Maven보다는 비선호적이다.Ant보다 더 좋다.



Maven 설치

그럼 Maven을 준비해 보자. Maven은 다음 사이트에서 공개되고 있다.

https://maven.apache.org

Maven 다운로드

여기에서 왼쪽 메뉴에 있는 "Download"링크를 클릭하여 다운로드 페이지로 이동한다. Download 페이지의 "Files"라는 곳에, Maven 파일 다운로드 링크가 있다.

Maven 프로그램은 압축 파일에 되어 있는 상태로 배포되고 있다. "Binary tar.gz archive" 또는 "Binary zip archive"에 있는 링크를 클릭하여 파일을 다운로드한다. 모두 내용은 같다.

설치 파일을 다운로드를 했다면, 압축 파일을 압축 해제를 한다. 그리고 생성된 폴더를 적당한 위치에 배치한다. Maven 설치는 이뿐이다.

다만, 이것만 진행하면 Maven 명령을 실행하는데 정확하게 경로를 기술하지 않으면 안되기 때문에, 어느 경로에서든 명령어만으로 실행할 수 있도록 추가 설정을 해줘야 한다.

Maven 프로그램 실행 파일은 설치된 폴더에 있는 bin에 있다. 이 폴더의 경로를 path 변수에 추가한다.

Windows에서 환경 변수 설정하기

Windows의 경우, 환경 변수는 "시스템" 제어판에서 관리하고 있다. "시스템" 제어판을 시작한다.

Windows 10의 경우 어디에 있는지 모르는 사람도 있을 것이다. 그 경우은 시작 메뉴를 마우스 오른쪽 클릭하고 "파일 이름을 지정하여 실행"메뉴를 선택하고 "control"을 입력하여 실행한다. 제어판이 나타난다. 여기에서 "시스템"을 기동화면 된다.

"시스템" 윈도우를 열고, "고급"을 클릭한다. 이것으로 "시스템"제어판이 열린다.

"시스템" 제어판의 "고급"탭을 선택하고, "환경 변수" 버튼을 클릭한다. 나타난 대화 상자에서 목록에서 'path'라는 항목을 찾아 "편집"버튼을 클릭하여 Maven의 "bin"폴더의 경로를 끝에 세미콜론을 구분자를 넣어 작성한다. 예를 들어 C 드라이브에 "maven"라는 폴더에 저장하고 있다면, 아래와 같은 방식이다.

...... path값 ...;c:\maven\bin\

다 작성하면 확인 버튼을 느리고 대화 상자를 닫고 제어판을 닫으면 작업 종료이다.

macOS에서 환경 변수 설정하기

Mac에서는 터미널에서 bash의 숨겨진 파일을 열어 경로를 추가가한다. 다음 명령을 실행한다.

$ vi ~/.bash_profile

이제 텍스트 편집기를 시작하고 .bash_profile 파일을 열기 때문에 말미에 다음과 같이 작성한다.

PATH=$PATH:/[Maven의 bin폴더]/
export PATH

작성한 후 Shift + ":"키를 눌러 입력을 마치고 그대로 ": wq"로 파일을 저장하고 종료한다.

mvn 명령을 확인하기

이것으로 Windows 및 maxOS에서 환경 변수 설정을 할 수 있었다. 제대로 Maven 명령이 인식되어 있는지 확인한다. 명령 프롬프트 또는 터미널을 시작하고 다음과 같이 실행하십시오.

$ mvn -version

이 "mvn"는 것이 Maven 명령이다. 이제 Maven 버전이 출력된된다. 아마 다음과 같은 텍스트가 표시될 것이다.

Apache Maven 버전 이름
Maven home : ... Maven의 bin 폴더의 경로. ...
Java version : ...... JDK 버전 ...
Java home : ... Java의 경로 ...
Default locale : ... 기본 로케일 ...
OS name : ... 사용 OS의 이름 ...

이렇게 출력된다면, Maven 경로는 제대로 잡힌 것이다. 실행하면 오류 메시지 같은 것이 나타난다면 제대로 경로가 설정되어 있지 않거나 Java 버전이 오래된지도 모른다. 환경 변수 path에 잘못된 경로가 추가되어 있는지, 또한 Java 버전이 최신인지 확인하도록 하자.




Maven 기본

Maven 기본 명령어

  • maven [options] [<goal(s)>] [<phase(s)>]

명령어에 예시는 아래와 같다.

# 패키징을 한다.
mvn package

# 메이븐 빌드를 통하여 생성된 모든 파일을 삭제하고 패키징을 한다.
mvn clean install

Maven 라이프사이클

메이븐은 미리 정해진 빌드 순서를 가지고 있는데 이를 라이프 사이클(life cycle) 이라고 하며, 라이프사이클의 각 빌드 단계를 페이즈(phase)라고 한다.

라이프사이클은 여러 단계(페이즈)로 나뉘어져 있으며, 각 페이즈는 의존 관계를 갖는다.

  • 기본 라이프사이클

    • compile : 소스 코드를 컴파일한다.
    • test : 단위 테스트 실행한다. (기본설정은 단위 테스트가 실패하면 빌드 실패로 간주함)
    • package : 컴파일된 클래스 파일과 리소스 파일들을 war 혹은 jar와 같은 파일로 패키징한다.
    • install : 패키징한 파일을 로컬 저장소에 배포한다. (USER_HOEM/.m2/)
    • deploy : 패키징한 파일을 원격 저장소에 배포한다. (nexus 혹은 maven central 저장소)
  • clean 라이프 사이클

    • clean : 메이븐 빌드를 통하여 생성된 모든 파일을 삭제한다.
  • site 라이프 사이클

    • site : 메이븐 설정파일 정보를 활용하여 프로젝트에 대한 문서 사이트를 생성한다.
    • site-deploy : 생성한 문서 사이트를 설정되어 있는 서버에 배포



반응형

'Maven' 카테고리의 다른 글

[Maven] Web 응용 프로그램 개발  (0) 2017.12.23
[Maven] Java 응용 프로그램 개발  (0) 2017.12.23
[Maven] pom.xml 파일 기본  (0) 2017.12.23
[Maven] Maven 프로젝트 작성  (0) 2017.12.23
[Maven] Maven 빠르게 시작(퀵 가이드)  (0) 2017.12.23
[Maven] Maven 준비  (0) 2017.12.23

+ Recent posts