728x90
반응형

Maven

 

- 자바 프로젝트의 빌드를 자동화해주는 툴 (자바 소스를 Package해서 Depoly 하는 일을 자동화 해주는 것)

 

- 필요한 라이브러리를 특정 문서(pom.xml)에 정의해 놓으면 네트워크를 통해서 라이브러리를 자동으로 다운

 

- 메이븐의 모든 기능은 플러그인을 기반으로 동작, 플러그인에서 실행할 수 있는 작업을 골(Goal)이라하고 하나의 페이즈(Phase)는 하나의 골과 연결되며 하나의 플러그인에는 여러개의 골이 있을 수 있음

 

 

장점

 

- 라이브러리의 관리를 매우 용이하게 해줌

 

- 프로젝트의 작성부터 컴파일, 페르스 등 프로젝트 라이프사이클에 포함되는 각 테스트를 지원

 

- war파일 기반의 배포용으로도 자주 사용

 

 

LifeCycle

 

- 메이븐은 프레임워크이기 때문에 동작 방식이 정해져있는데 일련의 단계(Phase)에 연계된 Goal을 실행하는 과정을 Build라고 하며, 미리 정의되어있는 Build들의 순서를 라이프 사이클이라 함

 

- 즉, 미리 정의된 빌드순서를 라이프사이클, 각 빌드 단계를 Phase라 함

 

- 라이프 사이클 build 단계

  • mvn build

    • 메이븐 빌드 실행

  • mvn build 000

    • 새로운 사용자 빌드를 생성

  • mvn process-resources : resources

    • resources의 실행으로 resource 디렉토리에 있는 내용을 target/classes로 복사

  • mvn process-testResources, mvn test-compile

    • test/java의 내용을 target/test-classes로 복사 (mvn test 명령을 내리면 라이프사이클상 원본 소스로 컴파일)

  • mvn test : surefire

    •  test의 실행으로 target/test-classes에 있는 테스트케이스의 단위테스트를 진행, 결과를 target/surefire-reports에 생성, 단위 테스트 실행

  • mvn clean

    • target에 지정된 모든 소스를 삭제

  • mvn compile : compiler

    • compile의 실행으로 src/java 밑의 모든 자바 소스를 컴파일해서 target/classes로 복사

  • mvn generate-sources

    • 컴파일 과정에 포함될 소스를 생성

  • mvn install

    • Local Repository에 패키지를 복사

  • mvn package

    • target 디렉토리 하위에 jar, war, ear 등 패키지 파일을 생성하고 이름은 <build>의 <finalName>의 값을 사용, 지정되지 않았을 경우 artifactId-version.extention 이름으로 생성

  • mvn depoly

    • 원격 저장소로 배포

  • mvn site

    • target/site에 문서 사이트 생성

  • mvn site-depoly

    • 문서 사이트를 서버로 배포

  • mvn report

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

  • mvn relase

    • 빌드 후 생성된 아티팩트를 로컬 혹은 원격 저장소에 저장

 

- 일반적으로 메이븐은 3개의 표준 라이프사이클을 제공

  • Clean : 빌드 시 생성되었던 Output를 지움

  • Default(Build) : 일반적인 빌드 프로세스를 위한 모델

  • Site : 프로젝트 문서와 사이트 작성을 수행

 

 

 

Phase와 Goal

 

 

 

- Phase는 특정 순서에 따라서 Goal이 실행되도록 구조를 제공

 

- Phase간에는 의존 관계가 있음 (Ex. compile phase가 수행되는 순서는 정해진 이전 phase의 다음)

 

- 모든 빌드단계는 이전 단계가 성공적으로 실행되었을 때 실행된다는 것이 Dependency

 

- Goal은 특정 작업, 최소한의 실행 단위(task)로 각 단계(phase)는 0개 이상의 goal과 연관 (빌드 단계들은 goal들로 구성되어있다고 말할 수 있음)

 

 

 

Maven이 참조하는 설정 파일

 

Settings.xml

 

- settings.xml은 maven tool 자체에 관련된 설정을 담당

 

- MAVEN_HOME/conf 아래 존재 (* MAVEN_HOME 은 환경변수에 설정한 경로)

 

- Maven 자체에 설정 값을 바꾸는 일은 일단 잘 없음

 

 

pom.xml

 

- 하나의 자바 프로젝트에 빌드 툴로 maven을 설정했다면 회상위 디렉토리에 pom.xml이라는 파일이 생성

 

- pom.xml은 POM(Project Object Model)을 설정하는 부분으로 프로젝트 내 빌드 옵션을 설정하는 부분

 

- pom.xml이라는 이름을 가진 파일이 아니라 다른 파일로 지정할 수 있음 (mvn -f ooo.xml test)

 

- maven의 원칙으로 다른 개발자들이 헷갈릴 수 있으니 pom.xml으로 쓰기를 권장

 

 

참조 URL

 

https://monny.tistory.com/129

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

https://mangkyu.tistory.com/8

반응형

'Other' 카테고리의 다른 글

Git  (0) 2019.04.09
Gradle  (0) 2019.04.09
Memcached  (0) 2019.04.09
Sharding (샤딩)  (0) 2019.04.09
Redis  (0) 2019.04.09

+ Recent posts