2013年3月13日水曜日

Eclipse3.7のワークスペースの設定情報をシンボリックリンクで共有する

 

Eclipseはワークスペース単位で設定を区別している。
このおかげでプロジェクトの種類ごとに違う設定を適用できるので、規約の違う複数のプロジェクト群があるときには重宝するのだと思う。
 
しかし自分にはそういう要求はないので、ユーザーごとに同じ設定を使えるようにしてほしいと思う。が、Eclipseにそれを陽に実現する手段はないようだ。
非公式には何かやり方があるんじゃないかなと思ったけど、意外に見当たらない。


Clone workspace in eclipse - Stack Overflow

このページによると、
  • 設定を保存しているフォルダ「.metadata」はワークスペース直下から移動できない
  • 設定データに絶対パスが多く含まれている
といった問題があるので単純に設定フォルダを共有するだけでは無理みたい。
 
ここの2番目の回答によると、「.metadata/.plugins/org.eclipse.core.runtime/.settings」をコピーすればいいらしい。
さらにそれをDropboxを使ってシンボリックリンクを貼ることも可能。
が、上記のページでも指摘されているように、.settingsフォルダ内の設定ファイルにはところどころに絶対パスの設定が含まれている。設定の共有はローカル内にとどめておいた方がよさげ。
なので自分はDropboxは使わないでシンボリックリンクだけを使う方向でやることにした。
 
 
Eclipseを終了し、設定を共有したいワークスペースの\.plugins\org.eclipse.core.runtimeフォルダで、こんな感じに打てばいい(管理者権限が必要)
> move .settings .org.settings  > mklink /d .settings "共有設定情報があるフォルダ(共有したい.settingsフォルダを別の場所にコピーしたものがよさそう)"
 
バッチファイルはこれ。管理者権限と事前のディレクトリパスの入力が必要。あまり便利じゃないしもしかすると何かのデータを破壊するかもしれない。バッチわからん。。。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
@echo off
setlocal
 
rem まずこのファイルパスを共有したい設定フォルダに変える
rem 例:"WORKSPACE_DIR\eclipse_workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings"
set theSharedFolder="C:\Users\dai\Documents\eclipse_workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings"
 
rem このファイルパスを共有させる設定フォルダの上フォルダに変えて実行!
rem 例:"WORKSPACE_DIR\eclipse_workspace\.metadata\.plugins\org.eclipse.core.runtime\"
set theSharingFolder="C:\Users\dai\Documents\eclipse_workspaces\swt\.metadata\.plugins\org.eclipse.core.runtime\"
 
set settingfolder=".settings"
set orgfolder=".org.settings"
 
cd %theSharingFolder%
echo pwd: %theSharingFolder%
 
if not exist %theSharedFolder% (
set mes=%theSharedFolder% ないよ
goto end
)
if not exist %theSharingFolder% (
set mes=%theSharingFolder% ないよ
goto end
)
if not exist %orgfolder% (
if not exist %settingfolder% (
set mes=%settingfolder%, %orgfolder% どっちもないよ
goto end
)
)
echo move %settingfolder% %orgfolder%
echo mklink /d %settingfolder% %theSharedFolder%
echo 上記のコマンド実行するけどいいですか? OKなら「y」と入力してください...
set /p conf="> "
if not %conf% == y (
set mes=canceled
goto end
)
move %settingfolder% %orgfolder%
mklink /d %settingfolder% %theSharedFolder%
echo k k thx bye.
pause
exit/b
 
:end
echo %mes%.
pause
 
今のところうまく動いている。パースペクティブの設定は共有されないみたいだけど、まあいいか。
パースペクティブの設定のコピーはFile→Switch Workspace→OtherでCopy SettingsのWorkbench layoutを選択すればいい。symlinkで共有してもいいのかな?

この作業で気づいたけどEclipseCoderってパスワード平文で保存してるんだね…酷いや。 
  

 
後になって気づいたけど、シンボリックリンクを使うよりも安全で簡単そうな設定管理方法があるらしい。
 
Pulseというサービスを使ってEclispeのプラグイン構成と設定をクラウド上で管理。個人なら無償。

0 件のコメント:

コメントを投稿