Eclipse環境でGradleビルドするJavaアプリケーションの開発tips

ギークフィードエンジニアの君島です。Java経験は7年目になります。

 

最近はLaravelなどのフレームワーク、Node.jsなどのプラットフォームを使用した環境での開発が多かったのですが、ふとEclipse環境でGradleビルドのJavaアプリケーションを開発することがありました。

また時間が経つと忘れてしまうのと、さっと環境作りたいというような目的で、いくつかのポイントをtipsとして残しておくことにします。

以下の流れで読めば、ひと通りアプリケーションの開発ができるようになっています。

 

目次

環境

OS Windows10 (64bit)
IDE Eclipse 4.10.0
JDK JDK8
Gradle 5.5

 

Tips

プロジェクト作成

コマンドプロンプトで、プロジェクトを作成したフォルダ上で以下のコマンドを実行します。

プロジェクトの種類や名前など聞かれますが、必要あれば変更します。デフォルトのままでも構いません。

gradle init

 

成功すると、build.gradleが出来上がっているので、Eclipseで読み込めるようにします。

build.gradleに以下を追記します。

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

 

次に以下のコマンドを実行すると、Eclipseの管理ファイルが作成されます。

gradle eclipse

 

これでEclipseにインポートできるプロジェクトとなりました。

 

Mainクラスのスニペット

エントリーとなるMainクラスをスニペットとして記録しておきます。これを編集して実装していきます。

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

 

GradleからJava実行したい場合はbuild.gradleに以下のようにプラグインとMainクラスの追記をします。ソースディレクトリを新たに追加した場合はディレクトリ名の指定も必要になります。

apply plugin: 'application'

sourceSets.main.java.srcDirs = ['src'] // ソースディレクトリの指定
mainClassName = 'jp.co.gf.sample.Main' // Mainクラスの指定

 

依存関係の解決

新たにライブラリを参照する場合に、手動で配置したりpom力を発揮するのは面倒なので、リポジトリから取ってくるようにbuild.gradleに記載します。

例えば、2つのリモートリポジトリを指定して、jacksonを参照するようにした例を記載します。

repositories {
    mavenCentral()
    maven {
        url = 'http://repo.maven.apache.org/maven2'
    }
}

dependencies {
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.9.3'
}

 

ただ、これでGradleではビルド成功するのに、Eclipseでは読み込めないことがあります。その場合は、以下のコマンドを実行して、.classpathを書き換えてもらいます。

gradle cleanEclipse eclipse

 

fat Jarの作り方

ビルドはこちらで問題無いかと思いますが、Java実行時に参照の指定が面倒になることがあります。容量に制約がないようであればライブラリのjarを1つのファイルに抱き込んだfat Jarにしてしまいましょう。build.gradleに以下のように指定します。

plugins {
    id 'com.github.johnrengelman.shadow' version '5.1.0'
}


shadowJar {
    manifest {
        attributes "Main-Class" : "jp.co.gf.sample.Main"
    }
}

 

Gradleを以下のように実行するとfat Jarを作成してくれます。

gradle shadowJar

 

また、Jarの実行方法は以下の通りです。参照の指定がないので、実行コマンドはかなり簡単になるでしょう。

java -jar sample.jar

 

fat Jarの作成エラー解消:shadow.org.apache.tools.zip.Zip64RequiredException: archive contains more than 65535 entries.

gradle shadowJar実行時に以下のようなエラーが出ることがあります。

内容は見ての通り。大量のファイルの抱き込み過ぎで発生します。

> Task :shadowJar FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ‘:shadowJar’.
> shadow.org.apache.tools.zip.Zip64RequiredException: archive contains more than 65535 entries.

To build this archive, please enable the zip64 extension.
See: https://docs.gradle.org/5.5/dsl/org.gradle.api.tasks.bundling.Zip.html#org.gradle.api.tasks.bundling.Zip:zip64

 

このときはbuild.gradleを下記のように書き換えればOKです。

shadowJar {
    manifest {
        attributes "Main-Class" : "jp.co.gf.sample.Main"
    }
    zip64 true
}

 

Eclipse環境でGradleビルドするJavaアプリケーション開発のまとめ

Eclipse環境でGradleビルドのJavaアプリケーションを開発する際のtipsでした。

最後に上記を踏まえたbuild.gradleを残しておきます。

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This is a general purpose Gradle build.
 * Learn how to create Gradle builds at https://guides.gradle.org/creating-new-gradle-builds
 */

plugins { 
	id 'com.github.johnrengelman.shadow' version '5.1.0' 
}

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

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

version = '1.0.0'

sourceSets.main.java.srcDirs = ['src']
mainClassName = 'jp.co.gf.sample.Main'

repositories {
    mavenCentral()
    maven {
        url = 'http://repo.maven.apache.org/maven2'
    }
}

dependencies {
    compile group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.9.9.3'
}

shadowJar {
    manifest {
        attributes "Main-Class" : "jp.co.gf.sample.Main"
    }
    zip64 true
}

 

この記事が気に入ったら
いいね ! しよう

Twitter で
The following two tabs change content below.
君島翔
君島翔
AI事業部事業部長株式会社ギークフィード
Java, .NET系の言語が得意。Laravelも使います。 エディタはvim派。 自分が楽するためにテストやビルド、デプロイを自動化させたい。 2022-2023 AWS Ambassador / 2022-2023 Japan AWS Top Engineer / 2022-2023 Japan AWS ALL Certifications Engineer

【採用情報】一緒に働く仲間を募集しています

採用情報
ページトップへ