Hatena::ブログ(Diary)

marsのメモ RSSフィード Twitter

2012-10-24(Wed) IntelliJで複数のプロジェクトを開く方法 #intellij

IntelliJで複数のプロジェクトを開く方法

きっかけはこちらのつぶやき。

IntelliJにはEclipseの「ワークスペース」とかNetBeansみたく複数のプロジェクトをまとめて管理しとくって考え方は無く,「プロジェクト」とそれに関連した「モジュール」という考え方で,IntelliJインスタンスは「プロジェクト」単位に起こす。

File->Open PorjectやReopenでプロジェクトを選ぶと,こんなダイアログが表示されると思う。

f:id:masanobuimai:20121024221818p:image


ここで「New Window」を選ぶと,別のIntelliJでプロジェクトが開くので,結果的に複数のプロジェクトを同時に表示できる。ただ,IntelliJのプロセスもその分増えるので,マシンにとってやさしくない。:-Pウソでした。プロジェクトを複数開いてもIntelliJのプロセスは1つのままでした。

といっても,これが普通だと思っていたので,関係無いプロジェクトを横断して何かしたいと思ったことが無いので, @ さんのつぶやきはちょっと新鮮だった。:-)


ちなみに,IntelliJ/Eclipse/NetBeansのプロジェクトまわりの用語の違いは以下の通り*1

IntelliJEclipseNetBeans
Projectworkspace該当無し/もしくはProject Group
ModuleProjectProject

あと,t_wada さんがまとめたtogetterはこちら。

JetBrains 製 IDE (IntelliJ, RubyMine, WebStorm 等) で小さいプロジェクトをたくさん扱うには - Togetterまとめ



IntelliJでそんなことやろうと思っても出来ないか?というとそうでもなくて,「依存関係のあるモジュール」をまとめて「プロジェクト」を作るけど,別に「依存関係なくても」プロジェクト作れるんだよね。と,思ったので,実際にやり方を解説しときます。


まず,テキトーなプロジェクトを作っとく。既存のモジュールのとりまとめ用プロジェクトなので「Create module」のチェックは外して,プロジェクトだけ作る。

f:id:masanobuimai:20121024221819p:image


空っぽのプロジェクトは,プロジェクトディレクトリIntelliJのプロジェクトファイル(./ideaディレクトリ)があるだけ。ドット付きなのでMacLinuxからはぱっと見空のディレクトリにしか見えない。ちなみに,IntelliJ以外のJetBrains製品もプロジェクトディレクトリには./ideaディレクトリができたはず。

f:id:masanobuimai:20121024221820p:image


あとは,そのプロジェクトにまとめたいモジュールを取り込む。IntelliJの場合は,File->Project Structure*2からモジュールの追加を選び「Import existing module」で,取り込みたいモジュールを指定する。ちなみに,モジュールってのは*.imlファイルのことね。

f:id:masanobuimai:20121024221821p:image


あとは,取り込みたいモジュールの分,この作業を繰り返すだけ。取り込んだモジュールは,もともとどこかのプロジェクトに属しているはずなので,取り込んだプロジェクトディレクトリは相変わらず空のまま。

f:id:masanobuimai:20121024221820p:image


普通はプロジェクトディレクトリの配下にモジュールを作るんだけど,実のところプロジェクトとモジュールがどこにあるかは関係ない。なので,余所のプロジェクトのモジュールを取り込み(Import existing module)と言ってるけど,どっちか言うとリンクに近いかな。


気をつける事としては,取り込んだモジュールSDKや出力ディレクトリは「プロジェクトの指定に合わせる」になってた場合,不幸な結果になる事もあるので,必要に応じてモジュール個別に設定し直した方が良いかも知んない。正直,ちょっとメンドイかも。

まずは,出力先(先ほどと同じ,Project Structureで設定する)。こっちはプロジェクト依存(Inherit project compile output path)であっても,モジュールごとに出力先が異なるので,ほっといても大丈夫かも。

