プロジェクト

全般

プロフィール

IntelliJ IDEA

高橋 徹2年以上前に追加

IntelliJ IDEA Community版をインストールして動かしてみたメモなど。

  • IntelliJ IDEA Community 2017.1.4版
  • Windows 10 Pro 64bit

返答 (11)

git.exeが見つからない - 高橋 徹2年以上前に追加

IntelliJ IDEAを起動し、[Check out from Version Control]から[Github]を選ぶと、

idea_start-1.png

git.exeが見つからないとのエラーダイアログが表示されます。

idea_start-2.png

このマシンには、Cygwinのgit、SourceTreeが入っていますが、Git for Windowsはインストールしていません。
SourceTreeに含まれるgit.exeが使えるようです。SourceTreeのgit.exeの場所は通常次にあります。
%APPLOCALDATA%\Atlassian\SourceTree\git_local\bin\git.exe

画面右下の[Configure] > [Settings] で、「Default Settings」画面を開きます。

idea_start-3.png

左側ペインで[Version Control] > [Git]を選択、右側ペインで、[Path to Git executable]欄の[…]ボタンを押し、ファイルダイアログで APPLOCALDATA へ行こうとしますが、ユーザーディレクトリ直下にAppDataが表われません(隠し属性となっているからか?)。ファイルダイアログの上の欄にテキストで直接AppDataを入れると表われます。

idea_start-1.png (19.5 KB) idea_start-1.png Welcom to IntelliJ IDEA画面
idea_start-2.png (7.24 KB) idea_start-2.png Error Running Gitエラーダイアログ
idea_start-3.png (38.6 KB) idea_start-3.png Default Settings画面
624
625
626

フォントがぁ… - 高橋 徹2年以上前に追加

ソースコードのフォントが、ギザギザ(ビットマップフォント)です。

IntelliJ IDEAは、Javaで作られており、自身を実行するJavaVMはインストーラと一緒に配布されています。
典型的には、IntelliJ IDEAをインストールしたディレクトリの中、C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.1.4\jre64\ にJavaVM(JRE)が存在します。JREのWindows版における等幅フォント(Monospaced)はデフォルトではMS ゴシックです。

まず、IntelliJ IDEAの設定でフォント指定が可能かを模索しました。

[File]メニュー > [Settings...] で「Settings」画面を開き、左側ペインで[Editor] > [Colors & Fonts] > [Font]とドリルダウンし、右側ペインの[Primary font:]欄でフォントを選択します。

FontSetting-1.png

ここでは、プログラミング向けと言われる Consolas フォントが選択できます。
Consolas フォントを選択した後のエディタの表示は次のようになりました。

FontSettings-2.png

英数字はConsolasフォントですが、日本語文字はギザギザの(おそらくMS ゴシック)フォントとなっています。
これは、Consolasフォントが英数字フォントで日本語フォントは持っていないため、代替フォントで別なフォント(おそらくMS ゴシック)が使われていると思われます。

そこで、英数字および日本語の両方を具える等幅フォント(字幅は、英数字:日本語文字が1:2)を別途入手・インストールして指定することにします。候補は次です。

  • Myrica
    英数字にInconsolataフォント、日本語文字に源ノ角ゴシック系フォントを使用しています。英数字と日本語の字幅は1:2となっています。
  • Ricty Dimished
    英数字にInconsolataフォント、日本語文字に□□□フォントを使用しています。英数字と日本語の字幅は1:2となっています。

MyricaM フォントを設定したIntelliJ IDEAのエディタ画面は次です。

FontSettings-3.png

まずまずの感じです。行間が狭いですが、フォント設定の右わきに[Line spacing]欄があり、デフォルトの1.0から1.2あたりに増やすといい感じです。

Ricty Dimished フォントを設定したIntelliJ IDEAエディタ画面は次です。

FontSetting-5.png

Rictyは、フォントがガチャガチャに表示されます。RictyはCleartypeに対応していないため、MacTypeなどのレンダリングを別途入れないとダメとの話があるようです。
MacTypeを入れたとしても、Java(Swing GUI)はMacTypeを認識しないのでたぶんRictyの表示が改善されないままかと思います(未検証)。

