LoginSignup
3
4

初心者だけどGradleをEclipseで使いたい!

Last updated at Posted at 2022-12-24

初めまして、堀井です。

ブログは色々書いてきたもののQiitaは初めてなのでお手柔らかにお願いします。

さて、プログラムを色々書いているとビルドツールにも手を出したくなりますよね。
Javaのビルドツールと言えばAnt, Maven, Gradleなどがありますが、今回はGradleを勉強したいなと思って調べたまとめです。
実務でMavenのシェアが高いことは承知していますが、私的利用に限れば新規にMavenを学び始める理由も薄いかなと。

では早速行きましょう。

この記事が対象としている読者
・Javaでメソッドを作ることができる
・Eclipseで開発したことがある
・Ant, Maven, Gradleと言う名前を聞いたことがある
・Gradleの知識は「ビルドツールである」くらいしか知らない
・「ビルドツールは便利らしい」と言うことを知っている


ツールのダウンロード

まずはツールのダウンロードを行います。
PleaidesとGradleをそれぞれ最新版にしましょう。

Pleaides All in One Eclipse

Pleiades All in One Eclipse ダウンロード
 
Eclipse本体に日本語化プラグインと言語別に便利なプラグインを入れた言わずと知れたIDE(統合開発環境)です。
赤枠の最新版を選んでください(投稿日現在の最新はv20221215)。
001.gif

Buildshipが入っている Ultimate または Java を選択してください。
BuildshipとはGradle用のEclipseプラグインです。もちろん別途マーケットプレースからインストールしてもいいですが、どうせJavaを使うしわざわざ付属していない物を選ぶ理由もないと思います。

特に理由が無ければ、すでにコンパイラなどがインストールされている環境でも Full Edition をお勧めします。

002.GIF

Gradle

Gradle
Eclipse同様に最新版をダウンロードします(投稿日現在の最新は7.6)。

1. Install Gradleを選択

003.png

Installing manuallyからバイナリファイルをダウンロードして解凍

ユーザマニュアルやAPI Javadocが必要な方はCompleteをダウンロードしてください。
004.GIF

C:\Gradleに解凍したファイルを配置

ディレクトリが無い方は作成してください。
005.png

システム環境変数を設定

環境設定画面でGRADLE_HOMEのPATHを、binを配置したパスC:\Gradle\gradle-7.6\binに指定します1
006.png
007.png
008.png

使用可能になったことを確認

コマンドプロンプト(またはPowershellやGit-BashなどのCUIツール)を開きgradle -vを叩きます。
以下のようなメッセージが表示されれば成功です。
009.png
 
上手くいかない方はこれまでの操作に間違いないことを確認してください。

  • PATHの指定と実際に配置した場所が異なっている(CドライブとDドライブの違いなど)
  • PATHの指定がC:\Gradle\gradle-7.6\で止まっている(←はbinが抜けている)
  • ユーザー環境変数に既にGRADLE_HOMEが存在している(ユーザー環境変数の方が優先される)
  • コマンドプロンプトを開きっぱなし(再起動すれば適用される)
    など、ありそうなミスだと思います。

新規プロジェクトを作成する

プロジェクトディレクトリを作成

Eclipseの初期設定ではワークスペースはC:\pleiades\workspaceとなっているはずなので、今回はC:\pleiades\workspace\GradlePracticeAppとします。
010.png

CLIを起動して、プロジェクトを作成する

gradle initを叩きます。
10秒も待つと選択肢が出てくるので「1つ目だけ2、残りはデフォルト(Enter押すだけ)」としていきます。

PS C:\pleiades\workspace\GradlePracticeApp> gradle init
Starting a Gradle Daemon (subsequent builds will be faster)

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4] 2

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6]

Split functionality across multiple subprojects?:
  1: no - only one application project
  2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2]

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2]

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4]

Project name (default: GradlePracticeApp):
Source package (default: gradlepracticeapp):

> Task :init
Get more help with your project: https://docs.gradle.org/7.6/samples/sample_building_java_applications.html

BUILD SUCCESSFUL in 1m 7s
2 actionable tasks: 2 executed
PS C:\pleiades\workspace\GradlePracticeApp>

 
あまりにも味気ないので補足。

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4]

Gradle「1.基本プロジェクトでいいよね?」
ぼく「やだ、アプリ作りたい。」
 

Select implementation language:
  1: C++
  2: Groovy
  3: Java
  4: Kotlin
  5: Scala
  6: Swift
Enter selection (default: Java) [1..6]

Gradle「2.言語はJavaでいいよね?」
ぼく「うん」
 

Split functionality across multiple subprojects?:
  1: no - only one application project
  2: yes - application and library projects
Enter selection (default: no - only one application project) [1..2]

Gradle「3.機能分割しないよね?」
ぼく「うん」
 

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2]

