IntelliJのプロジェクトテンプレートの仕様のまとめ

いつもGradleプロジェクトのセットアップに難儀しているので、プロジェクトテンプレートの利用を検討しました。

www.jetbrains.com

テンプレート作成時

作成したテンプレートは、私の環境では /Users/{USER}/Library/Application Support/JetBrains/IdeaIC2020.1/projectTemplates にありました。例えば、 excel という名前のテンプレートは excel.zip として保存されています。

f:id:hiroga_cc:20200428080559p:plain

IntelliJの新規プロジェクトメニューは、テンプレートが一つも保存されていない状態だと表示されないようです。

f:id:hiroga_cc:20200428080704p:plain
プロジェクト作成メニュー

IntelliJはprojectTemplateのZIPファイルを再帰的に探索し、そこで見つかったものをプロジェクトテンプレートの候補として表示するようです。試しにzipファイルを消したらプロジェクトテンプレートも消えました。また、projectTemplate 内に適当なフォルダを作ってそこにZIPを移動してもテンプレートとして表示されるようです。

ただ、 projectTemplate フォルダを直接編集するとプロジェクトの作成時に失敗するようになるかもしれません。

2020-04-30 追記: ソースコードのファイルがひとつもないモジュールを含むプロジェクトをテンプレート化すると、プロジェクト作成時に失敗します。IntelliJのバグと思われます。

テンプレート使用時

User-defined から利用したいプロジェクトを選択します。

f:id:hiroga_cc:20200428082358p:plain

作成失敗時、特に画面上にエラーは表示されないので気づきづらいのですが、 idea.logを見るとしっかり表示されています。

f:id:hiroga_cc:20200428081112p:plain
直接プロジェクトテンプレートのフォルダを編集した後のログ

idea.log は私の環境だと/Users/{USER}/Library/Logs/JetBrains/IdeaIC2020.1/idea.log です。

作成されたプロジェクトは、元のテンプレートの値が置換される箇所とそうでない箇所があるようです。例えばMakefile内のアプリケーション名は置換されませんでした。

2020-05-03 追記: gradleプロジェクトをテンプレート化すると、 ./gradlew でコメント行がエスケープされる上にパーミッションが初期化されて実行できなくなります。直せばいいとはいえ、うーん。

まとめ

細かいバグはありそうですが、都度Gradleの設定をコピらなくていいのは嬉しいので活用していきたいですね。