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 클래스를 만듭니다. 

파일 첨부합니다.

gradle-start.zip

.

├── 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

gradle로 자바 빌드하기 1/2 

위 글에 이어집니다.


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 설치

http://www.gradle.org

사이트에서 다운로드 받은 뒤에 적당한 곳(예, C:\java\gradle-1.8)에 압축을 풀고 %JAVA_HOME%\bin; 처럼 C:\java\gradle-1.8\bin; 을 시스템 환경변수 Path 에 추가합니다.

cmd 창을 새로 열어서 gradle 명령어가 동작하는지 확인합니다.


2. 자바 소스 컴파일

다음과 같은 구조의 자바파일 두 개가 있다고 합시다. Maven과 구조가 같죠. 첨부한 파일 압축을 풀면 됩니다.

gradle-start.zip


.

├── 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파일이 필요한 것은 다음 글에서 정리해 보겠습니다.


gradle로 자바 빌드하기 2/2

스프링 웹MVC로 코드 만들어 실행할 때 WAR로 빌드해서 톰캣 설치된 곳에 복사해서 실행하지 않아도 되는 세상입니다. 빌드 도구를 통해서 톰캣 관련 jar 다운받아서 바로 실행할 수 있게 되어 있으니까요.


라고 생각했었습니다. mvn 쓸 때까지는요.


스프링 한 술 더 뜨네요.


package hello;

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }

}

이러면 서버가 뜹니다.

자바 공부할 때 흔히 보던 main() 메소드로 말이죠.


Download http://repo1.maven.org/maven2/org/apache/tomcat/embed/tomcat-embed-core/7.0.42/tomcat-embed-core-7.0.42.jar

Download http://repo1.maven.org/maven2/org/apache/tomcat/embed/tomcat-embed-logging-juli/7.0.42/tomcat-embed-logging-juli-7.0.42.jar

빌드에서 확인한 파일입니다.


관련 글입니다. 아래 문서는 spring-boot 를 사용합니다.

http://spring.io/guides/gs/serving-web-content/#initial




+ Recent posts