Gradle 실행가능한 jar 파일 생성하기

gradle

Gradle을 처음 봤을때의 인상은 외국애들이 또 이런 복잡한것을 만들어냈구나..ㅠ 였습니다. 사실 지금도 그렇게 생각하지만 알면알수록 Gradle의 매력이 있습니다. 정말 수많은 다양한 일들을 할 수 있는것 같습니다. 기존의 Maven이 했었던 일들을 그대로 흡수하고 Gradle만이 할 수 있는 일들도 끝을 알수 없을정도로 많은 기능이 제공되네요.

이번에는 Gradle을 이용한 실행가능한 jar 파일을 생성하는 방법을 기록차 정리해 봅니다. build.gradle 파일에 다음과 같은 내용을 추가해 주면 됩니다.

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

mainClassName = 'kr.pe.theeye.MyApp'
sourceCompatibility = 1.7
version = '1.0'

jar {
    manifest {
        attributes  'Title': 'My Application', 'Version': version, 'Main-Class': mainClassName
    }
    archiveName 'MyApp.jar'
    dependsOn configurations.runtime
    from {
        configurations.compile.collect {it.isDirectory()? it: zipTree(it)}
    }
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.10'
}

repositories와 dependencies의 내용은 여기서 중요하지 않으니 생략하도록 하겠습니다. 먼저 정의해 두어야 하는 설정은 mainClassName과 version입니다. 당연히 배포하려는 어플리케이션의 클래스와 버전입니다. 여기서 mainClassName은 어플리케이션의 진입 지점이 되는 즉 main 메소드가 위치하는 클래스를 지정해주면 됩니다.

그다음은 jar { … } 설정을 보셔야 합니다. 이러한 설정없이 jar로 빌드해보면 Manifest 파일을 찾을 수 없다며 실행이 되지 않는데요, 이 내용을 생성해 줍니다. 간단하게 어플리케이션의 메타데이터라고 생각하시면 됩니다. 어플리케이션의 이름과 미리 지정해둔 버전과 메인클래스를 지정해주면 됩니다.

archiveName은 실제로 빌드시에 생성될 파일이름을 정해주시면 됩니다. 이후에 설정은 의존성 있는 파일들을 몽땅 jar에 포함시키는 설정입니다. 이러한 설정을 해주신 다음에 gradle jar를 실행해주면 디폴트로 build/libs 디렉토리 안에 바이너리가 생성됩니다.

IntelliJ를 이용하신다면 다음과 같이 Gradle 탭의 메뉴를 사용하시면 됩니다.

gradle_jar_button