하둡2.2.0을 윈도우7에 설치해서 실행에 성공한 블로거의 글이 있네요.
일단 링크 남기고 시간내서 돌려봐야 할 것 같습니다.
Protocol Buffers 2.5.0이 있는 것으로 봐서는 소스를 받아서 빌드까지 한 것 같습니다.
하둡2.2.0을 윈도우7에 설치해서 실행에 성공한 블로거의 글이 있네요.
일단 링크 남기고 시간내서 돌려봐야 할 것 같습니다.
Protocol Buffers 2.5.0이 있는 것으로 봐서는 소스를 받아서 빌드까지 한 것 같습니다.
build.gradle에 다음 한 줄만 추가하면 됩니다.
apply plugin: 'eclipse-wtp'
gradle build로 실행하면 .project, .classpath 두 파일이 생깁니다.
total 48
drwxr-xr-x 11 kenu staff 374 10 21 23:35 .
drwxr-xr-x 11 kenu staff 374 10 20 15:24 ..
-rw-r--r-- 1 kenu staff 1358 10 21 23:35 .classpath
drwxr-xr-x 3 kenu staff 102 10 21 23:35 .gradle
-rw-r--r-- 1 kenu staff 355 10 21 23:35 .project
drwxr-xr-x 3 kenu staff 102 10 21 23:35 .settings
-rw-r--r-- 1 kenu staff 228 10 21 23:35 build.gradle
drwxr-xr-x 3 kenu staff 102 10 20 15:04 gradle
-rwxr-xr-x 1 kenu staff 5080 10 20 15:04 gradlew
-rw-r--r-- 1 kenu staff 2404 10 20 15:04 gradlew.bat
drwxr-xr-x 4 kenu staff 136 10 20 14:59 src
이클립스에서 이 디렉토리 지정하고 import 하시면 됩니다.
gradle 빌드로 테스트케이스를 실행할 수 있습니다.
src/main 이 아닌 src/test/java/hello 폴더에 GreeterTest.java 클래스를 만듭니다.
파일 첨부합니다.
.
├── build.gradle
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
├── main
│ └── java
│ └── hello
│ ├── Greeter.java
│ └── HelloWorld.java
└── test
└── java
└── hello
└── GreeterTest.java
GreeterTest.java 내용은 다음과 같습니다.
package hello;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import org.junit.*;
public class GreeterTest {
@Test
public void sayHello() {
Greeter greeter = new Greeter();
assertThat(greeter.sayHello(), is("Hello world!"));
}
}
build.gradle 파일에는 junit.jar 파일을 추가합니다.
apply plugin: 'java'
repositories { mavenCentral() }
dependencies {
compile "joda-time:joda-time:2.2"
testCompile "junit:junit:4.11"
}
testCompile로 지정한 jar의 경우 최종 결과물에는 포함되지 않습니다. build 폴더를 보면 reports 폴더가 생기고 test 결과가 있습니다.
.
├── build
│ ├── classes
│ │ ├── main
│ │ │ └── hello
│ │ │ ├── Greeter.class
│ │ │ └── HelloWorld.class
│ │ └── test
│ │ └── hello
│ │ └── GreeterTest.class
│ ├── dependency-cache
│ ├── libs
│ │ └── gradle-start.jar
│ ├── reports
│ │ └── tests
│ │ ├── base-style.css
│ │ ├── css3-pie-1.0beta3.htc
│ │ ├── hello.GreeterTest.html
│ │ ├── hello.html
│ │ ├── index.html
│ │ ├── report.js
│ │ └── style.css
│ ├── test-results
│ │ ├── TEST-hello.GreeterTest.xml
│ │ └── binary
│ │ └── test
│ │ ├── output.bin
│ │ ├── output.bin.idx
│ │ └── results.bin
│ └── tmp
│ └── jar
│ └── MANIFEST.MF
index.html 파일을 브라우저로 열어보면 다음과 같습니다.
gradle에 대한 권남님의 블로그를 추천합니다.
http://wiki.kwonnam.pe.kr/gradle/java
gradle이 설치되지 않은 경우 실행이 가능하도록 실행스크립트를 더해줍니다. build.gradle 파일에 gradle의 버전을 지정합니다.
task wrapper(type: Wrapper) {
gradleVersion = '1.8'
}
위 내용이 추가되면 gradle wrapper 라는 명령으로 빌드스크립트를 생성합니다. gradlew 파일이 생성됩니다. 윈도우용과 리눅스용이 같이 생깁니다.
gradle wrapper
:wrapper
BUILD SUCCESSFUL
Total time: 4.893 secs
├── gradle
│ └── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
└── main
└── java
└── hello
├── Greeter.java
└── HelloWorld.java
만들어진 gradlew 파일을 실행하면 다음과 같습니다.
./gradlew build
Downloading http://services.gradle.org/distributions/gradle-1.8-bin.zip
..................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................
Unzipping /Users/kenu/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8/gradle-1.8-bin.zip to /Users/kenu/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8
Set executable permissions for: /Users/kenu/.gradle/wrapper/dists/gradle-1.8-bin/vruqmccc8532n7gr46qavsii8/gradle-1.8/bin/gradle
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 20.926 secs
참고: http://spring.io/guides/gs/gradle/#build-your-project-with-gradle-wrapper
위 글에 이어집니다.
HelloWorld.java를 다음과 같이 수정합니다.
package hello;
import org.joda.time.LocalTime;
public class HelloWorld {
public static void main(String[] args) {
LocalTime currentTime = new LocalTime();
System.out.println("The current local time is: " + currentTime);
Greeter greeter = new Greeter();
System.out.println(greeter.sayHello());
}
}
joda의 LocalTime 클래스를 사용합니다.
이 상태에서 gradle build 를 실행하면 다음과 같은 에러 메시지를 만나게 됩니다.
gradle build
:compileJava
/Users/kenu/tmp/gradle-start/src/main/java/hello/HelloWorld.java:3: error: package org.joda.time does not exist
import org.joda.time.LocalTime;
^
/Users/kenu/tmp/gradle-start/src/main/java/hello/HelloWorld.java:7: error: cannot find symbol
LocalTime currentTime = new LocalTime();
^
symbol: class LocalTime
location: class HelloWorld
/Users/kenu/tmp/gradle-start/src/main/java/hello/HelloWorld.java:7: error: cannot find symbol
LocalTime currentTime = new LocalTime();
^
symbol: class LocalTime
location: class HelloWorld
3 errors
:compileJava FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler error output for details.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.239 secs
build.gradle 파일에 필요한 jar 파일을 명시합니다.
apply plugin: 'java'
repositories { mavenCentral() }
dependencies {
compile "joda-time:joda-time:2.2"
}
다시 gradle build 를 실행하면 joda-time-2.2.jar 파일을 인터넷을 통해 maven central 저장소에서 자동으로 다운로드 받아서 빌드합니다.
gradle build
:compileJava
Download http://repo1.maven.org/maven2/joda-time/joda-time/2.2/joda-time-2.2.pom
Download http://repo1.maven.org/maven2/joda-time/joda-time/2.2/joda-time-2.2.jar
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 7.106 secs
maven과 다르게 로컬에 jar를 관리하는 폴더는 .m2가 아닌 .gradle 폴더입니다.
./.gradle/caches/artifacts-26/filestore/joda-time/joda-time/2.2/jar/a5f29a7acaddea3f4af307e8cf2d0cc82645fd7d/joda-time-2.2.jar
행복하세요.
빌드도구 Maven의 시스템을 그대로 사용하는 gradle은 IDE보다 command로 먼저 학습하는 것이 좋습니다.
http://spring.io/guides/gs/gradle/#scratch
문서가 아주 쉽게 잘 나왔네요.
시작은 아주 간단합니다.
1. gradle 설치
사이트에서 다운로드 받은 뒤에 적당한 곳(예, C:\java\gradle-1.8)에 압축을 풀고 %JAVA_HOME%\bin; 처럼 C:\java\gradle-1.8\bin; 을 시스템 환경변수 Path 에 추가합니다.
cmd 창을 새로 열어서 gradle 명령어가 동작하는지 확인합니다.
2. 자바 소스 컴파일
다음과 같은 구조의 자바파일 두 개가 있다고 합시다. Maven과 구조가 같죠. 첨부한 파일 압축을 풀면 됩니다.
.
├── build.gradle
└── src
└── main
└── java
└── hello
├── Greeter.java
└── HelloWorld.java
프로젝트 최상단 폴더에 build.gradle 이라는 파일을 만들고 그 내용에 한 줄만 넣으면 됩니다.
apply plugin: 'java'
이제 컴파일하는 절차만 남았습니다.
gradle build
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:assemble
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build
BUILD SUCCESSFUL
Total time: 4.677 secs
gradle build 라고 입력하면 자동으로 컴파일합니다.
.
├── build
│ ├── classes
│ │ └── main
│ │ └── hello
│ │ ├── Greeter.class
│ │ └── HelloWorld.class
│ ├── dependency-cache
│ ├── libs
│ │ └── gradle-start.jar
│ └── tmp
│ └── jar
│ └── MANIFEST.MF
다음과 같이 실행해 볼 수 있겠죠.
java -cp build/libs/gradle-start.jar hello.HelloWorld
또는 class를 직접 실행할 수 있습니다.
java -cp build/classes/main hello.HelloWorld
jar파일이 필요한 것은 다음 글에서 정리해 보겠습니다.
메이븐은 아파치의 오픈 소스 빌드 도구입니다. http://maven.apache.org 사이트에서 정보를 구할 수 있습니다. 빌드란 프로그램 소스의 컴파일을 포함해서 애플리케이션을 사용할 수 있도록 패키징까지 해주는 과정입니다. 개발환경 도구에는 메이븐의 이클립스 플러그인이 함께 설치되어 있습니다. m2eclipse라는 플러그인이며, 이클립스에서 메이븐을 쉽게 사용하도록 도와주는 기능을 제공합니다.
메이븐은 설정보다 관례(CoC;Convention over Configuration)라는 컨셉으로, 먼저 나왔던 ANT(http://ant.apache.org) 빌드 도구와 달리 빌드의 설정을 자유롭게 하는 대신 지정된 규칙에 따라 코드를 위치시키면 컴파일, 패키징, 문서화 등의 나머지 작업들을 자동으로 수행해 줍니다.
메이븐은 여러 프로젝트에 중복 산재해 있는 자바 라이브러리(JAR)를 한 곳에서 관리합니다. 일반적으로 프로젝트에서 소스코드가 차지하는 용량이 3~5메가라고 하면 jar파일의 크기는 30~50메가가 넘는 경우가 많습니다. 이런 경우 버전관리 시스템에서 제외시켜서 관리할 수 있다면 매우 가볍게 작업이 가능합니다.
메이븐은 사용자 홈 디렉토리를 기준으로 .m2 라는 폴더를 만들어서 repository 폴더 하위에 인터넷에서 다운로드 받은 jar 파일을 관리합니다. pom.xml 에서 지정된 라이브러리들을 필요에 따라 복사하거나 참조해서 사용합니다.
전자정부 표준프레임워크의 개발환경 서버를 설치하면 메이븐이 함게 설치됩니다. JAVA_HOME 환경변수 같이 MAVEN_HOME을 지정하고, PATH에 추가해도 되지만 메이븐/bin, 폴더만 PATH 환경변수에 추가하겠습니다. 컴퓨터 아이콘을 클릭하고, 컨텍스트 메뉴에서 속성을 선택합니다.
<그림> 환경변수 설정 시작
제어판의 좌측에서 고급 시스템 설정을 클릭합니다.
<그림> 고급 시스템 설정
하단의 시스템 변수에서 Path 항목을 선택합니다. 여기에 들어갈 값은 빌게이츠 친구 탐색기에서 복사할 수 있습니다.
<그림> 시스템 변수 Path
탐색기를 열어서 C:폴더에 들어갑니다. 주소줄을 클릭해서 복사합니다.
<그림> 메이븐 경로 복사
시스템 환경 변수 Path의 제일 앞에 복사한 C:경로를 추가하고 ;을 붙여서 구분해 줍니다.
<그림> 메이븐 경로 Path에 추가
cmd 창을 띄워서 mvn --version 을 입력합니다. 버전이 표시되면 정상적으로 설치가 된 것입니다.
<그림> 메이븐 버전 확인
간단히 템플릿 코드를 생성해 보겠습니다. 다음의 코드를 cmd창에 입력합니다.mvn archetype:generate -DgroupId=com.mycompany.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
필요한 jar파일을 알아서 다운로드합니다. 그 파일들을 이용해서 archetype 플러그인의 generate 골을 실행합니다.
<그림> 메이븐 아키타입 실행
tree /f 도스 명령어를 이용해서 생성된 파일들과 폴더를 보면 다음과 같습니다. src/main, src/test 폴더에 각각 지정한 groupId 패키지에 따른 하위 폴더와 각각의 java 샘플이 있고, 가장 상위에는 pom.xml 파일이 있습니다.
<그림> 메이븐 아키타입 퀵스타트 구조
빌드는 mvn package 페이즈(phase)를 통해서 할 수 있습니다.
<그림> 메이븐 pacakge 페이즈 실행
결과는 target 폴더가 만들어지면서 담기게 됩니다. quickstart 샘플의 경우 jar파일이 만들어 집니다.
<그림> 메이븐 산출물 target
target 폴더로 이동해서 java -cp my-app-1.0.SNAPSHOT.jar com.mycompany.app.App 명령을 입력하면 실행할 수 있습니다.
<그림> 메이븐 결과 실행
간단히 메이븐을 설치하고 이용하는 방법을 알아보았습니다.
http://okjsp.tistory.com
http://okjsp.net
http://github.com/kenu