Help us understand the problem. What is going on with this article?

IntelliJ IDEAでのJavaとGradleを使ったプロジェクト(及びGitHubリポジトリ)の作成

More than 1 year has passed since last update.

概要

Gradleを使ったJavaアプリケーションのプロジェクトにおいて、GitHubでのリポジトリ作成からIntelliJ IDEA上で開発するまでの手順です。

使用するもの

  • GitHub
  • IntelliJ IDEA
    • 本記事では2018.1を使用
  • Gradle
    • 本記事ではversion 4.8を使用
  • JUnit
    • 本記事ではJUnit5を使用

目次

  1. GitHubリポジトリの作成
  2. IntelliJ IDEAでプロジェクトを作成
  3. Gradleビルドファイルの設定
  4. javaソースの作成
  5. Gradleでのビルド
  6. GradleのテストでJUnit5を使用する

GitHubリポジトリの作成

  1. リポジトリ作成画面を開く
  2. リポジトリの情報を入力
    • Repository name
      • 好きな名前を入力
    • Description(optional)
      • ここで設定した説明はREADME.mdに自動で記載される
    • public/private
      • 必要な方をチェック
    • initialize this repository with a README
      • チェックを入れることが推奨されている、基本的にチェックを入れる
    • Add .gitignore
      • Javaを選択する、ただ、後述の.gitignore内容で上書きするので、あってもなくても良い
      • 作成しておけば新規ファイルを作成する必要がなくなる
    • Add a license
      • ライセンスつけるなら選択する
  3. Create repository ボタンをクリックして完了

IntelliJ IDEAでプロジェクトを作成

ここでやること

  1. GitHubのリポジトリをクローンしつつ、IntelliJ IDEAのプロジェクトを作成する
  2. プロジェクトがのIntelliJ IDEA上のGradle機能と紐付いているかチェックする
  3. .gitignoreを作成する

やるとどうなるか

  • Gradleのビルド設定が随時プロジェクトに反映されるようになり、IntelliJ IDEAによって依存関係のライブラリなどが自動でimportされるようになる
  • OSやIDE、ビルドツールにより作成される、リポジトリ管理外のディレクトリとファイルがリポジトリの変更対象に含まれなくなる

手順

  1. Intellij IDEAのスタート画面を開く
  2. Check out from Version Controlをクリック
  3. Gitを選択しリポジトリをクローンする
    1. 上述で作成したリポジトリのクローン用URLをクリップボードにコピーし、URL:欄に貼り付け
    2. Directory:欄には自動でリポジトリ名が入るので、変更の必要があれば変える
    3. Cloneボタンをクリック
    4. Checkout From Version Controlと書かれたダイアログが出る、確認用なので、Yesボタンをクリック
  4. クローン画面からプロジェクト作成に操作が移る、プロエジェクトを作成する
    1. Import Project画面が開く
    2. プロジェクトの設定
      1. Createproject from existing sourcesとImport project from external modelが選択できるが、Import project ...を選択
      2. Eclipse, Gradle, Maven...と選択肢があるが、Gradleを選択
      3. Nextボタンをクリック
    3. Gradleの設定
      • Use auto-import
        • チェックを入れておくと自動でimportできるが、プロジェクトが大きくなってくると重くなるかもしれない
        • チェックを入れることを推奨する
      • Create directories for empty content root automatically
        • チェックを入れるとプロジェクト作成時点で、ソースフォルダなどの必要ディレクトリを作成してくれる
        • チェックを入れることを推奨する
      • Group modules
        • Java9から登場したモジュールシステムへの考慮で、IntelliJ IDEA上のモジュールをどのように扱うかの設定
        • using explicit module groups:明示的にグループを指定
        • using qualified names:修飾名からグループを指定
        • どちらでもよい、プロジェクトの内容による
      • Create separate module per source set
        • デフォルトでチェックが入っていると、サブプロジェクト毎に一つのモジュールとして作成することができる
        • Gradleのサブプロジェクトを持っているなら、チェックを外すことを推奨
        • 筆者はチェックを外すようにしている
      • Gradleの所在
        • Use default gradle wrapper (not configured for the current project)
        • Use gradle "wrapper" task configuration
        • Use local gradle distribution
        • 個人的には3つ目のUse local ...でGradle homeを直接指定するのがわかりやすいのでそうしている
      • Gradle home
        • Use local gradle distributionを選択した場合は必須
        • /〜/gradle/4.8/libexecのように、Gradleディレクトリ配下のlibexecへの絶対パスを設定する
      • Gradle JVM
        • Gradleを実行する際のJVMのバージョンを設定する
        • プロジェクトで使用するJVMと合わせておくと混乱がない
      • Project format
        • 特にこだわりがなければ .idea(directory based) を選択
    4. Finishボタンをクリックして完了
  5. Do you want to add the following file to Git?とダイアログが出る
    • .ideaディレクトリとその配下のファイルが出来上がるのでGitのリポジトリに追加するかどうかの問いかけ
    • .ideaディレクトリは.gitignoreで無視する設定にするので、Noを選択する
  6. プロジェクト画面が開く
  7. プロジェクトがGradle機能に紐付いているかチェック
    1. ウィンドウ下部の Build ツール画面でプロジェクトの動機とビルドが成功していることを確認する
      • プロジェクト名: synced successfully と1行目に表示されていること
      • Run build が成功していること
      • 成功していると緑のアイコン、失敗していると赤のアイコンが、それぞれの行に付く
    2. ウィンドウ右部の Gradle ツール画面でプロジェクトのGradleメニューが表示されていること
      • プロジェクト名 (auto-importenabled) などと表示されている
  8. .gitignore作成
    • 後述の内容でプロジェクトディレクトリの直下に.gitignoreを作成する
    • 不要なディレクトリとファイルをコミット対象から除外する

