티스토리 뷰
메이븐이란?
라이브러리에 대한 의존 관계를 관리, 프로젝트 빌드에 필요한 기능을 제공하는 역할을 합니다!
메이븐이 지원하는 기능에는?
- 빌드
- 문서화
- 리포팅
- 의존 관계
- 소스 코드 관리
- 릴리즈
- 배포
eclipse로 웹 개발을 하다가 마주하게 된 pom.xml..
처음 봤을 때는 이게 무슨 외계어인가 싶었습니다. '자바 세상의 빌드를 이끄는 메이븐' 이라는 책을 읽으면서 더욱 친숙해 질 수 있었던 maven!
maven은 eclipse에 기본으로 탑재되어 있다고 합니다! (메이븐 = pom.xml)이라는 말이 있습니다.
maven의 구조
아래는 처음 spring project를 생성하게 되면 기본적으로 생성되는 pom.xml파일 입니다.
<?xml version="1.0" encoding="UTF-8"?> | |
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <!-- <project> : pom파일 최상위 element --> | |
<modelVersion>4.0.0</modelVersion> <!-- pom의 model version --> | |
<groupId>com.test</groupId> <!-- 프로젝트 조직의 고유 아이디, 일반적으로 도메인 이름을 쓴다 --> | |
<artifactId>test</artifactId> <!-- 프로젝트를 식별하는 고유 아이디 --> | |
<!-- groupId + artifactId 는 유일한 값이어야 한다. --> | |
<name>test</name> <!-- 프로젝트 이름 --> | |
<packaging>war</packaging> <!-- 여기에서 war은 웹 어플리케이션을 의미. jar이면 일반 어플리케이션이다! --> | |
<version>1.0.0-BUILD-SNAPSHOT</version> <!-- 프로젝트 현재 버전, SNAPSHOT은 메이븐의 예약어이다. --> | |
<properties> | |
<!-- properties 안에 있는 정보는 버전 정보를 동일하게 사용하기 위해 리펙토링 하는 부분. --> | |
<java-version>1.6</java-version> | |
<org.springframework-version>3.1.1.RELEASE</org.springframework-version> | |
<org.aspectj-version>1.6.10</org.aspectj-version> | |
<org.slf4j-version>1.6.6</org.slf4j-version> | |
</properties> | |
<dependencies> | |
<!-- dependencies태그 안에는 프로젝트와 의존 관계에 있는 라이브러리들을 관리합니다. | |
아래 보이는 것과 같이 spring, log, servlet과 같은 라이브러리는 자동적으로 스프링 프로젝트를 생성하면 | |
생성되는 dependency이다. --> | |
<!-- Spring --> | |
<dependency> | |
<groupId>org.springframework</groupId> | |
<artifactId>spring-context</artifactId> | |
<version>${org.springframework-version}</version> | |
<exclusions> | |
<!-- Exclude Commons Logging in favor of SLF4j --> | |
<exclusion> | |
<groupId>commons-logging</groupId> | |
<artifactId>commons-logging</artifactId> | |
</exclusion> | |
</exclusions> | |
</dependency> | |
<!-- AspectJ --> | |
<!-- Logging --> | |
<!-- Servlet --> | |
<!-- Test --> | |
</dependencies> | |
<build> | |
<!-- build태그 안에는 프로젝트 빌드와 관련된 디렉토리 구조, 빌드 시 사용할 plugin정보를 관리한다. --> | |
<plugins> | |
<plugin> | |
<artifactId>maven-eclipse-plugin</artifactId> | |
<version>2.9</version> | |
<configuration> | |
<additionalProjectnatures> | |
<projectnature>org.springframework.ide.eclipse.core.springnature</projectnature> | |
</additionalProjectnatures> | |
<additionalBuildcommands> | |
<buildcommand>org.springframework.ide.eclipse.core.springbuilder</buildcommand> | |
</additionalBuildcommands> | |
<downloadSources>true</downloadSources> | |
<downloadJavadocs>true</downloadJavadocs> | |
</configuration> | |
</plugin> | |
<plugin> | |
<groupId>org.apache.maven.plugins</groupId> | |
<artifactId>maven-compiler-plugin</artifactId> | |
<version>2.5.1</version> | |
<configuration> | |
<source>1.6</source> | |
<target>1.6</target> | |
<compilerArgument>-Xlint:all</compilerArgument> | |
<showWarnings>true</showWarnings> | |
<showDeprecation>true</showDeprecation> | |
</configuration> | |
</plugin> | |
<plugin> | |
<groupId>org.codehaus.mojo</groupId> | |
<artifactId>exec-maven-plugin</artifactId> | |
<version>1.2.1</version> | |
<configuration> | |
<mainClass>org.test.int1.Main</mainClass> | |
</configuration> | |
</plugin> | |
</plugins> | |
</build> | |
</project> |
maven의 라이프사이클
최종적인 빌드 순서는 compile-> test->package이다.
1) compile : src/main/java 디렉토리 아래의 모든 소스 코드가 컴파일 된다.
2) test : src/test/java, src/test/resources 테스트 자원 복사 및 테스트 소스 코드 컴파일 된다.
* junit : 단위 테스트 프레임워크. 테스트 단계를 거치기 위해 의존 설정을 해준다.
3) packaging : 컴파일과 테스트가 완료 된 후, jar, war 같은 형태로 압축하는 작업.
*프로젝트를 처음 시작할때가 두번째 시작할때보다 느린 이유는 처음 실행할때 관련된 라이브러리를 다운로드 받기 때문입니다.
*짝프로그래밍 : 두 명 이상이 짝을 지어서 프로젝트를 하는 것. (책에 나왔던 단어라 정리!)
참고: '자바 세상의 빌드를 이끄는 메이븐' - 박재성
'programming > JAVA와 maven' 카테고리의 다른 글
[JAVA] 익명클래스 (0) | 2017.04.06 |
---|---|
[JAVA] 내부클래스 (0) | 2017.04.05 |
[JAVA] interface (default, static메소드) (2) | 2017.04.03 |
- Total
- Today
- Yesterday
- 알고스팟
- 요나스요나슨
- 킬러안데르스와그의친구둘
- 넌클러스터인덱스
- 중첩클래스
- servlet
- 백준
- 시스템 카탈로그
- Spring
- 익명중첩클래스
- boj
- smarteditor2
- tcp/ip monitor
- 익명클래스
- 데이터베이스 문제
- 알고리즘문제해결전략
- aoj
- java
- static클래스
- jsp
- 알고리즘
- url mapping
- 클러스터인덱스
- Eclipse
- 비식별
- 백준저지
- 연애가끝났다
- 지역중첩클래스
- 인스턴스클래스
- 낭만적연애와그후의일상
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |