プロジェクト

全般

プロフィール

IntelliJ IDEA 使用メモ

起動

起動時の画面(プロジェクト未選択)

プロジェクトが未選択のとき、次の画面が開きます。

start_initial-1.png

右下の [Configure]をクリックすると次のメニューが開きます。

start_initial-2.png

起動時の画面(プロジェクト選択時)

前回プロジェクトを開いて終了した場合、次に起動したときはそのプロジェクトが開いた状態で立ち上がります。

start_project-1.png

機能メモ

バージョン管理連携

git

プロジェクト管理ファイルについて

.ideaディレクトリはIDEAのプロジェクト設定が格納される場所です。

.idea/workspace.xml

プロジェクトを開いている状況(ファイルの一覧、タブの並び、ツールウィンドウのオプションや情報、他)。個人毎に異なる。

バージョン管理対象ファイル

.ideaディレクトリ下で、次のファイルを除く。

  • workspace.xml
  • usage.statistics.xml
  • tasks.xml

次のファイル

  • モジュールディレクトリにある.imlファイル
    但し、mavenまたはgradleプロジェクトでは、.imlファイルと、.idea/modules.xmlファイルはバージョン管理対象外とする

プロジェクトの定義

IntelliJ IDEAのプロジェクトは、モジュールを束ねる単位で、モジュールがそれぞれビルドし成果物(JARファイル等)を生成する単位となります。他のIDE(EclipseやNetBeans IDE)のプロジェクトとは概念が異なります。

Java Platform Module System (JPMS)

IntelliJ IDEAでは、プロジェクトの下にモジュールを定義する構造となります。このモジュールはそれぞれ1つのJARファイルを生成します。このモジュールに、module-info.javaを定義すると、IntelliJ IDEAのビルド・実行時にJPMSとして扱われます。

サードパーティーライブラリ

JDK(Java SE)のAPI以外のサードパーティーライブラリを利用するときは、Dependenciesにライブラリを定義します。
定義は、利用範囲に応じて3段階あります。

  1. グローバル
  2. プロジェクト
  3. モジュール

ライブラリの定義時に、mavenリポジトリから指定のフォルダへダウンロードする機能があります。

JARファイルの生成

デフォルトでは、クラスファイルを出力ディレクトリ(通常 out\production)下に生成し、実行します。
JARファイルを生成させたい場合は、プロジェクトの定義で明示的にJARファイルを生成するよう設定します。

  • [File]メニュー > [Project Structure]で「Project Structure」画面を開く
  • 左側ペインで[Project Settings] > [Artifacts]を選択
  • 中ペインで[+]をクリックし、[JAR] > [From modules with dependencies] をクリック

ProjectSettings_Artifacts-1.png

  • JARファイルを生成するモジュールを選択、実行可能JARとする場合は、[Main Class]欄でmainメソッドを持つクラスを選択
  • 依存するライブラリの利用方法を次から選択
    • 依存するライブラリを含めて単一のJARを生成する場合、[extract to the target JAR]
    • 依存するライブラリをビルド結果出力ディレクトリへコピーし、JARのマニフェストにリンク情報を定義する場合、[copy to the output directory and link via manifest]

Java編集

メソッドのJavadoc表示

マウスをメソッド名の上に載せたときにそのメソッドのJavadocを表示する機能がありますが、デフォルトでは無効となっています。
[File]メニュー > [Settings] で「Settings]画面を表示し、左側ペインで[Editor] > [General]を選択、右側ペインで Otherカテゴリの[Show quick documentation on mouse move]にチェックを付けます。

サードパーティーライブラリのJavadocを表示するときは、ライブラリの定義にJavadocの設定(URL指定あるいはJavadocのファイル)も追加しておきます。

略語展開によるコード記述

Live Template機能により、略語(例えば、psf)を入力後、展開操作(例えば、TABキー)をすると、コードに展開されます(例えば、public static final)。
自由に追加することができます。

java.util.logging.Loggerのクラス変数記述を登録する

Live Templatesはいくつかグループ分けされています。Java関係は、デフォルトではiterations、other、output、plain、surroundのグループがあります。loggingは機能的にはoutputグループが近いですが、あとでロギング関係のテンプレートを複数登録すると思われるので、新たにloggingグループを作ってその中にテンプレート定義を入れていきます。

  • [File]メニュー > [Settings] で「Settings」画面を開き、左側ペインで[Editor] > [Live Templates]を選択、右側ペインで[+]を押し、ポップアップメニューの[2.Template Group]を選択する。
  • 「Create New Group」ダイアログが開くので、logging と入力し[OK]ボタンを押す。
  • [logging]が一覧に追加されるので、これを選択状態にして右側ペインの[+]を押し、ポップアップメニューの[1.Live Template]を選択する。
  • [Abbreviation]欄に、logr を、[Description]欄に、Insert a static field of java.util.logging.Logger in this class. と入力し、[Template text]欄に以下のコード断片を記述する。
    private static final java.util.logging.Logger logger = Logger.getLogger($CLASS_NAME$.class.getName());
    
    • FQCNで記述すると、その型のimport文が生成される
    • クラス変数を定義するクラスのクラス名を自動で挿入するため、クラス名部分を変数で記述(ここでは$CLASS_NAME$としているが任意の変数名でよい)
    • 右辺のLoggerは、既に左辺でFQCN指定しているのでここではFQCNでなくてよい
  • [Edit variables]ボタンを押し、「Edit Template Variables」ダイアログが開くので、空欄となっているExpressionセルをクリック、ドロップダウンリストからclassName()を選択する。

