- 전자정부프레임워크에서 기본적으로 maven 사용
- 빌드와 배포를 위한 툴
- 장점 : template프로젝트, jar파일 쉽게 가지고 놀 수 있다.
- 소스개발에서 최종 사용자에게 전달될때까지의 전 과정
- 프로젝트의 생명주기 전체를 아우르는 행위
- 각각 단계 하나하나를 phase으로 쪼갠다
- 프로젝트의 규모가 클수록 정형화된 개발환경, 다양한 라이브러리의 의존성 관리, 코드 품질 관리 및 결함 관리등의 필요성이 제기
- WEB-INf lib 폴더안에 jar파일들을 쉽게 가져와서 손쉽게 관리
- 전체 빌드과정은 그 주체에 따라 개인필드와 통합필드로 구성
메이븐 설치
[1] 메이븐 설치 파일 다운로드
[2] maven설치
[3] 환경변수 설정
[4] 설치확인 cmd -> mvn -version
[5] 이클립스&메이븐 연동
- jar을 받을때 직접 다운로드 받지 않고
한곳에 일괄적으로 관리하는 방법- local에 있는 저장소가 필요하다
파생된 jar중 내가 쓸 jar 찾는 방법
아파치의 커먼스 io를 가져오는 예시
window 메뉴 -> Preferences -> Maven -> Installations -> Add -> %M2_HOME%
window 메뉴 -> Preferences -> Maven -> User settings -> open file -> Local Repository 위치 설정
open_file -> settings.xml, loaclRepository 경로 확인
Maven이 제공해주는 템플릿 프로젝트를 만들고 각 phase를 지원할 수 있는 플러그인을 받아온다. 만들어진 프로젝트는 로컬저장소에 저장된다.
Maven에선 모든것을 POM으로 관리한다.
하나의 프로젝트를 관리할때 이를 객체형태로 로딩하는데 각 행동이라는 단계를 phase라고 하고 아래 5개가 pahse
소스라는 산출물이 나오면 이를 판별하고 파일이 만들어지고 마지막으로 패키징한다. 각 과정마다 지원하는 플러그인이 다름
이 그림에서 구별시킴
우리가 이전에 작업한 소스, 자바독을 인스톨레이션에 설정했던 부분이 필요없다.
마샬링 또한 잭슨이라는 라이브러리가 필요했는데
UI로도 추가 가능하다.
우리가 필요한건 jar인데 bundle이 있다
선택하고 OK
타입을 지워주고 저장하면 jar가 들어간다.
중앙저장소에서 검색해도 잘 안나오면
Maven저장소 사이트2
이 사이트에 접속해 검색한다
스크립트 copy->save 의존성 관리 가능
원래 HelloMaven.class가 있었는데
clean으로 Goals를 설정해주면
HelloMaven.class 사라져있다
같은기능
Goal : complie로 설정
complie ->> 빌드 끝
이제 압축(패키징)이 필요하다
자동으로 플러그인을 받아오는데
컴파일 되는것을 볼수있다
이는 공정단계에서 필요한 단계이기때문에
일단 테스트에 에러가 없는지 확인후 공정이 진행
체크
Packaging : war 선택
기본 다이나믹웹과 비슷한데 이상한 점은 WebContent폴더가 없다
바로 이곳이 WebContent와 같은 역할을 한다
html css js image들을 이쪽에 넣는다
그런데 web.xml이 없어서 에러가 나있다
xml이 없다면 true로 설정하라고 설명
Effective POM을 보면 웹구조를 만들어주는 플러그인이 이 플러그인데, 이 플러그인을 넣어줘야한다
또한 버전도 바꿔줘야한다.
업데이트 프로젝트
이런식으로 프로퍼티를 이용할 수도 있다
그럼 버전만 설정해주면 된다
업데이트까지 완료하면 에러는 사라진다
web.xml을 사용안하려면 이녀석이 3점대여야함
지금은 2.5
프로젝트 alt+enter -> project facets
Dynamic Web Module 3.1버전으로 변경
적용해도 바뀌진 않는다
강제로 읽을 수 있도록 해준다
xml이 만들어짐
ctrl+shift+F
web.xml을 delete하면 3.1로 바뀌어져있다
이후 한번 더 하면
3.1로 바뀐걸 볼 수 있다
근데 아파치 톰캣이 없다
pom.xml에 넣자
pom.xml, Maven Dependencies에 추가댐 근데 개발할땐 얘를 사용해야한다
<scope>provided</scope>
추가
앞으로 이 컴파일 스코프를 가장 많이 이용함
provided는 배포시에 버리겠다는 뜻
참고
얘는 테스트용이며 배포가 되지 않음
이 둘에서만 가능
얘넨 불가 이게 스코프를 쓰는 이유
다시 돌아가서
Scope: compile 을 provided로 바꾸고 OK -- 배포시에 버리겠다!
잠깐 Tomcat안에 있는 프로젝트 삭제하고 claen
webapp -01폴더 생성 - sample.jsp 생성
컨텍스트패스가 저렇게 잡힌다
lib가 없다
근데 이클립스내부서버에는 있다
얘는 비어있다
pom.xml에서 설정한 jar는 들어가있는데
나머지 두개를 provided로 적용되어서 배포가 안된걸 볼 수 있다
maven clean
maven install
타겟인데 war로 되어있음
이 war파일만 배포서버에 가져다 놓으면 완료
너무 유용해요 두고두고 봐야겠어요 ~!!