들어가며

  1. OS X 10.10(요세미티)에서 Maven을 설치하고 기본적인 사용방법을 알아보자.
  2. 간단한 샘플 프로젝트를 몇개 만들어 보자. 여기 있는 샘플들은 http://books.sonatype.com/mvnex-book/reference/index.html에 있는 것임. 전체코드는 링크를 참조하고 여기에 실린 스니핏(snippet) 코드들은 조금 수정된 내용이 있음.
  3. What is Apache Maven: 정의는 홈페이지에 잘 나와있음.
  4. 꼭 필요한 내용만 있으므로 한 줄도 빼지말고 읽어야 한다.

설치

  1. 2015년 9월 maven현재 버전은 3.3.3

  2. JDK 1.7이상이 필요하다. 아래처럼 java버전 확인해 본다.
     $ java -version
     java version "1.8.0_60"
     Java(TM) SE Runtime Environment (build 1.8.0_60-b27)
     Java HotSpot(TM) 64-Bit Server VM (build 25.60-b23, mixed mode)

    JAVA_HOME path도 설정 확인 한다. : 아래 5번 참조.

  3. Maven 다운로드 하기: http://maven.apache.org/download.cgi

  4. 다운 받아서 압축 풀고 Users/{user name} 폴더에 복사한다. 어디에 복사하던 PATH지정할때 위치를 지정해 주면 된다.
     $ ls -Gl
     total 0
     drwxr-xr-x   5 onlydel  staff   170 Sep 20 01:26 Applications
     drwxr-xr-x@  4 onlydel  staff   136 Sep 23 09:13 Applications (Parallels)
     drwxr-xr-x  10 onlydel  staff   340 Sep 22 20:40 Codes
     drwx------+  5 onlydel  staff   170 Sep 22 15:11 Desktop
     drwx------+ 19 onlydel  staff   646 Sep 21 13:29 Documents
     drwx------+ 27 onlydel  staff   918 Sep 24 02:00 Downloads
     drwx------@ 19 onlydel  staff   646 Sep 22 15:10 Google Drive
     drwx------@ 51 onlydel  staff  1734 Sep 20 22:27 Library
     drwx------+  3 onlydel  staff   102 Sep 19 08:26 Movies
     drwx------+ 10 onlydel  staff   340 Sep 24 09:42 Music
     drwx------+  6 onlydel  staff   204 Sep 22 23:45 Pictures
     drwxr-xr-x+  5 onlydel  staff   170 Sep 19 08:26 Public
     drwxr-xr-x   3 onlydel  staff   102 Sep 23 16:33 Services
     drwxr-xr-x  11 onlydel  staff   374 Sep 22 20:19 apache-maven-3.3.3
     drwxr-xr-x   3 onlydel  staff   102 Sep 22 10:13 eclipse
  5. 프로파일에 PATH를 추가한다. OS X 10.10 에서는 ~/.bash_profile 파일에 추가해 준다. M2_HOME Alias를 만들고 위에서 복사한 경로를 지정해 준다음 /bin폴더를 PATH에 추가해 준다.
     $ nano ~/.bash_profile
    
     [[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
    
     [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell se$
    
     export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home
    
     export M2_HOME=/Users/onlydel/apache-maven-3.3.3
     export PATH=$PATH:$M2_HOME/bin
    
     # 콘솔에서 mvn 실행할때 INFO, WARNING, ERROR 를 색깔로 구분하기 위한 스크립트실행
     source $M2_HOME/colorize-maven.sh

    위 문서에서 colorize-maven.sh 스크립트 소스코드는 https://gist.github.com/mike-ensor/1881211에 있고, 한 가지 주의할 점은 코드의 78라인에서 'xterm-color' 부분은 본인이 사용하는 터미널프로그램의 설정에서 확인해야 한다. 혹시 ansi로 되어 있다면 xterm-color로 바꿔주고 xterm-256color로 되어 있다면 코드를 'xterm-256color'로 바꿔주면 된다.
    요세미티의 Terminal앱이나 iTerm2앱의 경우 기본값이 xterm-256color로 되어 있다.

  6. maven 설치가 잘 되었는지 확인 한다.
     $ mvn -v
     Apache Maven 3.3.3 (7994120775791599e205a5524ec3e0dfe41d4a06; 2015-04-22T20:57:37+09:00)
     Maven home: /Users/onlydel/apache-maven-3.3.3
     Java version: 1.8.0_60, vendor: Oracle Corporation
     Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre
     Default locale: en_US, platform encoding: UTF-8
     OS name: "mac os x", version: "10.10.5", arch: "x86_64", family: "mac"

    command not found 오류가 나면 M2_HOME PATH를 다시 확인해 본다.

  7. maven을 삭제하려면 설치한 maven폴더를 삭제하고 profile에 입력한 경로정보를 지우면 된다. ~/.m2폴더는 maven의 local repository폴더 이므로 이것도 같이 삭제하면 끝.

프로젝트

Simple Project 1

소스코드 다운로드: http://www.sonatype.com/books/mvnex-book/mvnex-examples.zip

프로젝트 생성

새로운 maven프로젝트를 생성할때 Archetype plugin을 사용할 수 있다.

mvn archetype:generate를 실행하면 선택할 수 있는 archetype이 나열된다.

이 문서를 작성하는 시점에 1400개 가까이 되는 archetype이 표시되는데 이 목록은 maven이 release될때 마다 변경될 수 있으며, 번호도 바뀔수 있다고 하니 번호를 직접 입력하여 프로젝트를 생성할 때에는 주의 해야 한다.

$ mvn archetype:generate -DgroupId=com.steam.mavenpack -DartifactId=simple -Dpackage=com.steam.mavenpack -Dversion=1.0-SNAPSHOT

위 명령을 Command line에 입력하면 아래와 같이 mvn이 실행 된다.

[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Maven Stub Project (No POM) 1
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-archetype-plugin:2.4:generate (default-cli) > generate-sources @ standalone-pom >>>
[INFO]
[INFO] <<< maven-archetype-plugin:2.4:generate (default-cli) < generate-sources @ standalone-pom <<<
[INFO]
[INFO] --- maven-archetype-plugin:2.4:generate (default-cli) @ standalone-pom ---
[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> am.ik.archetype:maven-reactjs-blank-archetype (Blank Project for React.js)
2: remote -> am.ik.archetype:msgpack-rpc-jersey-blank-archetype (Blank Project for Spring Boot + Jersey)
3: remote -> ...
...
637: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
...
1394: remote -> us.fatehi:schemacrawler-archetype-plugin-command (-)
1395: remote -> us.fatehi:schemacrawler-archetype-plugin-dbconnector (-)
1396: remote -> us.fatehi:schemacrawler-archetype-plugin-lint (-)

Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 637: 
Choose org.apache.maven.archetypes:maven-archetype-quickstart version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1

Choose a number: 6: 
[INFO] Using property: groupId = com.steam.mavenpack
[INFO] Using property: artifactId = simple
[INFO] Using property: version = 1.0-SNAPSHOT
[INFO] Using property: package = com.steam.mavenpack
Confirm properties configuration:
groupId: com.steam.mavenpack
artifactId: simple
version: 1.0-SNAPSHOT
package: com.steam.mavenpack

 Y: : [INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: basedir, Value: /Users/onlydel/Codes/Eclipse/MavenProjects
[INFO] Parameter: package, Value: com.steam.mavenpack
[INFO] Parameter: groupId, Value: com.steam.mavenpack
[INFO] Parameter: artifactId, Value: simple
[INFO] Parameter: packageName, Value: com.steam.mavenpack
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: /Users/onlydel/Codes/Eclipse/MavenProjects/simple
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 48.159 s
[INFO] Finished at: 2015-09-24T20:34:20+09:00
[INFO] Final Memory: 14M/265M
[INFO] ------------------------------------------------------------------------

이번 프로젝트 생성에 사용할 archetype은 기본값인 org.apache.maven.archetypes:maven-archetype-quickstart 이다. 번호선택 화면에서 enter키를 치면 기본값인 637이 선택되고 버전을 선택하는 화면이 나온다. 버전도 기본값으로 6을 선택하고 enter키 ,
이제 입력한 속성값들이 맞는지 확인하는 화면이 나온다. 일단 enter키,

BUILD SUCCESS가 나오면 프로젝트가 제대로 생성된것임.

$ tree
.
└── simple
    ├── pom.xml
    └── src
        ├── main
        │   └── java
        │       └── com
        │           └── steam
        │               └── mavenpack
        │                   └── App.java
        └── test
            └── java
                └── com
                    └── steam
                        └── mavenpack
                            └── AppTest.java

12 directories, 3 files

프로젝트 생성이 정상적으로 완료되면 simple이라는 이름의 하위 폴더가 생기고 위와 같은 구조의 폴더들이 생성된다.

위와 같은 tree app은 $ brew install tree 로 설치할 수 있다.

참조