次は、IntelliJ IDEAが内包するJREのフォントを設定する方法を模索します。
等幅フォント(Monospaced)に、英数字にConsolasフォントを、日本語文字に游ゴシックUIフォントを指定したfontconfig.propertiesファイルを作成し、
C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.1.4\jre64\lib\fontconfig.properties として配置します。
fontconfig.propertiesの設定方法については、Javaフォント設定Windows編あたりを参照ください。この方法は、英数字と日本語が1:2ではありません。

FontSetting-4.png

まとめ

IntelliJ IDEAのエディタ用フォントは、英数字:日本語の字幅が1:2に調整された Myricaフォントがよかったです。

FontSetting-1.png (49.3 KB) FontSetting-1.png エディタのフォントを選択
FontSettings-2.png (18.8 KB) FontSettings-2.png 日本語はギザギザのまま
FontSettings-3.png (25 KB) FontSettings-3.png MyricaMフォントを指定
FontSetting-4.png (28.2 KB) FontSetting-4.png JREのfontconfig.propertiesにConsolasおよび游ゴシックUIを指定し、Monospacedを指定
FontSetting-5.png (24.8 KB) FontSetting-5.png Ricty Dimishedフォントを指定
627
628
629
630
631

リポジトリに入れるべきでないファイル - 高橋 徹1年以上前に追加

参考情報

How to manage projects under Version Control Systems

ここによると、

  • .ideaディレクトリ以下のファイルは、workspace.xmlおよびtasks.xmlを除きリポジトリで管理する
  • .imlファイル(モジュールディレクトリに置かれるIntelliJが使用するもの)はリポジトリで管理する
    但し、GradleまたはMavenベースのプロジェクトでは.imlファイルは管理しない
  • gradle.xmlは管理しない
  • GradleまたはMavenベースのプロジェクトで.idea/libraries以下のXMLファイルは管理しない
  • dictionariesディレクトリは管理しない

上記に基づく設定の例がGitHubから提供されている。
GitHubのgitignore IntellJ用設定

だがしかし、設定例ではダメなケースあり。

  • サブディレクトリ以下にプロジェクトルートがある場合
    .idea/**/workspace.xml は、リポジトリルートの.ideaの下のどこかの階層にあるworkspace.xmlを無視するので、サブディレクトリのどこかの.idea/worksace.xmlは無視されない

IntelliJ IDEAのデフォルト(ディレクトリベース)のプロジェクトと、Gradleベースのプロジェクトでは無視ファイル定義を共通にすることができない。

  • .idea/librariesをIDEAデフォルトは無視しないがGradleベースは無視する対象
  • .imlをIDEAデフォルトでは無視しないがGradleベースは無視する対象

Android Studioの場合の無視ファイル設定に関し、IntelliJ IDEAのプロジェクト管理ファイルの説明をしている記事があった。
Android Studio最速入門~効率的にコーディングするための使い方 第34回 バージョン管理ープロジェクト管理ファイルについて[中編]

  • プロジェクトホームディレクトリに.ideaディレクトリがあればIDEAのプロジェクトとして認識される
  • (Gradleベース).imlはbuild.gradleから再生成可能。.imlを削除するときは.idea/modules.xmlも削除する

Gradleプロジェクト - 高橋 徹1年以上前に追加

新規プロジェクトでGradleプロジェクトを作成するときの各設定について

Kotlin TornadeFXを使うときの設定をしながら調べたこと

  • [追加のライブラリーおよびフレームワーク]
    Kotlin(Java)だけ選択
  • [グループID]は、Mavenの命名慣習ではパッケージ名を入れる
  • [アーティファクトID]は、JARファイル名から拡張子を除いたものを入れる
  • [バージョン]はそのまま(1.0-SNAPSHOT)
  • [自動インポートを使用する](auto-import) →とりあえずしない
    build.gradleの自動同期をOFFにする - marsのメモ
    によると、build.gradle(Gradleのビルドスクリプトファイル)を変更するたびに同期処理が動くとある。さらに調べると、build.gradleを変更するとIntelliJ IDEAが再度プロジェクトを作り直すようなものらしい(Gradle設定からプロジェクトをインポートする)。かなり煩わしい模様。
  • [モジュールのグループ化]で、[using explicit module groups]か[using qualified names]の選択、デフォルトのまま(詳しく調べず)
  • [ソース・セットごとに個別のモジュールを作成する](チェックが付いたままとする、詳しく調べず)
  • [生成されたプロジェクト・ファイルを外部に保管する](チェックがないままとする、詳しく調べず)
  • [デフォルトのgradleラッパーを使用する(推奨)]か[ローカルのgradleディストリビューションを使用する]かの選択は、デフォルトの方
    gradlew を使うかどうかの選択。現時点ではgradlewはJDK 9を使用していると次のエラーとなるので、その時はローカルに最新のgradleをインストールしそれを使用する設定にする。
    sync failed Could not determine java version from '9.0.4'.

