반응형

Maven 프로젝트를 처음 접하게 되면 무엇부터 해야 할지 막막할 것이다. 먼저, Maven 프로젝트를 빠르게 따라 만들어 보고, 기본적인 부분을 살펴 보자.


프로젝트 생성 및 실행

Maven에서 빠른 시작을 위한 간단한 프로젝트를 생성하여 어플리케이션을 실행 해보자.

전제

Maven을 설치하는 것이 전제가 된다. 설치 게시물의 링크는 다음의 게시물에 게재하고 있다.

Maven : 문서 목록

1단계: 프로젝트 만들기

다음의 명령으로 프로젝트를 만든다.

$ mvn archetype:generate -DgroupId=com.devkuma.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

처음에는 Maven의 자원이 다양하게 다운로드된다.

2단계: 확인

프로젝트의 루트 디렉토리 my-app와 다음 자원이 작성되어 있는지 확인한다.

my-app/pom.xml
my-app/src/main/java/com/devkuma/app/App.java
my-app/src/test/java/com/devkuma/app/AppTest.java

pom.xml는 Maven 프로젝트 설정 파일이다.

3단계: 응용 프로그램의 jar 작성 및 실행

다음의 명령으로 jar를 생성하고 실행한다.

$ cd myapp
$ mvn package
$ java -cp target/my-app-1.0-SNAPSHOT.jar com.devkuma.app.App

App 클래스의 실행 결과로 다음 문자열이 화면에 출력된다.

Hello World!

참고 문헌

Maven in 5 Minutes



인코딩 및 컴파일러 설정

이전에 "프로젝트 생성 및 실행"에서 만든 pom.xml을 편집하고, 인코딩 및 컴파일러의 버전을 설정해보자

보충

이전의 mvn package명령을 실행하면 다음과 같은 경고가 발생했다 (Win 환경).

···
[WARNING] Using platform encoding (MS932 actually) to copy filtered resources, i.e. build is platform dependent!
···
[WARNING] File encoding has not been set, using platform encoding MS932, i.e. build is platform dependent!
···

이번 설정을 하면, 경고가 사라지게 된다.

1.변경 전의 pom.xml

이전에 프로그램을 생성했다면 다음 pom.xml이 생성되어 있을 것이다.

my-app/pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.devkuma.app</groupId>
  <artifactId>my-app</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>my-app</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

2. 변경 후 pom.xml

pom.xml을 편집하여 다음 내용을 저장한다.

my-app/pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.devkuma.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
</project>

주요 변경 내용

properties를 추가하여 인코딩을 UTF-8 하고, 컴파일러 버전을 1.8로 설정한다. 자세한 내용은 다음과 같다.

  • project.build.sourceEncoding : 소스 속성 파일 등의 인코딩 설정
  • project.reporting.outputEncoding : 보고서 등의 출력 자원의 인코딩 설정
  • maven.compiler.source : javac 명령 -source 설정
  • maven.compiler.target : javac 명령의 -target 설정

기타 변경 사항

  • 빈 줄 추가
  • 새로운 junit 버전(4.12)으로 변경
  • name, url 태그 삭제 (지금은 불필요)

3. package 명령의 실행

경고가 나오지 않는 것을 다음 명령으로 확인해 보자.

$ mvn clean package

만약을 위해 이전의 자원을 clean으로 삭제한다.




Eclipse에 가져오기(import)

이전 인코딩 및 컴파일러 설정 에서 만든 프로젝트를 Eclipse로 가져와서 (가져와)보고 있습니다.

보충

Eclipse의 설치는 아래 링크에서 다운받아서 설치하면 된다. Eclipse를 사용하지 않는 경우, 여기는 보지 않아도 된다.

https://www.eclipse.org/downloads/

단계 1. 마법사보기

기존 Maven 프로젝트 가져오기 마법사를 표시한다.

우선, File 메뉴의 Import ...를 클릭한다.

새 창이 표시되면, Existing Maven Projects를 선택하고 Next 버튼을 클릭한다.


단계 2. 가져 오기 실행

