Spring

[Spring] 메이븐(Maven)

로아다 2023. 7. 4. 16:09
728x90
반응형
Maven

 - 자바 프로젝트를 자동으로 관리해주는 도구

 - 프로젝트를 진행하면서 필연적으로 발생하는 다양한 작업들을 편리하게 관리할 수 있는 빌드 자동화 도구

   ex: 라이브러리 관리 (JSTL 다운받고 등록하고..), 라이브러리 버전 관리 (다른 버전으로 다시 다운 받고.. 다시 등록하고..), 프로젝트 버전 관리 (프로젝트 업데이트하면 버전 이름 바꿔주고.. 관리하고..), 프로젝트 배포 관리 (프로젝트의 배포판 생성하기)

 - 프로젝트 내부의 pom.xml을 통해 전체 프로젝트를 관리할 수 있는 프로그램이다.

 

POM (Project Object Model)

 - 프로젝트 객체 모델

 - 해당 프로젝트에 대한 여러가지 설정 및 의존성등의 정보들을 담고 있다.

 

pom.xml

 - <groupId> : 프로젝트의 그룹 아이디 (패키지 이름에 사용했던 회사 이름)

 - <artifactId> : 프로젝트의 프로젝트명 (패키지에서 쓸 이름)

 - <name> : 프로젝트의 이름 (대소문자 버전)

 - <packaging> : 프로젝트의 빌드 결과가 무엇일지 설정

 - <version> : 프로젝트의 현재 버전

 - <properties> : pom.xml 내부에서 사용할 변수 등록

 - <dependencies> : 프로젝트를 구성하는 데에 필요한 다른 프로젝트들 (이 프로젝트가 의존하는 다른 프로젝트들)

                                 여기에 등록한 프로젝트들은 메이블이 자동으로 다운로드하여 관리해준다.

                                 우리 프로젝트 빌드(buildPath)에도 자동으로 포함시킨다.

 - <dependency> : 의존하는 프로젝트의 pom 정보를 적어 등록하는 곳.

                              해당 프로젝트의 <groupId>, <artifactId>, <version>등을 적어 우리 프로젝트에 포함시킨다.

                              <scope> 설정하여 우리 프로젝트에서 어느정도 범위까지 필요한지 설정할 수 있다.

 

<scope>의 종류

 - compile : 프로젝트를 컴파일 할 때 필요한 의존성

                   컴파일 당시에도 사용되고, 프로젝트 배포시에도 포함된다. (기본값)

 - runtime : 컴파일 할 때는 필요없지만 해당 프로젝트를 실행할 때는 필요한 의존성

                  프로젝트 배포시에 포함된다.

 - provided : 컴파일 할 때는 필요하지만 실행할 때는 필요없는 의존성 (JSP )

                    프로젝트 배포시에는 포함되지 않는다.

 - test : 테스트 단계에서만 필요한 의존성, 컴파일 및 배포에 모두 포함되지 않는다.

 

 Maven의 원격 레포지토리와 로컬 레포지토리

 - Maven <dependencies>에 등록한 모든 프로젝트들을 중앙 원격 레포지토리에서 다운받는다.

 - 다운받은 프로젝트들은 user/.m2/repository/gruoupId/artifactId/... 폴더에 버전별로 보관된다. (로컬 레포지토리)

728x90
반응형