IntelliJ IDEA Community Edition 2018.1へのアップデート - 高橋 徹1年以上前に追加

2017.xを入れたときは、更新があるとパッチをダウンロードして適用してくれていたけど、2017.3.5上で[ヘルプ]メニュー > [更新の確認]では更新があること(2018.1)は表示されるが、パッチを適用するような動きがなく、IntelliJ のダウンロードページをブラウザで開くのみでした。

そこで、2018.1のインストーラーを実行、すると2017.3を削除することを聞いてくるのでガツっと削除を指定し、2018.1をインストールした。
インストール後実行すると、「Cannot Run Git - File not found: git.exe」と通知が出るので、message#58 の手順でSourceTreeのgit.exeを指定した。

JUnit のテストケースを生成する方法 - 高橋 徹9ヶ月前に追加

IntelliJ IDEA 2018.3.4での模索

ユニットテストの作成は、メニューにはなく、テスト対象クラスをエディタで開き、右クリックから[Generate] > [Test] でダイアログが開く

create_test-1.png

create_test-2.png

create_test-3.png

上の画面で、"JUnit5 library not found in the module"と表示され、その右側に[Fix]ボタンがあります。
[Fix]ボタンを押すと、必要なライブラリ(JARファイル)をmavenリポジトリから指定したフォルダへダウンロードします。
ダウンロード後、モジュールのDependenciesにJUnitが追加されています。
マルチモジュールのプロジェクトを作るなら、ダウンロードしたJARをGlobal Librariesに設定するのがよいと思います。

なお、IntelliJ IDEA 2018.3.4では、JUnit4のライブラリ(JARファイル)は一緒にインストールされているので、上述の[Fix]ボタンからmavenリポジトリを利用しなくても、手動でJUnit4を指定することが可能です。しかし、JUnit5 はIntelliJ IDEAには含まれていないので(探した限りは見つからなかった)、[Fix]ボタンから取得するのがよさそうです。

create_test-3.png (30.1 KB) create_test-3.png Create Testダイアログ
create_test-1.png (22.2 KB) create_test-1.png テスト対象クラスのエディタ上で右クリックしポップアップメニュー
create_test-2.png (5.49 KB) create_test-2.png Generateメニュー
805
806
807

新規モジュール作成 - 高橋 徹9ヶ月前に追加

既存のプロジェクトに新規モジュールを追加する操作で、Content root と Module file location のディレクトリを尋ねられる。

Content root を指定するファイル選択ダイアログには、"Selected directory will be marked as module content root" と記述され、
Module file location を指定するファイル選択ダイアログには、"Module .iml file would be placed in selected directory" と記述されている。

通常はこの2つは同じディレクトリでよく、プロジェクトディレクトリの直下にモジュール名と同じ名前で作成する。

ある時突然kotlincでコンパイル初めてエラーに - 高橋 徹9ヶ月前に追加

ディレクトリベースのJavaプロジェクト(マルチモジュール、JPMS、JavaFX)で開発をしていたら、
ある時点から突然Buildでkotlincを実行しようとしてkotlin standard libraryがないとエラーになってしまった。
kotlinはまったく使っていないにもかかわらず。

[File]メニュー > [Invalidate Caches / Restart]を実行、再起動したあとビルドしたが現象変わらず・・・
次に、Rebuild Projectしたところ、現象が収まった。

環境は
Windows 10 Professional 64bit(1803版)
IntelliJ IDEA 2018.3.4
ZuluFX 11.0.1 64bit
ディレクトリベースのプロジェクト、2つモジュール生成、うち1つはJPMS(Java Platform Module System)
JavaFXアプリケーションでFXML使用。
ユニットテストはJUnit 5使用
他にRS232C通信のライブラリ jSerialComm を使用