f:id:masanobuimai:20121024221823p:image


つづいてSDK。「Project SDK」が指定してあると,あるプロジェクト下のモジュールは「すべて同じSDKを使う」って事になるので,異なるSDKを使っているモジュールをまとめた場合は,モジュールごとにSDKを指定しとかないと変なエラーがでるかも知んない。

f:id:masanobuimai:20121024221824p:image


と,こんだけしんどい事すればEclipseワークスペースモドキをIntelliJでも作れるわけだ。

f:id:masanobuimai:20121024221822p:image


ちなみに,ちゃんと依存関係持たせたいとか,あるモジュールライブラリとしてプロジェクトに参加させたいと言った本来の使い方については,こちらを参照のこと。

IntelliJで他のプロジェクトをライブラリプロジェクトとして読み込む - 仙台 Ruby Vim JavaScript フリーランスプログラマ


おまけ:その1

そんでだ。そこまで面倒かけずに,ちょいとファイルをチラ見したいだけだったら,プロジェクト外のファイルをIntelliJのエディタ部分(下図のオレンジ枠)にドラッグ&ドロップすればいい。

f:id:masanobuimai:20121024221825p:image


いつのバージョンからかは忘れたけど,こんな風にプロジェクト外のファイルもIntelliJで開いて編集できる。

f:id:masanobuimai:20121024221826p:image


むろん,拡張子に応じたシンタックスハイライトも効くし,Javaのファイルとかだと,放り込んだプロジェクトのクラスパスに応じたコード補完とかもしてくれる。あとファイルを開きっぱにしとけば,次回そのプロジェクトを開いたときも,そのファイルを覚えて開いてくれる(閉じちゃっても,Recent Filesでまた開けるけど)。結構,至れり尽くせりだったりするのだ。:-)

f:id:masanobuimai:20121024221827p:image


あと,下らない話だけど,IntelliJのbinディレクトリ*3にある idea.batidea コマンド経由でもファイルを開けるってヤツ。これは知ってたけど,実際に使った事は無い。

f:id:masanobuimai:20121024221829p:image


こんな感じにファイルパス渡すと,現在動いているIntelliJインスタンス(とそのプロジェクト)にそのファイルを開いてくれる。

f:id:masanobuimai:20121024221817p:image


IntelliJが動いてない状態でコマンド叩くと,IntelliJを起動するけど,プロジェクト開いてないってんでエラーになるだけなので気をつけてね。

あと,diffオプション付けて2つのファイルを指定すると,diffビューで開いたりもする。

$ idea diff file1 file2

一応,これらの件はヘルプに書いてたりもする。

IntelliJ IDEA 2017.1 Help :: Working with IntelliJ IDEA Features from Command Line


おまけ:その2

プロジェクト外のファイル開いたら,そこを頼りにNavigation Barから,他のファイルを辿れるとか...。

f:id:masanobuimai:20121024221830p:image


おまけ:その3

ワークスペースがないからプロジェクト横断した検索ってできないんじゃね?」とふと思いついたけど,実はできた(知らなかったw)。

Editor->Find->Find in Path...で検索ダイアログ出して,Scopeを「Directory」にするだけだった。この場合,IntelliJインデックス効かないから遅いけど。

f:id:masanobuimai:20121024221828p:image

*1:参考:IntelliJ IDEA 2017.1 Help :: Meet IntelliJ IDEAIntelliJ IDEA 2017.1 Help :: Meet IntelliJ IDEA

*2IntelliJ以外だと「Project Structure」自体が存在しないみたいなので,たぶんFile->Settingsから設定すんだと思う

*3$IDEA_HOME/binMac OSの場合,$IDEA_HOME/Contents/MacOS

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/masanobuimai/20121024/1351085505
カレンダー
2003 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2004 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 03 | 04 | 05 | 06 | 07 | 09 | 11 | 12 |
2015 | 03 | 05 |
2016 | 01 | 02 | 04 |