[Maven] 메이븐 개념 정리
Apache Maven(프로젝트 관리 도구)
- Ant : 자동화 스크립트
- Gradle : Maven 대신 요즘 많이 사용되는 프로젝트 관리 도구
1. 목표와 특징
(1) 빌드 절차를 간소화
- 통합된 빌드 시스템을 제공
(2) Qulity Project Information 제공
- 개발에 있어서 Best Practice를 위한 지침 제공
(3) 프로젝트 관리 도구
(4) 모듈간의 의존성을 관리하는 매커니즘을 제공
(5) 소스코드의 디렉토리 구조를 표준화 시켜준다.
2. 개념
(1) Project Object Model(POM)
- Maven은 XML에 Project에 대한 정보를 기술
(2) Dependency Management Model
- 모듈간의 참조를 위한 dependency를 관리하는 방법이 표준화 되어 있다.
- pom.xml에 의존하는 모듈만 기술하면 된다.
(3) Build Lifecycle & phase
3. Maven의 Repository
(1) Local Repository
.m2
(2) Remote Repository
주로 http://mvnrepository.com
별도로 서버를 만들 필요가 없다.
4. 프로젝트 생성
mvn archetype:generate -DgroupId=kr.co.test(보통그룹아이디는 회사도메인) -DartifactId(산출물,결과물 프로젝트)=sample -DarchetypeArtifactId(프로젝트의 종류)=maven-archetype-quickstart(메이븐에서 준비해놓은것을 쓰겠다)
mvn archetype:generate -DgroupId=kr.co.test -DartifactId=sample -DarchetypeArtifactId=maven-archetype-quickstart
mvn compile (반드시 pom.xml있는 위치에서 실행)
mvn package
mvn clean 소스만 남기고 삭제
mvn install
mvn claen package
mvn deploy 이건 서버에 올리는데 응용프로그램임
전체적인 프로젝트관리를 하나의 명령어로 사용 가능
단계적으로할필요없음 package를 하면 compile이됨
install을 하면 package랑 comlie 둘다됨
mvn archetype:generate -DgroupId=kr.co.test -DartifactId=sampleWeb -DarchetypeArtifactId=maven-archetype-webapp
tree sampleWeb
(1) 구조
src는 불변
main
java
resources
fileters
assembly
config
webapp
test
site
5. pom.xml
(1) 프로젝트의 모든 정보를 기술
(2) Ant의 build.xml과 비교
(3) 구석요소
1) 프로젝트 정보들(GroupId, ArtifactId, Packageing...)
2) 이슈 관리 및 빌드 서버 정보
3) 개발자 정보, 메일링 리스트, 기여자 목록
4) 버전 관리 및 서버 정보
5) 빌드 및 리포팅 정보
6) 프로필 정보
7) 레포지토리 정보
8) 라이센스 및 조직 정보
9) Dependency정보
10) 배포 관리 정보
11) POM내부에서 사용하는 속성 정보
대충 모든 정보가 들어간다고 보면된다.