메이븐 이란?

- 라이브러리에 대한 의존 관계를 관리하고, 프로젝트 빌드에 필효한 기능을 제공하는 역할


메이븐의 기능

1. 빌드

2. 문서화

3. 리포팅

4. 의존 관계

5. 소스 코드 관리

6. 릴리즈

7. 배포


메이븐의 구조


아래는 처음 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>
view rawpom.xml hosted with ❤ by GitHub

출처: http://dahyeee.tistory.com/entry/Maven이란 []


메이븐의 라이프 사이클

- 최정 빌드 순서는 compile -> test -> package

1) compile : src/main/java 디렉터리 아래의 모든 소스 코드가 컴파일 된다.


2) test : src/test/java, src/test/resource 테스트 자원 복사 및 테스트 소스 코드 컴파일

   ** junit : 단위 테스트 프레임워크, 테스트 단계를 거치기 위해 의존 설정을 해줌


3) packaging : 컴파일과 테스트가 완료 된 후, jar나 war같은 형태로 압축하는 작업


'개념정리' 카테고리의 다른 글

WebSocket 이란?  (1) 2018.03.22
pom.xml 과 web.xml  (0) 2018.03.22
SPRING 이란?  (0) 2018.03.22
GET와 POST의 차이 확실히 알고가자!  (0) 2018.03.21
apache와 apache tomcat의 차이  (0) 2018.03.21

+ Recent posts