Gradle「4.DSLはGroovyでいいよね?」
ぼく「うん」
 

Select test framework:
  1: JUnit 4
  2: TestNG
  3: Spock
  4: JUnit Jupiter
Enter selection (default: JUnit Jupiter) [1..4]

Gradle「5.テスト用のFWはJupiter(JUnit5)でいいよね?」
ぼく「うん」
 

Project name (default: GradlePracticeApp):

Gradle「6.プロジェクト名はディレクトリ名でいいよね?」
ぼく「うん」
 

Source package (default: gradlepracticeapp):

Gradle「7.ソースパッケージもディレクトリ名でいいよね?」
ぼく「うん」
 
以上です。
 

【横道】basic選んでもいい?

PS C:\pleiades\workspace\GradlePracticeBasic> gradle init

Select type of project to generate:
  1: basic
  2: application
  3: library
  4: Gradle plugin
Enter selection (default: basic) [1..4]

Select build script DSL:
  1: Groovy
  2: Kotlin
Enter selection (default: Groovy) [1..2]

Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no]

Project name (default: GradlePracticeBasic):

> Task :init
Get more help with your project: Learn more about Gradle by exploring our samples at https://docs.gradle.org/7.6/samples

BUILD SUCCESSFUL in 8s
2 actionable tasks: 2 executed
PS C:\pleiades\workspace\GradlePracticeBasic>

以下の通りbasicは「自分で一通りできるぜ」って人向けの指定なので、この記事の対象読者的には2のapplicationがベターです。
ちなみにbasicのbuild.gradleの中身はコメントだけです。
011.png
 

Eclipseにプロジェクトをインポートする

  1. Eclipseを起動して、エクスプローラ上で右クリック > 新規 > Gradleプロジェクト
    012.png

  2. インポート・ウィザードの選択
    Gradle > 既存のGradleプロジェクト > 次へ
    013.png

  3. Gradleプロジェクトのインポート
    プロジェクト・ルート・ディレクトリーをC:\pleiades\workspace\GradlePracticeApp に設定 > 次へ
    014.png

  4. インポート・オプション
    設定変更なし > 次へ
    015.png

  5. インポ-ト・プレビュー
    問題ないことを確認 > 完了
    016.png

  6. インポートされたことを確認
    下図のようになれば成功です。
    017.png
    もし「Gradleタスク」タブが表示されていない場合、
    ツールバー > ウィンドウ > ビューの表示 > Gradleタスク
    で表示することができます。
    018.png

build.gradleを編集

初期化された状態のbuild.gradle(からコメントを抜いたもの)は以下の通りです。

build.gradle
plugins {
    id 'application'
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'
    implementation 'com.google.guava:guava:31.1-jre'
}

application {
    mainClass = 'gradlepracticeapp.App'
}

tasks.named('test') {
    useJUnitPlatform()
}

これでもビルドやテストはできますが、折角なので色々追加しましょう。
特にここからは無知エリアが多いため、誤りやベタープラクティスがありましたら是非教えてほしいです。

plugins

第21章 Gradleのプラグインについて
プラグインを適用することで、様々なタスクを使えるようになります。

build.gradle
// 古い書き方
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'application'

// 新しい書き方
plugins {
    id 'java'
    id 'eclipse'
    id 'application'
}

一つ目は古い書き方で推奨されない2とのことなので、下の書き方を使いましょう。
何も記載しない場合に使えるタスクは以下の通り。

C:\pleiades\workspace\GradlePracticeApp>gradle tasks

> Task :tasks

------------------------------------------------------------
Tasks runnable from root project 'GradlePracticeApp'
------------------------------------------------------------

Build Setup tasks
-----------------
init - Initializes a new Gradle build.
wrapper - Generates Gradle wrapper files.

Help tasks
----------
buildEnvironment - Displays all buildscript dependencies declared in root project 'GradlePracticeApp'.
dependencies - Displays all dependencies declared in root project 'GradlePracticeApp'.
dependencyInsight - Displays the insight into a specific dependency in root project 'GradlePracticeApp'.
help - Displays a help message.
javaToolchains - Displays the detected java toolchains.
outgoingVariants - Displays the outgoing variants of root project 'GradlePracticeApp'.
projects - Displays the sub-projects of root project 'GradlePracticeApp'.
properties - Displays the properties of root project 'GradlePracticeApp'.
resolvableConfigurations - Displays the configurations that can be resolved in root project 'GradlePracticeApp'.
tasks - Displays the tasks runnable from root project 'GradlePracticeApp' (some of the displayed tasks may belong to subprojects).

To see all tasks and more detail, run gradle tasks --all

To see more detail about a task, run gradle help --task <task>

BUILD SUCCESSFUL in 728ms
1 actionable task: 1 executed
C:\pleiades\workspace\GradlePracticeApp>