import文をワイルドカードにしない

デフォルトでは、同じパッケージからクラスを3つ以上インポートすると、import文がワイルドカードとなってしまいます。
この設定は、[File]メニュー > [Settings]で「Settings」画面を開き、左側ペインで[Editor] > [Cody Style] > [Java]を選択、右側ペインで[Imports]タブを選択、[Use single class import]にチェックが付いていること、[Class count to use import with '*']欄の数字をデフォルトの3から大きな数(例:99)に変更します。

Setting_Imports-1.png

ビルド

Antビルド

プロジェクトを作成後、[Build]メニュー > [Generate Ant Build]をクリックし、「Generate Ant Build」画面を開きます。

GenerateAntBuild-1.png

単一ファイルのAntビルドと、モジュール毎およびメインとの複数ファイルのAntビルドが生成可能です。

生成後、IntelliJ IDEA画面右端の[Ant]をクリックしてAnt設定領域を右側に表示、[+]をクリックして生成したAntビルドファイルを選択します。

AntBuild-1.png

デフォルトで生成されるAntターゲットは、コンパイルまででJARファイルの生成や実行に関するターゲットはありません。
JARファイルをAntビルドで生成するには、[Generate Ant Build]を実行する前に、先にプロジェクトで成果物JARファイルを生成する設定をします。

  • [File]メニュー > [Project Structure]で、「Project Structure」画面を開き、左側ペインで[Project Settings] > [Artifacts]を選択
  • 中ペインで[+]をクリックし、[JAR] > [From modules with dependencies]をクリック
  • [Main Class]欄に、mainメソッドを持つクラスを設定
  • [JAR files from libraries]項は、[copy to the output directory and link via manifest]をチェック

成果物(Artifact)が定義された後に、[Generate Ant Build]を実行すると、JARファイルを生成するAntターゲットが追加されています。

  <target name="artifact.spectrumfileviewer:jar" depends="init.artifacts, compile.module.spectrumfileviewer" description="Build &#39;SpectrumFileViewer:jar&#39; artifact">
    <mkdir dir="${artifact.output.spectrumfileviewer:jar}"/>
    <jar destfile="${temp.jar.path.SpectrumFileViewer.jar}" duplicate="preserve" filesetmanifest="mergewithoutmain">
      <zipfileset dir="${spectrumfileviewer.output.dir}"/>
    </jar>
    <copy file="${temp.jar.path.SpectrumFileViewer.jar}" tofile="${artifact.output.spectrumfileviewer:jar}/SpectrumFileViewer.jar"/>
  </target>

Javadocの生成

[Tools]メニュー > [Generate JavaDoc]を実行すると、「Generate JavaDoc」画面が開き、生成対象、出力ディレクトリ、生成対象、ロケール、Javadocコマンドラインオプションなどを設定することができます。ここで設定した内容は、.idea\misc.xmlファイルに保存されます。このmisc.xmlに記載されるパスは、ホームディレクトリからのパスとなっていました。

  <component name="JavadocGenerationManager">
    <option name="OUTPUT_DIRECTORY" value="$USER_HOME$/mywork/satcom/dev/spectrumviewer/SpectrumFileViewer2/out/docs" />
  </component>

.idea\misc.xmlファイルをリポジトリへ登録する際、上述のパスは無効となるため、直接ファイルを編集して共有可能なパスに修正します。

-     <option name="OUTPUT_DIRECTORY" value="$USER_HOME$/mywork/satcom/dev/spectrumviewer/SpectrumFileViewer2/out/docs" />
+     <option name="OUTPUT_DIRECTORY" value="$PROJECT_DIR$/out/docs" />

利用ケース

新規プロジェクトの作成

JavaFXアプリケーションの新規プロジェクトを作成(Gradle)

