Gradle로 Java 빌드하는 방법

Java 코드를 간단히 Editor로 빌드해보고 싶어서 Gradle로 project를 만들어보았습니다. Gradle wrapper를 사용하였는데 wrapper는 gradle version을 고정할 수 있고 Linux계열 또는 Windows에서 코드를 수정하지 않고 빌드가 가능합니다. 이런 이유로 Android Project도 wrapper를 사용합니다.

저의 개발환경은 다음과 같습니다.

  • Ubuntu 17.04
  • Java 1.8
  • Gradle 4.5

Project 생성

우선 source fodler를 생성해야 합니다.

$ mkdir -p src/main/java/hello

그리고 간단히 Hello World를 출력하는 source code를 생성하였습니다.

package hello;

public class HelloWorld {
  public static void main(String[] args) {
    System.out.println("Hello World!");
  }
}

Dir 구조는 아래처럼 되었습니다.

$ tree
.
└── src
    └── main
        └── java
            └── hello
                └── HelloWorld.java

이제 Gradle wrapper 파일을 생성해야합니다. Project의 최상위 dir에서 ./gradlew를 입력하면 wrapper 파일들이 생성됩니다.

  • gradlew는 Unix 계열인 Linux, Mac에서 사용하는 script입니다
  • gradlew.bat는 Windows 계열에서 사용하는 script입니다
  • **gradle/wrapper/**는 jar과 properties 파일 등이 있습니다
$ ./gradlew
$ tree
.
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
    └── main
        └── java
            └── hello
                └── HelloWorld.java

Gradle파일이 생성되었으면 Project dir에 bulid.gradle파일을 생성하여 build에 관련된 내용을 정의해야 합니다.

apply plugin: 'java'
apply plugin: 'application'

mainClassName = 'hello.HelloWorld'


repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    testCompile "junit:junit:4.12"
}

Build & Run

이제 빌드 준비는 모두 끝났습니다. ./gradlew build로 빌드를 할 수 있습니다. 빌드 완료 후 tree를 보면 class파일이 생성되었습니다.

$ ./gradlew build

$ tree
.
├── build
│   ├── classes
│   │   └── java
│   │       └── main
│   │           └── hello
│   │               └── HelloWorld.class
│   ├── libs
│   │   └── build_with_gradle.jar
│   └── tmp
│       ├── compileJava
│       └── jar
│           └── MANIFEST.MF
├── build.gradle
├── gradle
│   └── wrapper
│       ├── gradle-wrapper.jar
│       └── gradle-wrapper.properties
├── gradlew
├── gradlew.bat
└── src
    └── main
        └── java
            └── hello
                └── HelloWorld.java

./gradlew run으로 compile된 Java program을 실행할 수도 있습니다.

$ ./gradlew run

> Task :run
Hello World!

BUILD SUCCESSFUL in 0s
2 actionable tasks: 1 executed, 1 up-to-date

bulid.gradle

빌드부터 실행까지 해보았지만, 사실 build.gradle에 script를 정의하지 않으면 생각처럼 동작하지 않습니다.

Java로 빌드하는 경우 아래처럼 정의를 해야합니다.

apply plugin: 'java'

Gradle로 compile된 Java program을 실행시키고 싶으시면 아래처럼 정의를 해야합니다.

apply plugin: 'application'
mainClassName = 'hello.HelloWorld'

3rd party의 의존성 라이브러리를 사용하고 싶다면 아래처럼 정의를 해야합니다.

repositories {
    mavenCentral()
}

sourceCompatibility = 1.8
targetCompatibility = 1.8

dependencies {
    testCompile "junit:junit:4.12"
}

만약 local file을 사용한다면 compile fileTree 또는 compile files로 의존성을 설정할 수 있습니다.

dependencies {
    compile fileTree(dir: 'libs', include: '*.jar')
    compile files('libs/library.jar').
}

참고

Loading script...

Related Posts

codechachaCopyright ©2019 codechacha