2011年5月31日火曜日

web2py を Eclipse で開発するための設定について② スクリプトでEclipseを設定

前回 の続きで、Eclipse のスクリプトを使った設定方法について書きます。

B. スクリプトを使って Eclipse を設定する

設定前に、Eclipse 及び Pydev を導入しておく必要がある。

また手順の B1 及び B2 は一旦開発マシンに設定すれば、以後設定する必要はない。2度目以降のプロジェクトでは、手順の B3 から行う。

B1. Apache Maven の導入(準備)

Maven はソフトウェアプロジェクト管理ツールだ、・・・といっても私自身 Maven の機能を理解できていない。詳しいことは、参考サイトに説明があるので読んで欲しい。

スクリプトでは、Maven を使用し Eclipse プロジェクトを生成する。インストール方法の説明も同じサイトにあるので、導入して欲しい。

参考
テックスコア - Maven とは
Apache Maven Project - Welcome to Apache Maven

B2. スクリプトのダウンロードと設置(準備)

Eclipse の設定を行うスクリプトだが、次の2つある。

voa-web2py2eclipse
neo-web2py2eclipse

しかしプロジェクトの名前は違うが、スクリプトの中身は同一のようだ。ドキュメントの量は voa の方が多い。

どちらのプロジェクトからもでのよいので、スクリプトをダウンロードする。voa のダウンロードファイルはテキスト形式なので、create_eclipse_project.py に改名しておく。 neo のダウンロードファイルは、tar.gz なのでファイル解凍する。



次にスクリプトの設置であるが、web2py のインストールフォルダ下の applications フォルダに、 create_eclipse_project.py をコピーする。

B3. 新しいアプリケーションを作成する(web2py IDE)
web2py IDE の New simple application で新しいアプリケーションの作成を行う。
B4. スクリプトを実行し、Eclipseプロジェクトファイルを作成する(コマンドプロンプト)

コマンドプロンプト(コマンドライン)を開き、web2pyインストールフォルダ下の applications フォルダ に移動する。

次にコマンドを起動する。コマンド書式は次の通りだ。

python create_eclipse_project.py (アプリケーション名)
引数には B3 で作成した アプリケーション名 を入れる。
次にスクリプトが動き Python インタープリタ名を質問してくるので、入力する。

Windows環境下のスクリプト実行例を示す。
アプリケーション名は myapp 、インタープリタ名は python25 を指定している(1,2行目)。

C:\web2py\applications>python create_eclipse_project.py myapp
Name of Pydev Python interpreter to use (empty string to cancel)? python25
[INFO] Scanning for projects...
[WARNING]
[WARNING] Some problems were encountered while building the effective model for org.voiceofaccess:myapp_:jar:0.0.1-SNAPSHOT
[WARNING] 'artifactId' contains an expression but should be a constant. @ org.voiceofaccess:${project.name}:0.0.1-SNAPSHOT, C:\web2py\applications\myapp\pom_generated.xml, line 10, column 17
[WARNING]
[WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.
[WARNING]
[WARNING] For this reason, future Maven versions might no longer support building such malformed projects.
[WARNING]
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building myapp_ 0.0.1-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] >>> maven-eclipse-plugin:2.8:eclipse (default-cli) @ myapp_ >>>
[INFO]
[INFO] <<< maven-eclipse-plugin:2.8:eclipse (default-cli) @ myapp_ <<<
[INFO]
[INFO] --- maven-eclipse-plugin:2.8:eclipse (default-cli) @ myapp_ ---
[INFO] Using Eclipse Workspace: null
[INFO] Adding default classpath container: org.eclipse.jdt.launching.JRE_CONTAINER
[INFO] Not writing settings - defaults suffice
[INFO] Wrote Eclipse project for "myapp" to C:\web2py\applications\myapp.
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 6.273s
[INFO] Finished at: San May 29 20:31:02 JST 2011
[INFO] Final Memory: 4M/15M
[INFO] ------------------------------------------------------------------------
いくつか Warning が出ているが、Eclipse環境が生成される。環境によっては、スクリプトでエラーが発生して止まる場合がある。これらのスクリプトの問題に関しては、後述する。