類似現象の情報あり
https://intellij-support.jetbrains.com/hc/en-us/community/posts/360000891860-Kotlin-Compile-Error

プロジェクトをgitでバージョン管理する(はじめの一歩) - 高橋 徹9ヶ月前に追加

Javaのプロジェクトを作成、ある程度形ができてきたので、バージョン管理を始めたい。

まず、プロジェクトのトップディレクトリに、git initでリポジトリを作成するのだが、外部のgitツールで作成するか、IntelliJ IDEAから作成するか?

IntelliJ IDEAのドキュメント(2018.3)を調べると次のURLに手順が記載されている。
https://www.jetbrains.com/help/idea/set-up-a-git-repository.html

  • [VCS]メニュー > [Enable Version Control Integration]
    この操作後、バージョン管理ツールを選択(Git)するとプロジェクトのトップディレクトリに.gitフォルダが生成され、プロジェクトがバージョン管理下に入る。
    注).gitフォルダは隠し属性が付いていたので、コマンドプロンプトからdir /a で確認する

外部gitツールでinitすると、このメニューは表示されないので注意。.gitフォルダを消してもダメ(IntelliJ IDEAが一度プロジェクトをバージョン管理下と認識すると、明示的にバージョン管理下から外す操作が必要)。

上述操作後、.idea/vcs.xmlをGitに追加するか聞いてくるが、要否不明なので今は入れないでおく。(必要と判明すれば後で追加)

この時点では、gitignoreファイルは生成されない。
[Version Control]タブを見ると、バージョン管理外のファイル一覧に、outフォルダ下のビルド結果(*.classファイル等)も表示されている。

IntelliJ用のgitignoreファイルを公開しているサイトがあるので、これを流用するのもよい。
https://github.com/github/gitignore/blob/master/Global/JetBrains.gitignore

手動で無視ファイルを指定する場合は、「Version Control」ペインで[Unversioned Files]を展開してから、

  • 任意のクラスファイル(*.class)を右クリック、ポップアップメニューーから[Ignore]をクリック、[Ignore all files under]ラジオボタンをチェックし右側でoutフォルダを指定する
  • .ideaフォルダ下のworkspace.xmlは、上述Unversioned Filesには含まれていなかった
.ideaフォルダ下の管理ファイル(XML)を眺めてみたメモ
  • encodings.xml UTF-8、BOMなしの定義が書かれている。⇒ 要管理
  • misc.xml JDKの定義が書かれている。⇒ 使用するJDKを識別する(OSデフォルトでないJDKを使用)なら要
  • modules.xml プロジェクト配下のモジュール一覧が定義されている。⇒ 要管理
  • uiDesigner.xml ローカル(マシン固有)のUIデザイナー設定を保管する。⇒ 不要(IntelliJ IDEA標準gitignoreにも記載あり)
  • vcs.xml Gitを使うとの定義が記載。⇒ とりあえず要としておく
  • workspace.xml 前回終了時の画面構成を再現するための定義が記載。ユーザー固有定義。⇒ 不要(IntelliJ IDEA標準gitignoreにも記載あり)

さて「Version Control」ペインで[Unversioned Files]をgitに追加していき(ファイルを選択し、Ctrl + Alt + A)、まとめてコミットしようとした([VCS]メニュー > [Commit])。すると、ファイルの改行コードがCRLFなので、core.autocrlfをtrueにすることを推奨するダイアログが表示された。Commitを見合わせ、対処を検討しよう。

  • IntelliJ IDEAはデフォルトでは改行コードはシステム依存(WindowsであればCRLF)。
    [File]メニュー > [Settings] で、左側ペインで[Editor] > [Code Style]を選択、右側ペインで[Line separator]欄 で変更可能

Gitリポジトリ内は、ファイルエンコーディング(改行コードを含む)を統一した方がよいので、通常はLFとする。
Windows上では、改行コードCRLFを誤ってGitリポジトリに登録しないように、gitのcore.autocrlf設定をtrueまたはinputにしておく。trueとinputの違いは、trueは出し入れともにLFとCRLFの変換をするが、inputは入れるときだけCRLF→LFとし、出すときは改行コードはそのままとする。
注)バッチファイル等CRLFでないとダメなファイルを管理する場合は、core.autocrlfをtrueにするか、gitattributesで*.bat text eol=crlf とする

