[spring] 튜토리얼(1). 메이븐 프로젝트 생성, 프로젝트 파일구조

2 분 소요

메이븐 프로젝트 생성방법

[File] -> [new] -> [other] -> [maven project] ->

*archetype selection 뜻

  • 메이븐 프로젝트 tool kit
  • 메이븐 프로젝트에서 사용하는 모델이나 패턴을 템플릿화 해서 제공


기본 프로젝트로 생성할꺼니 skip 옵션 체크 ->


artifact 입력칸

  • group ID -> 전체 프로젝트 제목 , arifact ID -> 작은 프로젝트 제목 이라고 봐도 될듯
  • ex ) group ID : 태양계 시스템 프로젝트 , artifact ID : 지구 프로젝트


gruop id

  • 모든 프로젝트 중에서 나의 프로젝트를 식별하게 해주는 식별자
  • groupid는 java 패키지 이름 규칙을 따라야 함. 즉, 제어하는 도메인의 이름을 반대로 시작
    • ex) org.apache.maven, org.apache.commons
  • 만약에 프로젝트가 다중 모듈 프로젝트인 경우 부모의 groupId에 새 식별자를 추가해 사용
    • ex) org.apache.maven, org.apache.maven.plugins, org.apache.maven.reporting

artifact id

  • 버전 없는 jar 파일의 이름
  • 특수 문자 사용금지, 소문자로만 작성 가능
  • 서드파티 jar 파일인 경우라면, 해당되는 이름만 사용해야 됨

version

  • 배포를 하려면 숫자와 점으로 구성된 일반적인 버전(1.0,1.1,1.0.1,…)인 형태를 사용해야 함
  • SNAPSHOT (nightly) 빌드와 관련된 날짜 버전은 사용하지 않음
  • 서드파티 artifact 라면, 그들이 준 버전넘버를 사용해야 됨


grup-id -> maven
artifact-id -> hello_mvaen 입력후 finish



각 파일구조 설명

src/main/java :

  • 자바 소스 파일, 기능 구현 하는 부분


src/main/resources :

  • 보조파일들 , 스프링 설정파일 (xml), 프로퍼티 파일들이 모여있는 디렉터리


(웹어플리케이션 개발시) src/main/webapp :

  • JSP 소스코드 , WEB-INF , web.xml 파일등이 들어있는 디렉터리


Maven Dependencies :

  • 메이븐 의존에 설정한 (다운로드 한) 아티팩트가 이클립스 프로젝트의 클래스패스에 추가된것

  • 여기에 있는 모든 jar 파일들은 메이븐 로컬 리포지토리 폴더에 위치함


pom.xml :

  • 스프링 필요 모듈들을 명시하는 파일
  • 각 모듈들을 명시하면, 원격지의 main repository 에서 자동 다운로드


pom.xml 파일 작성

  • 메이븐 의존 설정 추가
  • 스프링의 각 모듈들을 가져오기 위한 파일이 pom.xml

  • 메이븐은 코드를 컴파일하거나 실행 할때 <dependency>로 설정한 아티팩트 파일을 사용한다.

  • 메이븐이 <dependency> 아티팩트 파일을 구하는 방법 두가지

    • (1). 메이븐 로컬 리포지토리에서 (그룹) \ (아티팩트) \ (버전) 폴더 경로에서 아티팩트ID-버전.jar 형식의 파일이 있는지 검사하고 파일 존재하면 사용

    • (2). 없으면 메이븐 원격 중앙 리포지토리에서 해당 파일을 다운로드, 로컬 리포지토리에 복사한뒤에 파일사용


step 1. pom.xml 파일 열어서, <version> 속성 밑에 다음과 같은 항목 추가
<denpendencies> </dependencies> , <build> </build>


  	<dependencies>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.0.2.RELEASE</version>
		</dependency>
	</dependencies>


  • dependcies : 뜻 그대로 이 모듈에 의존한다는 뜻
  • groupID : org.springframework 에 있는
  • artifacID : spring-context 모듈을 사용
  • version : 사용하려는 모듈의 버전




메이븐 로컬 리포지토리 경로

  • [사용자 홈 폴더] \ .m2 \ repository
  • ex) C:\Users\사용자.m2\repository



dependency(의존성)에 추가한 아티팩트 파일 경로

  • 메이븐 로컬 리포지토리 \ (gruopID) \ (artifactID) \ (version)

  • ex) [사용자 홈 폴더] \ .m2 \ repository \ org \ springframework \ spring-context \ 5.02.RELEASE

  • 메이븐은 필요시에만 그때그때 원격 리포지토리에서 파일을 다운로드 하기때문에 열어보면 파일은 없음



실제로 원격 리포지토리에서 파일이 다운로드 되는지 확인하는 방법

  • CMD 창으로 프로젝트 폴더 이동
  • mvn compile 입력후 엔터
  • 아티팩트 파일 경로에 가서 jar 파일이 생성 되었는지 확인
  • 로컬 리포지토리에 아티팩트 파일을 다운로드 하면 이후에는 원격 리포지토리에서는 다운로드 되지 않음



메이븐 원격 리포지토리

  • 메이븐을 관리하는 아파치 재단이 메이븐 중앙 리포지토리에 아티팩트 파일을 등록하는 방법등을 제공함

  • 스프링을 비롯한 자바 개발에서 사용되는 많은 오픈 소스 프로젝트는 메이븐 중앙 리포지토리에 아티팩트 파일이 등록되어있음



의존 전이 (Transitive Dependencies)

  • Dependency 에서 jar 파일 다운로드 하기에 앞서 pom 파일을 다운로드함

  • pom 파일안에 dependency 속성이 여러개 있어서 필요파일들을 연쇄적으로 다운로드 하는것

  • 의존한 아티팩트가 또다시 의존하고 있는 다른 아티팩드가 있다면 그 아티팩드도 함께 다운로드함



spring-context 의존관계

spring-context

  • spring-core
    • spring-jcl
  • spring-beans
  • spring-aop
    • aspectjweaver (optional)
  • aspectjweaver (optional)



메이븐 임포트가 안되어 있을시 메이븐 임포트 하는방법

  • Maven Dependencies 에 파일이 하나도 없으면 임포트가 안되어 있는것이다.

  • 왼쪽 패키지 탐색기에서 프로젝트 폴더 선택후 [File] -> [import] -> [Exiting Maven Projects]

  • 혹은 프로젝트 폴더 오른쪽 클릭후 Import -> Exiting Maven Projects

  • /porm.xml 체크후 finsih

  • Maven Dependencies 에 jar 파일들이 생겼는지 확인