B5. Eclipse で生成したプロジェクトをインポートする(Eclipse)

次の手順でプロジェクトのインポートを行う。

  1. Eclipse メニューの [ファイル] > [インポート] でインポートウィザードを開く。
  2. ウィザードの [一般] > [既存プロジェクトをワークスペースへ] を選択し、[次へ] ボタンを押す。
  1. [ルートディレクトリの選択] でインポートするアプリケーションのフォルダを指定する。
  2. [プロジェクト] のところにプロジェクト名が表示されるので、プロジェクトが選択されていることを確認する。
  3. [完了] ボタンを押してプロジェクトのインポートを行う。

B6. 起動構成の設定(Eclipse)

スクリプトは web2py.py のリンクは作成してくれるので、A4 の 2.起動構成の設定 を行えばよい。

B7. Unresolved import対策(ソース)

次回記事の Unresolved import対策 を参照のこと

以上でスクリプトを使った Eclipse 設定の手順説明を終わる。
次に、スクリプトを使った設定で発生する問題ついて簡単に解説する。

B付録 スクリプトの問題点と解決策

前章で説明したスクリプトを使った設定であるが、いくつか問題点があるので説明していく。

スクリプト実行時にエラーが発生する

環境によって違うと思うが、スクリプト実行時にエラーがでることがある。

C:\web2py\applications>python create_eclipse_project.py myapp
Name of Pydev Python interpreter to use (empty string to cancel)? python25
Traceback (most recent call last):
  File "create_eclipse_project.py", line 274, in <module>
    main(sys.argv[1:])  # Start the process (without the application name)
  File "create_eclipse_project.py", line 150, in main
    create_eclipse_project(*args)
  File "create_eclipse_project.py", line 209, in create_eclipse_project
    subprocess.call(['mvn', '--file', pom_dest, 'eclipse:eclipse'])
  File "C:\Python25\lib\subprocess.py", line 444, in call
    return Popen(*popenargs, **kwargs).wait()
  File "C:\Python25\lib\subprocess.py", line 594, in __init__
    errread, errwrite)
  File "C:\Python25\lib\subprocess.py", line 822, in _execute_child
    startupinfo)
WindowsError: [Error 2] The system cannot find the file specified
上記のようなエラーが出た場合は、スクリプトを修正すれば実行可能になる。

208・209行目近辺に次のコードがある。

subprocess.call(['mvn', '--file', pom_dest, 'eclipse:eclipse'])
これに shell=True オプションを追加して保存する。
subprocess.call(['mvn', '--file', pom_dest, 'eclipse:eclipse'], shell=True)

web2py.py オブジェクトのリンク異常

これも環境によって発生するようだ。web2py.py にリンクにエラーが出ている場合、右クリックメニューの [プロパティ] から正常なリンクに修正する。もしくは一旦削除して、A4 の 1. web2py.py のリンクを設定する を行う。

PyDev - PYTHONPATH のソースフォルダ設定でフォルダが全て登録されない

スクリプトでは、web2pyアプリケーションのソースフォルダ全部は登録されない。このため、A3. Pydev - PYTHONPATH の設定 と同様の設定を行えばよい。

ただこの PyDev のソースフォルダ設定は、指定しても指定しなくても動作にはほとんど影響はないようだ。このため登録しなくても良い。しかし登録しない場合、一部の分析ツールは動作しないとのことだ。
またソースフォルダ設定すると、パッケージエクスプローラ上は設定したフォルダが上位に表示されるので、その点だけでも登録したほうが良いだろう。
参考: PyDev.org - manual


 

記事が長くなってしまったので、Unresolved import対策 については次回に続きます。