Gradle - 依存関係を持つJarファイルを作成する

このチュートリアルでは、http://www.gradle.org[Gradle]ビルドツールを使用して依存関係のある単一のJarファイルを作成する方法を説明します。

使用されるツール:

  1. Gradle 2.0

  2. JDK 1.7

  3. ログバック1.1.2

1.プロジェクトディレクトリ

以下のプロジェクトフォルダ構造を作成します。

gradle-hello-folder、width = 582、height = 303

デフォルトでは、Gradleは標準のMavenプロジェクト構造を使用しています。

  1. $ \ {Project}/src/main/java/

  2. $ \ {Project}/src/main/resources/

  3. $ \ {Project}/src/test/java/

2. Javaファイル

現在の日付時刻を出力するための単一のJavaファイルで、logbackでメッセージを記録します。

DateUtils.java

package com.mkyong;

import java.util.Date;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DateUtils{

    private static final Logger logger = LoggerFactory.getLogger(DateUtils.class);

    public static void main(String[]args) {

        logger.debug("[MAIN]Current Date : {}", getCurrentDate());
        System.out.println(getCurrentDate());
    }

    private static Date getCurrentDate(){
        return new Date();
    }

}

logback.xml

<?xml version="1.0" encoding="UTF-8"?>
<configuration>

    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
      <layout class="ch.qos.logback.classic.PatternLayout">

        <Pattern>
            %-5level %logger{36} - %msg%n
        </Pattern>

      </layout>
    </appender>

    <root level="debug">
      <appender-ref ref="STDOUT"/>
    </root>

</configuration>

3. build.gradle

ログバックの依存関係とともにJarファイルを作成する `build.gradle`サンプル。

build.gradle

apply plugin: 'java'
apply plugin: 'eclipse'

version = '1.0'
sourceCompatibility = 1.7
targetCompatibility = 1.7
//create a single Jar with all dependencies
task fatJar(type: Jar) {
    manifest {
        attributes 'Implementation-Title': 'Gradle Jar File Example',
            'Implementation-Version': version,
            'Main-Class': 'com.mkyong.DateUtils'
    }
    baseName = project.name + '-all'
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
    with jar
}
//Get dependencies from Maven central repository
repositories {
    mavenCentral()
}
//Project dependencies
dependencies {
    compile 'ch.qos.logback:logback-classic:1.1.2'
}

4. Jarファイルを作成する

プロジェクトをクリーニングします。

$ gradle clean

Gradleの `fatJar`タスクを実行します。

$ gradle fatJar

:compileJava
:processResources
:classes
:fatJar

BUILD SUCCESSFUL

Total time: 6.4 secs

Jarは `$ project/build/libs/`フォルダの下に作成されます。

gradle-build-folder、width = 571、height = 340

5.それを実行する

それを実行する - java -jar hello-all-1.0.jar

$Project\build\libs> java -jar hello-all-1.0.jar
16:22:13,249 |-INFO in ch.qos.logback.classic.LoggerContext[default]- Could NOT find resource[logback.groovy]16:22:13,249 |-INFO in ch.qos.logback.classic.LoggerContext[default]- Could NOT find resource[logback-test.xml]//...

DEBUG com.mkyong.DateUtils -[MAIN]Current Date : Wed Aug 27 16:22:13 SGT 2014
Wed Aug 27 16:22:13 SGT 2014

完了しました。

ソースコードをダウンロードする

ダウンロードする - リンク://wp-content/uploads/2014/08/gradle-create-single-jar.zip[gradle-create-single-jar.zip](1.4 KB)