공부하는 블로그입니다!
궁금한 점은 댓글을 달아주세요!
메이븐에 관하여
자바스프링 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
여기에 잘 나와 있따!!