다음 화면의 Root Directory에서 마지막까지 만든 my-app 디렉토리를 선택한다.


Browse 버튼을 눌러 디렉토리를 선택하는 창이 나타난다. Projects의 pom.xml에 체크가 들어간 것을 확인하고 Finish 버튼을 누릅니다.

단계 3. 확인

패키지 탐색기(package explorer)에 my-app이 표시되는지 확인한다.

java는 1.8으로, junit 4.12도 의존성에 추가되어 있다.



의존성 추가

Maven의 pom.xml을 편집하여, 의존성 (jar)를 추가해 보려고 한다. 의존성을 추가하면 Maven 빌드 jar이 클래스 경로에 추가된다.

이번은 예로써, 로그 관련 jar (slf4j-api, logback-classic)을 추가해 본다.

단계 1. pom.xml 편집

이전 인코딩 및 컴파일러 설정의 pom.xml을 편집하여 dependency를 2 개 추가한다.

my-app/pom.xml

<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">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.devkuma.app</groupId>
  <artifactId>my-app</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <dependencies>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.21</version>
    </dependency>
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.1.7</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
</project>

junit 위에 추가한다. 그 외에 부분은 변경하지 않는다.

단계 2. App 클래스 편집

프로젝트를 생성할 때에 생겼던 App 클래스를 편집한다.

my-app/src/main/java/com/devkuma/app/App.java

package com.devkuma.app;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class App {
  private static final Logger log = LoggerFactory.getLogger(App.class);
  public static void main(String[] args) {
    log.info("Hello!");
    System.out.println("Hello World!");
  }
}

다음 행을 추가한다.

  • private static final Logger log...
  • log.info("Hello!");

단계 3. 실행

어플리케이션을 실행하면 다음과 같이 표시된다.

08 : 07 : 23.818 [main] INFO com.devkuma.app.App - Hello!
Hello World!

첫 번째 줄은 slf4j-api와 logback-classic을 사용하여 출력 된 로그이다.



페이즈(Phase)

Maven 빌드에는 "라이프 사이클 (Build Lifecycle)"라는 개념이 있고, 라이프 사이클에는 몇 가지"페이즈 (Phase)"가 있다.

라이프 사이클

Maven에는 3 개의 라이프 사이클가 포함되어 있다.

  1. default : 프로젝트 빌드 및 배포를 담당
  2. clean : 프로젝트의 클린(빌드 자원 삭제)를 담당
  3. site : 프로젝트 사이트 생성 (문서)를 담당

이번에는 default의 페이즈를 중심으로 작성해 가려고 한다.

default의 페이즈

default 주요 페이즈는 다음과 같다.

  • validate
  • compile
  • test
  • package
  • verify
  • install
  • deploy

모든 페이즈는 Lifecycle Reference에 나와 있습니다.

mvn 명령 및 페이즈

문서의 프로젝트 생성 및 실행에서 jar를 생성하기 위해 다음 명령을 실행했었다.

> mvn package

이것은 default 라이프 사이클의 package 페이즈를 실행하게 되면, 그 결과로 jar가 생성되었다.

페이즈의 실행 순서

위와 같이 package 페이즈를 실행하면 이전 페이즈 (validate, compile, test, etc)가 실행되게 한다.

테스트를 실행하려면,

$ mvn test

그리고, 그 이전 페이즈 (validate, compile, etc)가 실행된다.

여러 페이즈 실행

mvn 명령은 여러 페이즈를 인수로 입력 할 수 있다.

$ mvn clean deploy

위의 명령어는 clean 명령을 실행하고 deploy가 실행된다.

반응형

'Maven' 카테고리의 다른 글

[Maven] Web 응용 프로그램 개발  (0) 2017.12.23
[Maven] Java 응용 프로그램 개발  (0) 2017.12.23
[Maven] pom.xml 파일 기본  (0) 2017.12.23
[Maven] Maven 프로젝트 작성  (0) 2017.12.23
[Maven] Maven 빠르게 시작(퀵 가이드)  (0) 2017.12.23
[Maven] Maven 준비  (0) 2017.12.23

+ Recent posts