全部見たい場合はgradle tasks --allを叩いてください。

javaプラグインを適用すると使えるタスク一例。
全てを見る場合は 第23章 Javaプラグイン をご覧ください。

  • compileJava
  • jar
  • javadoc
  • test
  • clean
     

eclipseプラグインを適用すると使えるタスク一例。
全てを見る場合は 第38章 Eclipse プラグイン をご覧ください。

  • eclipse
  • cleanEclipse
     

applicationプラグインを適用すると使えるタスク一例。
全てを見る場合は 第45章 アプリケーション プラグイン をご覧ください。

  • run
  • installApp
  • distZip

repositories

第7章 Javaクイックスタート
dependenciesに外部ライブラリなどの依存関係を記載した場合、repositoriesから持ってきます。
取得の優先順位は記載した定義順だそうです3

Javaプロジェクトは外部のJARファイルに依存することが普通です。
プロジェクトで使うこういったJARファイルを参照するため、Gradleにそれらの場所を伝える必要があります。
※引用元:7.2.2. External dependencies

mavenCentral()と書けばMaven Centralから持ってきてくれます。
バージョン違い含め現在3126万を超えるパッケージがあるため、私的利用であればここでほぼ賄えるように感じますね。
必要なライブラリを検索する場合はMaven Repositoryを使うと便利です。

jcenter() などもありますが、入門的に勉強するだけならrepositoriesの変更は不要でしょう。

dependencies

第8章 依存関係管理の基本
ここには自作・外部を問わず、依存するライブラリやフレームワークを記載します。
試しにtestImplementation 'org.junit.jupiter:junit-jupiter:5.9.1'と同じものを拾ってきてみましょう。

  1. Maven Repositoryでjunit-jupiterを検索し、1.JUnit Jupiter APIを選択
    019.PNG

  2. 最新バージョンを選択
    020.png

  3. Gradle(Short)タブを選択し、表示されたコードをbuild.gradleにコピペする
    021.png
    Gradle タブを選んだ場合は省略なしの記述が出てきますが、どちらを選択しても同じです。

build.gradle
// Gradle(short)
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1'

// Gradle
// https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.9.1'

application

pluginsid 'application' を記載した場合、applicationが持つrunタスクで参照される項目です。
メインクラスを指定してください。
021.png

実際に試してみます。

C:\pleiades\workspace\GradlePracticeApp>gradle run

> Task :app:run
Hello World!

BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
C:\pleiades\workspace\GradlePracticeApp>

上手くいきました。
実行するメソッド名を変えてもう一つ試してみます。

Hoge.java(新規作成)
package gradlepracticeapp;

public class Hoge {
  
  public static void main(String[] args) {
    System.out.println("Hello, Hoge!!");
  }
}
build.gradle(一部)
// ここだけ書き換えた
application {
    mainClass = 'gradlepracticeapp.Hoge'
}
C:\pleiades\workspace\GradlePracticeApp>gradle run

> Task :app:run
Hello, Hoge!!

BUILD SUCCESSFUL in 960ms
2 actionable tasks: 2 executed
C:\pleiades\workspace\GradlePracticeApp>

実行時に動くメソッドがちゃんと変わりました。

tasks.named('test')

第15章 タスク詳解
testタスクに必要な設定を記載します。
今回はJupiter(JUnit5)を利用するため、useJUnitPlatform() と記載します。
これがないとtestタスク時に上手くテスト結果レポートが出力されません。
出力パスは \GradlePracticeApp\app\build\reports\tests\test\index.html です。

折角なので試してみました。
コメントアウトした場合
022.png

記載した場合
023.png

よく使うタスク

  • build
    ビルドを行います。正確には
    compileJava > processResources > classes > jar > assemble > compileTestJava > processTestResources > testClasses > test > check > build
    の順で行い、フルビルドを行います。

  • clean
    buildディレクトリ以下を削除します。

  • test
    テストを行います。

  • dependencies
    ライブラリの依存関係を一覧にして出力します。

これらを組み合わせて gradle clean build -x testと言ったような使い方もできます。
詳しくは公式ページや他の記事をご覧ください。


最後に

自分は執筆前「Gradle読めるけど書けない」状態でしたが、「書けるような気がしてきた」程度になる事ができました。
 
誤りの指摘、疑問などのコメント是非お待ちしております。
 
さて、このページが概ね理解できたら入門記事を読みましょうね。この記事は入門してもいない。

  1. 自分は画像と異なりC:\Gradle\gradle-7.6にPATHを通して、Pathに%GRADLE_HOME%\binを設定しています。

  2. https://www.web-dev-qa-db-ja.com/ja/groovy/gradle%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E9%81%A9%E7%94%A8%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84/1056004156/

  3. https://qiita.com/tenten0213/items/41cd8eb0a3fce121095c

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4