検討結果、対処は次とした。

  • IntelliJ IDEAが使用する外部Gitでcore.autocrlfをinputに変更(変更前はfalse)
  • この先バッチファイル等改行コードがCRLFでないとダメなファイルをバージョン管理下に置く時が来たら、.gitattributesに対象ファイルの設定を記載

さて、ようやくコミットできると思いきや、code analysisが走っていろいろ警告が出た。デフォルトでCommit前に[Perform code analysis]となっている。
これはなかなかいいね! でも修正はせずコミットしてしまおう。もうすぐ飛行機が着陸なので片付けなければ(機内作業中)。

自前のプロジェクトテンプレートを設ける - 高橋 徹7ヶ月前に追加

JavaFXアプリケーションの雛形をプロジェクトテンプレートで用意しようという企画です。
標準で付いているJavaFXは、FXMLを使う雛形を生成しますが、さらにCSSおよびリソースバンドル・プロパティファイルを使う雛形とします。
また、Java SE 9で搭載されたモジュールシステム対応もしておきます。

雛形用にプロジェクトを作成

samplefx
  +- .idea
  +- src
  |   +- sample
  |   |   +- Sample.properties
  |   |   +- SampleApp.java
  |   |   +- SampleView.css
  |   |   +- SampleView.fxml
  |   |   +- SampleViewController.java
  |   +- module-info.java
  +- samplefx.iml

このプロジェクトをテンプレートとして保存しました。
[Tools]メニュー > [Save Project as Template] で、テンプレート名を指定して保存します。

ここでテンプレートが保存されるのは、ユーザー固有の場所になります。Windowsの場合は、
C:\Users\<ユーザー名>\.IdeaIC<バージョン名>\config\projectTemplates\<テンプレート名>.zip
となります。

ひな形を使ったプロジェクトの作成

すると、新規にプロジェクトを作成する際、「New Project」画面で左側ペインの[User-defined]を選択すると右側ペインに保存したテンプレート名が表示されます。これを選んで次に進むとプロジェクト名、場所、パッケージ名を入力し、確定すると雛形が展開されます。

ですが、問題が…。

「Cannot load module file '<作業ディレクトリ>\<プロジェクト基点ディレクトリ>\<パッケージ名>.iml' does not exist.
Would you like to remove module '<パッケージ名>' from the project?」

とエラーが発生します(問題1)。
また、プロジェクトペインにソースフォルダが表示されません(問題2)。

問題2は、プロジェクトを再度開き直すと解消します。
問題1について、調査を進めます。

問題の調査

プロジェクトテンプレートのアーカイブファイル内を紐解いていきます。

  • _\.idea\project-template.xml
    <template>
      <input-field default="sample">IJ_BASE_PACKAGE</input-field>
    </template>
    

プロジェクトテンプレートとして保存したサンプルプロジェクトにおいて、パッケージ名をsampleとしたところ、この定義が生成されています。
IJ_BASE_PACKAGEという文字列は、雛形のファイルを紐解くと登場してきます。雛形から新規プロジェクトを生成するときに、Base package名を入力しますが、入力したパッケージ名がこのIJ_BASE_PACKAGEに展開されます。

  • root0\.idea\modules.xml(抜粋)
          <module fileurl="file://\$PROJECT_DIR\$/${IJ_BASE_PACKAGE}fx.iml" filepath="\$PROJECT_DIR\$/${IJ_BASE_PACKAGE}fx.iml" />
    

サンプルプロジェクトにおいて、samplefx.imlとなっていたファイルを参照する定義が、sampleの部分がIJ_BASE_PACKAGEで置き換えられてしまいます。
一方、samlefx.imlは雛形から生成したプロジェクトでもそのままのファイル名で生成されます。
この不一致がエラーの原因となっています。

Project templates - attributes for place holders : IDEs Support (IntelliJ Platform)|JetBrains

実行設定のVMオプションが格納されるファイル - 高橋 徹6ヶ月前に追加

実行(Run)の設定でVMオプションを指定した際、
.idea\workspace.xml
に指定内容が保存されていました。

このファイルはリポジトリに入れて共有すべきではない設定ファイルとされているので、
実行時のVMオプションを共有するのは実行用バッチファイルを別途作るべきなのかもしれない。

    (1-11/11)
    クリップボードから画像を追加 (サイズの上限: 1 GB)