27 Feb 2018

메이븐에 관하여

자바스프링 4.0을 보면 첫 부분에 메이븐 프로젝트를 만드는 부분이 있다.

메이븐..이요..? 33페이지만에 위기가 왔다.ㅋㅋ

메이븐이란!

라이브러리를 편하게 관리해주는 역할을 한다고 한다.

책에서는 메이븐 기초 요 페이지를 읽어보라고 한다.

STS로 프로젝트를 간편하게 만들 수 있지만 메이븐의 M자도 몰라 그냥 하나하나 따라가보았다.

1.메이븐 설치

http://joonyon.tistory.com/16 <- 맥 유저라 이 블로그를 참고하였다.

2.메이븐 프로젝트 생성 page.33 참고

  • groupId - 프로젝트 속하는 그룹 식별 값. 회사, 본부, 또는 단체를 의미하는 값이 오며, 패키지 형식으로 계층을 표현한다. 위에서는 net.madvirus를 groupId로 이용하였다.

  • artifactId - 프로젝트 결과물의 식별 값. 프로젝트나 모듈을 의미하는 값이 온다. 위에서는 sample을 artifactId로 이용하였다.

  • version - 결과물의 버전을 입력한다. 위에서는 기본 값인 1.0-SNAPSHOT을 사용하였다.

  • package- 기본적으로 생성할 패키지를 입력한다. 별도로 입력하지 않을 경우 groupId와 동일한 구조의 패키지를 생성한다.

3.Maven 프로젝트의 기본 디렉토리 구조

  • src/main/java - 자바 소스 파일이 위치한다.

  • src/main/resources - 프로퍼티나 XML 등 리소스 파일이 위치한다. 클래스패스에 포함된다.

  • src/main/webapp - 웹 어플리케이션 관련 파일이 위치한다. (WEB-INF 디렉터리, JSP 파일 등)

  • src/test/java - 테스트 자바 소스 파일이 위치한다.

  • src/test/resources - 테스트 과정에서 사용되는 리소스 파일이 위치한다. 테스트 시에 사용되는 클래스패스에 포함된다.

4.자바 버전 수정 후 컴파일 할 때

폴더 안에서 mvn compile 해준다

5.POM관련해서

  • <name> - 프로젝트 이름
  • <url> - 프로젝트 사이트 URL

POM 연관 정보는 프로젝트간 연관 정보를 기술하는데, 관련 태그는 다음과 같다.

  • <groupId> - 프로젝트의 그룹 ID 설정

  • <artifactId> - 프로젝트의 Artifact ID 설정

  • <version> - 버전 설정

  • <packaging> - 패키징 타입 설정. 위 코드의 경우 프로젝트의 결과 Artifact가 jar 파일로 생성됨을 의미한다. jar 뿐만 아니라 웹 어플리케이션을 위한 war나 JEE를 위한 ear 등의 패키징 타입이 존재한다.

  • <dependencies> - 이 프로젝트에서 의존하는 다른 프로젝트 정보를 기술한다.

    • <dependency> - 의존하는 프로젝트 POM 정보를 기술

      • <groupId> - 의존하는 프로젝트의 그룹 ID
      • <artifactId> - 의존하는 프로젝트의 artifact ID
      • <version> - 의존하는 프로젝트의 버전
      • <scope> - 의존하는 범위를 설정

6.의존 설정

Maven을 사용할 경우에는 코드에서 직접적으로 사용하는 모듈에 대한 의존만 추가해주면 된다. 알아서 Maven이 POM을 참조하여 명시된 의존 라이브러리들을 자동으로 처리해준다.

여기에서 POM정보를 찾을 수 있다.

<dependency>부분에서 <scope>는 의존하는 모듈이 언제 사용되는 지를 설정할 때 사용되며, <scope>에 올 수 있는 값은 다음의 네 가지가 존재한다.

  • compile - 컴파일 할 때 필요. 테스트 및 런타임에도 클래스패스에 포함된다. <scope>를 설정하지 않을 경우 기본 값은 compile 이다.
  • runtime - 런타임에 필요. JDBC 드라이버 등이 예가 된다. 프로젝트의 코드를 컴파일 할 때는 필요하지 않지만, 실행할 때 필요하다는 것을 의미한다. 배포시 포함된다.
  • provided - 컴파일 할 때 필요하지만, 실제 런타임 때에는 컨테이너 같은 것에서 기본으로 제공되는 모듈임을 의미한다. 예를 들어, 서블릿이나 JSP API 등이 이에 해당한다. 배포시 제외된다.
  • test - 테스트 코드를 컴파일 할 때 필요. Mock 테스트를 위한 모듈이 예이다. 테스트 시에 클래스패스에 포함되며, 배포시 제외된다.

7.Maven 라이프사이클과 플러그인 실행

라이프 사이클 관련

라이프사이클의 특정 단계를 실행하려면 다음과 같이 mvn [단계이름] 명령어 를 실행하면 된다.

mvn test
mvn deploy

플러그인을 직접 실행할 수도 있는데 그러면 라이플사이클의 단계가 실행되지 않는다.

mvn surefire:test

…그 외에 모르는 것들 정리

  • 처음 메이븐 프로젝트를 실행하기위해 ‘man archetype:generate’ 명령을 실행하는데 여기서 골이라는 개념이 나온다 골이란?

    ->골이라는 것은 Maven에서 “처리의 역할”을 나타낸다. Maven은 어떤 역할 처리를 실행시킬 것인지를 지정한다. 이것이 골이다. mvn package 여기서 package가 곧 골

  • 미리 정의된 maven project template 는 archetype 이라고 불립니다.

  • jar 이란 JAR(Java Archive, 자바 아카이브)는 여러개의 자바 클래스 파일과, 클래스들이 이용하는 관련 리소스(텍스트, 그림 등) 및 메타데이터를 하나의 파일로 모아서 자바 플랫폼에 응용 소프트웨어나 라이브러리를 배포하기 위한 소프트웨어 패키지 파일 포맷이다.

  • 골에 대해 할 말이 많은데

    https://www.lesstif.com/pages/viewpage.action?pageId=21430332

    여기에 잘 나와 있따!!

Thank You For Reading
Yerin

공부하는 블로그입니다!
궁금한 점은 댓글을 달아주세요!

comments powered by Disqus