Maven

콜라맘·2023년 7월 3일
0

Spring

목록 보기
2/14
post-thumbnail

🍀 Maven

  • Maven은 자바 프로젝트의 빌드(build)를 자동화 해주는 빌드 툴(build tool)
  • 프로젝트를 진행하면서 필연적으로 발생하는 다양한 작업들을 편리하게 관리할 수 있는 빌드 자동화 도구
    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/groupId/artifactId/...폴더에 버전별로 보관된다(로컬 레포지토리)
profile
콜라맘 코딩일기

0개의 댓글