プロジェクト

全般

プロフィール

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" />
文字コード

ソースファイルがプラットフォームのデフォルトエンコーディングではない場合、例えば日本語版Windows上でソースファイルの文字コードをUTF-8としていたときは、明示的に文字コードを指定しないとjavadocツールが文字の解釈が出来ないとエラーになります。

「Generate JavaDoc」画面でOther command line arguments欄に次の指定をします。
-encoding UTF-8 -docencoding UTF-8 -charset UTF-8

  • -encoding はソースファイルの文字コードを指定
  • -docencoding はjavadocツールが生成するHTMLファイルの文字コードを指定
  • -charset はjavadocツールが生成するHTMLの先頭(head部)に記述するcharsetの文字コード指定

Gradle

Gradleプロジェクトを作成すると、Gradleのタスクが生成されます。
Gradleのタスクツリー表示から、build関係のタスク(assemble, build, jar, cleanなど)、documentation関係タスク(javadoc)、verification関係タスク(check, test)などが閲覧・実行できます。

アプリケーションの実行

IntelliJ IDEAのGradleタスクツリーにはビルド、ドキュメント、検証関係のタスクが表示されます。
実行に関するタスク(run)が見当たりません。アプリケーションの実行(デバッグ実行)は、Javaソース編集画面のmainメソッドの行にある緑色の▷ボタンをクリックして実行します。

実行可能JARファイルを作成

IntelliJ IDEAのデフォルト機能で生成したGradleプロジェクトでは、jarファイルに実行可能な情報が記述されません。
build.gradleを編集して情報を追記します。

 plugins {
-    id 'java'
+    id 'application'
 }
+application {
+    mainModule = 'com.torutk.weather'
+    mainClass = 'com.torutk.weather.WeatherApplication'
+}
  • Gradleのプラグインは、実行可能JARファイルを生成するためjavaからapplicationに変更
  • applicationの情報として、実行するモジュール名とそのモジュール内のmainメソッドを持つクラス名を指定

GUI Designer(Swing)

IntelliJ IDEAには、GUIライブラリSwingを使う際に画面配置をビジュアル的にデザインするGUI Designerが搭載されています。

GUI Designerについて

GUI Designerは、JPanelの画面配置をビジュアルに定義し、定義をXMLファイルに生成します。また、定義ファイルと対になるJavaクラスのソースコードを生成し、画面に配置したSwingコンポーネントとJavaクラスのフィールド・メソッドとの対応付け(バインディング)を行うコードを生成します。

使い方

  • プロジェクトビューから生成したいパッケージを右クリックし、[New] > [Swing UI Designer] > [GUI Form]を選択
  • [Form name]に生成したい画面名を入力、[Base layout manager]に画面配置のレイアウトマネージャを選択(デフォルトではGridLayoutManager)、[Create bound class]にチェックを付けて(デフォルト)、[Class name]には Form nameと同じ名前を指定します(Create bound classにチェックを付けていれば自動で同じ名前が入ります)

配置した画面はプレビューできます。配置画面上で右クリックし[Preview]で表示されます。

利用ケース

新規プロジェクトの作成

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

IDE IntelliJ IDEA 2022.2

IntelliJ IDEAは、デフォルトでJavaFXプロジェクト生成を有しています。

[File]メニュー > [New] > [Project]で「New Project」画面を開き、左側ペインで[Java FX]を選択、右側ペインでプロジェクトの設定を指定します。
プロジェクト名、プロジェクト作成ディレクトリ、プログラミング言語、ビルドツール(MavenかGradle)を指定します。

生成されるファイルは次の通りです(Gradleの場合の例)。

 +- .gitignore
 +- .gradle
 +- .idea
 +- build.gradle
 +- gradle
 +- gradlew
 +- gradlew.bat
 +- settings.gradle
 +- src
     +- main
         +- java
         |   +- module-info.java
         |   +- com
         |       +- torutk
         |           +- hellofx
         |               +- HelloApplication.java
         |               +- HelloController.java
         +-- resources
              +- com
                 +- torutk
                     +- hellofx
                         +- hello-view.fxml

hello-view.fxmlは、VBoxレイアウトの中にLabelとButtonが貼られています。
HelloApplication.javaは、Applicationをextendsし、FXMLファイルをロードして表示する最低限の記述があります。

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

OS Windows 10 64bit
IDE IntelliJ IDEA Community Edition 2022.3
  • 「Welcome to IntelliJ IDEA」画面から、[New Project]をクリック
  • 「New Project」画面で次を設定
    • [Name] プロジェクト名を入力
    • [Location] プロジェクトの基点ディレクトリを作成するディレクトリを選択
    • [Create Git repository]にチェックを入れると、プロジェクトがGitリポジトリとして生成される
    • [Language] Javaを選択
    • [Build system] Gradleを選択
    • [JDK] プロジェクトのビルド・実行に使用するJDKを選択
    • [Gradle DSL] Gradleの設定を記述するときの文法を選択
    • [Advanced Settings]を開くと、GroupIdとArtifactIdを入力できる

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

生成されたbuild.gradle
plugins {
    id 'java'
}

group 'com.torutk.spectrum'
version '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

test {
    useJUnitPlatform()
}
生成されたプロジェクト・ディレクトリ
プロジェクト基点([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 7.5への変更

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

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

こんなときどうするの?

コードのスタイル設定

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

  • 問題
    [ファイル]メニュー > [設定] で「設定」画面を開き、左ペインの [エディタ] > [コード・スタイル] > [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