ギークフィードエンジニアの君島です。Java経験は7年目になります。
最近はLaravelなどのフレームワーク、Node.jsなどのプラットフォームを使用した環境での開発が多かったのですが、ふとEclipse環境でGradleビルドのJavaアプリケーションを開発することがありました。
また時間が経つと忘れてしまうのと、さっと環境作りたいというような目的で、いくつかのポイントをtipsとして残しておくことにします。
以下の流れで読めば、ひと通りアプリケーションの開発ができるようになっています。
目次
環境
OS | Windows10 (64bit) |
IDE | Eclipse 4.10.0 |
JDK | JDK8 |
Gradle | 5.5 |
Tips
プロジェクト作成
コマンドプロンプトで、プロジェクトを作成したフォルダ上で以下のコマンドを実行します。
プロジェクトの種類や名前など聞かれますが、必要あれば変更します。デフォルトのままでも構いません。
1 |
gradle init |
成功すると、build.gradleが出来上がっているので、Eclipseで読み込めるようにします。
build.gradleに以下を追記します。
1 2 |
apply plugin: 'java' apply plugin: 'eclipse' |
次に以下のコマンドを実行すると、Eclipseの管理ファイルが作成されます。
1 |
gradle eclipse |
これでEclipseにインポートできるプロジェクトとなりました。
Mainクラスのスニペット
エントリーとなるMainクラスをスニペットとして記録しておきます。これを編集して実装していきます。
1 2 3 4 5 |
public class Main { public static void main(String args[]){ System.out.println("Hello! World!"); } } |
GradleからJava実行したい場合はbuild.gradleに以下のようにプラグインとMainクラスの追記をします。ソースディレクトリを新たに追加した場合はディレクトリ名の指定も必要になります。
1 2 3 4 |
apply plugin: 'application' sourceSets.main.java.srcDirs = ['src'] // ソースディレクトリの指定 mainClassName = 'jp.co.gf.sample.Main' // Mainクラスの指定 |
依存関係の解決
新たにライブラリを参照する場合に、手動で配置したりpom力を発揮するのは面倒なので、リポジトリから取ってくるようにbuild.gradleに記載します。
例えば、2つのリモートリポジトリを指定して、jacksonを参照するようにした例を記載します。
1 2 3 4 5 6 7 8 9 10 |
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を書き換えてもらいます。
1 |
gradle cleanEclipse eclipse |
fat Jarの作り方
ビルドはこちらで問題無いかと思いますが、Java実行時に参照の指定が面倒になることがあります。容量に制約がないようであればライブラリのjarを1つのファイルに抱き込んだfat Jarにしてしまいましょう。build.gradleに以下のように指定します。
1 2 3 4 5 6 7 8 9 10 |
plugins { id 'com.github.johnrengelman.shadow' version '5.1.0' } shadowJar { manifest { attributes "Main-Class" : "jp.co.gf.sample.Main" } } |
Gradleを以下のように実行するとfat Jarを作成してくれます。
1 |
gradle shadowJar |
また、Jarの実行方法は以下の通りです。参照の指定がないので、実行コマンドはかなり簡単になるでしょう。
1 |
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です。
1 2 3 4 5 6 |
shadowJar { manifest { attributes "Main-Class" : "jp.co.gf.sample.Main" } zip64 true } |
Eclipse環境でGradleビルドするJavaアプリケーション開発のまとめ
Eclipse環境でGradleビルドのJavaアプリケーションを開発する際のtipsでした。
最後に上記を踏まえたbuild.gradleを残しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
/* * 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 } |
- CLIでAmazon S3にあるファイル内の文字列検索をしてみる - 2024-02-01
- 不完全なマルチパートアップロードをCLIで確認してS3の無駄コストを無くそう - 2024-01-29
- AlmaLinux9.3にPHP8.3を入れてLaravel9から10にバージョンアップする - 2024-01-12
- AWS CloudShellの表現力を確認してみよう - 2024-01-01
- AWSのアーキテクチャーを学べるAWS Card Clash攻略Wiki - 2023-12-26