.gitignore内容

RxJavaの.gitignoreを参考にしており、個人的にも各IDEやビルドツールへの対応が含まれているので、最初のうちから設定しておいたほうが良いと思うもの。

# ビルド結果 ファイル単体
*.com
*.class
*.dll
*.exe
*.o
*.so

# ビルド結果 パッケージファイル
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip

# ログファイル
*.log

# OSによる生成
.DS_Store*
ehthumbs.db
Icon?
Thumbs.db

# 編集中ファイル
*~
*.swp

# Gradleによる生成
.gradle
.gradletasknamecache
.m2
!gradle-wrapper.jar

# ビルドツールによる生成
target/
build/

# IntelliJ IDEAによる生成
out
.idea
*.ipr
*.iws
*.iml
atlassian-ide-plugin.xml

# Eclipseによる生成
.classpath
.project
.settings
.metadata
bin/

# NetBeansによる生成
.nbattrs
/.nb-gradle/profiles/private/
.nb-gradle-properties

# Scala関係
*.cache
/.nb-gradle/private/

# PMDによる生成
.pmd
.ruleset

Gradleビルドファイルの設定

ここでやること

  1. build.gradleの作成
  2. build.gradleへの確認用の記述

やるとどうなるか

  • build.gradleに内容を追記すると、IntelliJ IDEA上で変更が検知され、自動で依存関係のライブラリやビルドが実行される

手順

  1. プロジェクトディレクトリ直下に build.gradle ファイルを作成する
  2. build.gradleに確認用で、最低限の記述をする
    1. 後述の確認用build.gradleのテキストを貼り付ける
    2. build.gradleの変更によりBuild: Syncが動く
    3. 依存関係のライブラリがパスに追加されることを確認する(ウィンドウ左部のプロジェクトツール画面のExternal Libraries)
    4. Junit5が追加されていればOK

確認用build.gradle

apply plugin: 'java'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.2.0'
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.2.0'
}

test {
    useJUnitPlatform()
}

Javaソースの作成

ここでやること

  1. プロダクト用/テスト用のJavaソースとリソースのディレクトリ作成
  2. モジュールの設定で、作成したディレクトリの役割(Mark as)を設定する
  3. プロダクト用Javaソースを、ビルド、実行できることを確認する
  4. テスト用Javaソースを、ビルド、実行できることを確認する

やるとどうなるか

  • IntelliJ IDEA上で、Javaソースの作成、ビルド、実行ができる
  • IntelliJ IDEA上で、テストの実行ができる

手順

  1. モジュール設定画面を開く
    1. プロジェクトツール画面上で右クリック
    2. Open Module Settingsをクリック
  2. Modulesを選択
  3. 開いているプロジェクトを選択
  4. Sourcesタブ上でディレクトリの作成とMark asを設定
    1. 各ディレクトリの作成
      • src/main/java
      • src/main/resources
      • src/test/java
      • src/test/resources
    2. Mark asの設定
      • src/main/java : Sourcesを選択
      • src/main/resources : Resourcesを選択
      • src/test/java : Testsを選択
      • src/test/resources : Test Resourcesを選択
  5. Pathsタブ上で、IntelliJ IDEA上でのビルドでの出力先ディレクトリを設定
    1. Compiler outputの Use module compile output pathを選択
    2. Output path: に プロジェクトディレクトリ/out/production/classes を設定
    3. Test output path: に プロジェクトディレクトリ/out/test/classes を設定
  6. 確認用 プロダクト Javaソースの作成
    1. src/main/javaに適当なプログラムを作成
    2. メインメソッドを書くなりで、IntelliJ IDEA上でビルドと実行ができることを確認
    3. 実行はソース上で右クリックをして Run 'クラス名.メソッド名()' をクリック
    4. IntelliJ IDEAの Run ツール画面に結果が出力される
  7. 確認用 テスト Javaソースの作成
    1. src/test/javaに適当なプログラムを作成
    2. 〜Testの名前でテストクラスを作成
    3. @Testをつけたメソッドで、テストメソッドを作成(JUnit5を依存関係のライブラリで設定しているのでimportが通る)
    4. テスト実行
    5. テスト実行はソース上で右クリックをして Run 'クラス名' をクリック(メソッド上で右クリックした場合は、 Run 'メソッド名()')
    6. IntelliJ IDEAの Run ツール画面にテスト結果が出力される
      • テストクラスとテストメソッドが結果に出ていること

