Tbpgr Blog

元エンジニア 人事 tbpgr(てぃーびー) のブログ

Gradle | 実行可能Jarを生成し、作成されたJarを実行するGradleタスクを作成する

概要

実行可能Jarを生成し、作成されたJarを実行するGradleタスクを作成する

仕様

・実行可能jarを生成する
・jarの実行時にはシステムプロパティの設定が必要
・Main-Classはorg.gradle.JarMainクラス
システムプロパティは以下の2つ
hage: hage-value
hige: hige-value

ソースコード

build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'

sourceCompatibility = 1.7
targetCompatibility = 1.7
version = '1.0'

jar {
  manifest {
    attributes 'Implementation-Title': 'GradleJarExecuteSample',
    'Implementation-Version': version,
    'Main-Class': 'org.gradle.JarMain'
  }
  from configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
}

dependencies { testCompile 'junit:junit:4.10' }
repositories { mavenCentral() }

uploadArchives {
  repositories { flatDir { dirs 'repos'
    } }
}

task runJar(dependsOn:jar) {
  javaexec {
    main="-jar";
    args jar.archivePath
    systemProperties = ['hage':'hage-value', 'hige':'hige-value']
  }
}
org.gradle.JarMain
package org.gradle;

public class JarMain {
  public static void main(String[] args) {
    System.out.println("hoge");
    System.out.println(System.getProperty("hage"));
    System.out.println(System.getProperty("hige"));
  }
}

runJarタスク実行結果

[sts] -----------------------------------------------------
[sts] Starting Gradle build for the following tasks: 
[sts]      :runJar
[sts] -----------------------------------------------------
hoge
hage-value
hige-value
:compileJava
:processResources UP-TO-DATE
:classes
:jar
:runJar

BUILD SUCCESSFUL

Total time: 0.567 secs
[sts] -----------------------------------------------------
[sts] Build finished succesfully!
[sts] Time taken: 0 min, 0 sec
[sts] -----------------------------------------------------