OS Windows 10 64bit
IDE IntelliJ IDEA Community Edition 2020.1.1
JDK Liberica JDK 14 full (JavaFX同梱)
Build tool Gradle 6.4 RC3
  • 「Welcome to IntelliJ IDEA」画面から、[Create New Project]をクリック
  • 「New Project」画面から、左側ペインで[Gradle]を選択、右側ペインで[Project SDK]欄に[Liberica JDK 14 full][1]を選択、[Additional Libraries and Frameworks]欄で[Java]にチェックを付けて[Next]ボタンをクリック
  • 「New Project」画面の続きから、[Name]欄にプロジェクト名を、[Location]欄にプロジェクトのディレクトリを指定(なければ作成してから指定)、[Artifact Coordinates]欄の頭の▽印をクリックし、展開された設定領域で、[GroupId]欄に成果物グループ名(通常は組織のドメイン名の逆順)、[ArtifactId]欄に成果物名(通常はプロジェクト名)、[Version]欄に現時点のビルドに対するバージョン名(最近はセマンティックバージョン)を指定し、[Finish]ボタンをクリック

これで、Gradleをビルドに使うプロジェクトが作成されます。

  • 注)IntelliJ IDEA同梱のGradle(6.1)が使われます。別バージョンのGradleを使う方法は要調査
生成されたbuild.gradle
plugins {
    id 'java'
}

group 'com.torutk.spectrum'
version '0.1.0'

repositories {
    mavenCentral()
}

dependencies {
    testCompile group: 'junit', name: 'junit', version: '4.12'
}
生成されたプロジェクト・ディレクトリ
プロジェクト基点([Location]欄に指定したディレクトリ)
  +-- .idea
  +-- .gradle
  +-- gradle
  |     +-- wrapper
  +-- src
  |     +--main
  |     |    +--java
  |     |    +-- resources
  |     +--test
  |          +-- java
  |          +-- resources
  +-- build.gradle
  +-- gradlew
  +-- gradlew.bat
  +-- settings.gradle
Gitリポジトリ初期化

生成したプロジェクトをGitリポジトリとします。

[VCS]メニュー > [Enable Version Control Integration]で「Enable Version Control Integration」画面が表示されるので、[Git]を選択し[OK]ボタンをクリック

  • .ideaディレクトリ下に.gitignoreが生成される。内容は次のとおりです。
    # Default ignored files
    /shelf/
    /workspace.xml
    

.gitignoreはGitリポジトリのトップディレクトリに置きたいので、移動し内容を修正します。また、IntelliJ IDEAとGradleのプロジェクトに合わせて追記します。

.idea/shelf/
.idea/workspace.xml
.idea/tasks.xml
.idea/usage.statistics.xml
.idea/dictionaries
.idea/uiDesigner.xml

.idea/gradle.xml

out/

Gitリポジトリで管理するファイルの扱いに注意
Windowsのバッチファイルは、改行コードがCRLF、日本語文字列を扱うときは文字コードをCP932(IANA登録名:Windows-31J)とする必要があります。また、バイナリファイル(*.jar)をリポジトリに登録するときは改行コードの変換対象としないように非テキスト属性を付与しておくとファイルが壊れることがありません。.gitattributeファイルに*.jar binary(-diff -textと同義)のように指定します。
*.bat text eol=crlf
*.jar binary

Gradle 6.4への変更

予めローカルマシン上にGradle 6.4をインストールしておき、それを使う設定をします。

  • Gradle 6.4
    C:\Program Files\Java\gradle-6.4 にインストール
  • IntelliJ IDEAの[File]メニュー > [Settings]で「Settings」画面を開き、左側ペイン[Build,Execution,Deployment] > [Build Tools] > [Gradle]を選択、右側ペインの[Gradle projects]領域にある[Use Gradle from]欄にドロップダウンリストから[Specified location]を選択し、その右側のパス指定で上述インストールしたディレクトリを指定
JUnit 5への変更

デフォルトで生成されるプロジェクトはJUnit 4.1を使用する設定ですが、これをJUnit 5に変更します。

build.gradleを修正します。

こんなときどうするの?

コードのスタイル設定

インデントを変更しても反映されない

  • 問題
    [ファイル]メニュー > [設定] で「設定」画面を開き、左ペインの [エディタ] > [コード・スタイル] > [Kotlin] を選択、右ペインの[タブとインデント]タブでタブ・サイズとインデントの値を変更できます。変更後、ソースファイルの編集画面で改行をしてもインデントサイズは設定変更前の大きさのままです。
  • 解決
    対象ソースファイルに対して、[コード]メニュー > [コードの再フォーマット]を実行します。以降、変更したタブ・サイズとインデントが反映されます。

ファイルの文字コード

JavaのソースファイルはUTF-8に設定したのにプロパティファイルを作成したらWindows-31Jになった

[File]メニュー > [Settings] で「Settings」画面を開き、左側ペインの [Editor] > [File Encodings]をクリックすると、右側ペインに[Properties Files (*.properties)]という項があり、[Default encoding for properties files:]欄に文字コードを設定するようになっています。
ここを、UTF-8にします。

Settings_Editor_FileEncodings-1.png