確認用Javaソース

プロダクト

Main.java
public class Main {

    public static void main(String[] args) {
        System.out.println("test product");
    }

}

テスト

MainTest.java
import org.junit.jupiter.api.Test;

public class MainTest {

    @Test
    public void test(){
        System.out.println("test test");
    }

}

Gradleでのビルド

ここでやること

  1. build.gradleにメインクラスを追記
  2. IntelliJ IDEA上のGradle実行機能で、ビルドとテストを実行
  3. テスト結果がHTMLで出力されることを確認

やるとどうなるか

  • IntelliJ IDEAを通したGradleの実行でプロジェクト上のソースのビルド、実行、テスト諸々の機能を実行できることが確認できる
  • GradleでJUnit5を使ったテストを実行でき、結果がHTMLで出力できることがわかる
  • 結果、IntelliJ IDEAとGradleの連携に問題がないことがわかり、プロジェクトとGradleの設定が終わる

手順

  1. build.gradleに追記 // 実行可能クラスの指定、実行可能mainメソッドを持つクラスの指定にはapplicationプラグインを指定 apply plugin: 'application' // 実行対象クラスを指定する mainClassName = '<プロダクト用Javaソースのクラス>' // 例に従うなら、mainClassName = 'Main'
  2. ItelliJ IDEAを通してGradleでビルド
    1. Gradleツール画面を開く
    2. build項目のbuildを実行する
    3. Runツール画面でビルド成功が出ること
    4. プロジェクトディレクトリ直下のbuildにクラスファイル等の結果ファイルが出力されていること
  3. IntelliJ IDEAでを通してGradleからメインクラスを実行
    1. Gradleツール画面を開く
    2. application項目のrunを実行する
    3. Runツール画面で、プロダクト用Javaソースのクラス の実行結果が出ていること
  4. IntelliJ IDEAを通してGradleからJUnit5を通したテストができること
    1. Gradleツール画面を開く
    2. verification項目のtestを実行する
    3. Runツール画面で、テスト用Javaソースのテスト結果が出ていること
    4. Runツール画面の、Gradleマークに矢印がついたアイコンをクリックして、ブラウザでテスト結果を確認できること
    5. ブラウザに表示されるテスト結果に、テストクラスに記載した分のテスト消化数が出ていること

最終的にどうなっているか

プロジェクトのディレクトリ構成

.gradle
.idea
build
out
    production
        classes
            Main.class
    test
        classes
            MainTest.class
src
    main
        java
            Main
        resources
    test
        java
            MainTest
        resources
.gitignore
build.gradle
README.md

.gitignore

上述のものと同様。

build.gradle

// mainとtestをそれぞれビルドするために、javaプラグインを指定
apply plugin: 'java'

// 使用するリポジトリ指定
repositories {
    // Mavenリポジトリを使用
    mavenCentral()
}

dependencies {
    // JUnit
    // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: '5.2.0'
    // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: '5.2.0'
    // https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params
    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-params', version: '5.2.0'
}

// Gradleでのテスト実行時 設定
test {
    // Junit5をGradleで動かすための設定、Gradle4.6からJunit5をGradleがネイティブサポートしたため記述できる
    useJUnitPlatform()
}

// 実行可能クラスの指定、実行可能mainメソッドを持つクラスの指定にはapplicationプラグインを指定
apply plugin: 'application'
// 実行対象クラスを指定する
mainClassName = 'Main'

その他

  • Gradleのbuild setupのwrapperを実行すると、下記が作成される
    • gradleディレクトリ及び、その配下にgradle wrapper関連のファイルが作成される
    • gradlewが作成される
    • gradlew.batが作成される
mediado
私たちメディアドゥは、電子書籍を読者に届けるために「テクノロジー」で「出版社」と「電子書店」を繋ぎ、その先にいる作家と読者を繋げる「電子書籍取次」事業を展開しております。業界最多のコンテンツラインナップとともに最新のテクノロジーを駆使した各種ソリューションを出版社や電子書店に提供し、グローバル且つマルチコンテンツ配信プラットフォームを目指しています。
https://mediado.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away