'Tool/Maven'에 해당하는 글 10건

mvn compile

Tool/Maven 2013. 5. 6. 23:51

mvn archetype:generate 명령으로 프로젝트를 생성했습니다.
Maven in 5 minute 에서는 프로젝트 생성 후에 mvn package 명령으로 main 소스와 test 소스를 모두 컴파일 했습니다.
mvn compile 명령으로 main 소스만 컴파일 할 수 있습니다.

 

$ mvn compile
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myapp 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-resources-plugin:2.5:resources (default-resources) @ myapp ---
[debug] execute contextualize
[WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory /home/maven/myapp/src/main/resources
[INFO]
[INFO] --- maven-compiler-plugin:2.3.2:compile (default-compile) @ myapp ---
[WARNING] File encoding has not been set, using platform encoding UTF-8, i.e. build is platform dependent!
[INFO] Compiling 1 source file to /home/maven/myapp/target/classes
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.378s
[INFO] Finished at: Fri May 03 18:34:06 KST 2013
[INFO] Final Memory: 8M/108M
[INFO] ------------------------------------------------------------------------

 

target/classes 디렉토리에 class들이 컴파일 되었습니다.
마찬가지로 mvn test-compile 명령으로 test 소스만 컴파일 할 수 있으며 이 class들은 target/test-classes 에 위치합니다.
mvn test 명령은 main 소스들을 컴파일하고 test 소스들을 컴파일하고 실행하여 단위 테스트(unit test)를 할 수 있습니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,
mvn archetype:generate 명령으로 프로젝트 디렉토리에 pom.xml 파일이 생성됩니다.
pom.xml 파일에서는 프로젝트 빌드에 관련된 주요 정보와 환경설정이 들어 있습니다.
아래는 간단한 POM 폼 입니다.

 

<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.oops4u.app</groupId>
  <artifactId>app1</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>

  <name>app1</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>

 

  • <project /> pom.xml 파일의 최상위 엘리먼트
  • <modelVersion /> POM의 버전
  • <groupId /> 프로젝트의 핵심 식별자이며 일반적으로 도메인 이름을 사용
  • <artifactId /> artifact의 고유 아이디이며 빌드할 경우 artifactId-version.extension 형태의 artifact가 만들어짐
    (ex: app1-1.0-SNAPSHOT.jar)
  • <packaging /> artifact로 사용될 패키지 형태. jar(기본값), war, ear, ...
  • <version /> artifact 버전. 개발 중에는 SNAPSHOT 지시어가 붙음.
  • <dependencies /> 프로젝트에서 사용할 의존 관계의 라이브러리들을 정의.
  • <name /> 프로젝트의 이름. Maven 문서에 사용.
  • <url /> 프로젝트의 사이트. Maven 문서에 사용.
  • <description /> 프로젝트의 기본 설명. Maven 문서에 사용.

 

이 외에도 <parent />, <plugin />, <repositories />, <build />, <reporting />, <profiles /> 등을 설정할 수 있습니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Archetype

Tool/Maven 2013. 5. 3. 23:35

앞서 프로젝트 구조를 빌드하기 위해 다음의 명령을 입력하였습니다.

 

# mvn archetype:generate \
    -DgroupId=com.oops4u.app \
    -DartifactId=app1 \
    -DarchetypeArtifactId=maven-archetype-quickstart \
    -DinteractiveMode=false

 

제일 앞에 archetype 이란 것이 있는데 이것은 Maven 프로젝트를 템플릿화 해주는 도구입니다.
여기서 템플릿이란 정해놓은 빌드 구조(디렉토리 구조)대로 자동 생성해 주는 것입니다.
groupId는 조직의 고유 아이디(일반적으로 도메인 이름), artifactId 는 프로젝트명 입니다. (groupId + artifactId = package)

 

Archetype 기반의 새로운 프로젝트 생성은 mvn archetype:generate 명령만으로 각 옵션들을 선택하면서 진행할 수도 있습니다.
(옵션 : archetype, groupId, artifactId, version, ...)
템플릿 종류(Archetype artifacts)는 다음과 같습니다.

 

  • maven-archetype-archetype : sample
  • maven-archetype-j2ee-simple : J2EE sample
  • maven-archetype-mojo : Maven plugin sample
  • maven-archetype-plugin : Maven plugin sample
  • maven-archetype-plugin-site : Maven plugin site sample
  • maven-archetype-portlet : JSR-268 Portlet sample
  • maven-archetype-quickstart : Maven project sample
  • maven-archetype-simple : simple Maven project
  • maven-archetype-site : APT, XDoc, FML 등의 문서형식을 지원하는 Maven site sample
  • maven-archetype-site-simple : Maven site sample
  • maven-archetype-webapp : Maven Webapp project sample

 

 

archetype artifact 로 생성되는 여러 디렉토리 구조 중, 아래는 표준 디렉토리 레이아웃입니다.

 

  • src/main/java : 소스
  • src/main/resources : 리소스
  • src/main/filters : 리소스 필터 파일
  • src/main/assembly : 어셈블리 기술자
  • src/main/config : 환경설정 파일
  • src/main/scripts : 스크립트
  • src/main/webapp : 웹 어플리케이션 소스
  • src/test/java : 테스트 소스
  • src/test/resources : 테스트 리소스
  • src/test/filters : 테스트 리소스 필터 파일
  • src/site : 사이트
  • LICENSE.txt : 프로젝트 라이센스
  • NOTICE.txt : 프로젝트가 의존하는 라이브러리의 주의 사항
  • README.txt : 프로젝트 정보

 

프로젝트 최상위 디렉토리에는 src 와 target 디렉토리, 프로젝트 기술자로서 pom.xml / build.xml 등이 있으며,
다중 프로젝트나 CVS, .svn 같은 메타데이터가 존재할 수도 있습니다.

 


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Maven in 5 Minutes

Tool/Maven 2013. 5. 2. 22:49

간단하게 Maven 사용해보기.

 

 

Creating a Project

 

프로젝트를 진행할 디렉토리에서 다음 명령을 입력합니다.

 

# mvn archetype:generate -DgroupId=com.oops4u.app -DartifactId=app1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

 

[INFO] Scanning for projects...
Downloading: http://repo.maven.apache.org/maven2/org/apache/maven/plugins/...
...
...
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

 

Maven 설치 후 첫번째 프로젝트 생성은 중앙 저장소(원격서버 - http://search.maven.org)로부터 가장 최신의 artifacts 를 로컬 저장소로 다운로드 하기 때문에 시간이 조금 걸립니다. 빌드시에도 마찬가지 입니다.
원격 서버로부터 플러그인을 주루룩 다운받았고 artifactId에 지정한 app1이란 이름으로 디렉토리가 생성되었습니다.
프로젝트 디렉토리의 구조는 아래와 같으며 main/java 디렉토리에는 소스 코드를, test/java 디렉토리에는 테스트 소스가 위치합니다.

 

app1
  ├── pom.xml
  └── src
       ├── main
       │    └── java
       │         └── com
       │              └── oops4u
       │                    └── app
       │                         └── App.java
       └── test
            └── java
                 └── com
                      └── oops4u
                            └── app
                                 └── AppTest.java

 

 

Build the Project

 

# mvn package
[INFO] Scanning for projects...
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building app1 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
...
[INFO]
[INFO] --- maven-jar-plugin:2.3.2:jar (default-jar) @ app1 ---
[INFO] Building jar: /home/maven/app1/target/app1-1.0-SNAPSHOT.jar
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------

 

package 페이즈로 프로젝트 디렉토리 안에 target 디렉토리, snapshot.jar 가 생성되었고,
classes 디렉토리에 java 소스들이 컴파일 되었습니다.
빌드된 jar 로 App 파일을 실행해 봅니다.

 

# java -cp target/app1-1.0-SNAPSHOT.jar com.oops4u.app.App
Hello World!


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,

Maven install

Tool/Maven 2013. 4. 30. 23:04

Apache Maven은 POM(Project Object Model) 개념을 기반으로 프로젝트의 빌드, 보고 및 문서를 관리할 수 있습니다.
Maven 은 Java 도구이므로 반드시 Java 가 설치되어 있어야 합니다.

 

 

Download and Install

 

download site - http://maven.apache.org/download.cgi

 

# mkdir -p /usr/local/maven/
# cd /usr/local/src
# wget http://apache.mirror.cdnetworks.com/maven/maven-3/3.0.5/binaries/apache-maven-3.0.5-bin.tar.gz
# tar zxvf apache-maven-3.0.5-bin.tar.gz -C /usr/local/maven

 

 

Environment variable

 

# vi ~/.bash_profile
M3_HOME=/usr/local/maven/apache-maven-3.0.5
M3=$M3_HOME/bin
EXPORT PATH=$M3:$PATH

# source ~/.bash_profile
# mvn --version
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 22:51:28+0900)
Maven home: /usr/local/maven/apache-maven-3.0.5
Java version: 1.7.0_05, vendor: Oracle Corporation
Java home: /usr/local/jdk1.7.0_05/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.18-308.11.1.el5pae", arch: "i386", family: "unix"


WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

,