EclipseによるPropelビルドプロセス

このドキュメントではAntでPropelのビルドプロセスを実行するためにPHPEclipseEclipse workbenchの使い方を説明します。Propelを使用するいくつかの独立プロジェクトに取り組んでいることを前提とします。

導入

デフォルトではPropelジェネレータはプロジェクトのためにビルド出力と同様に例えばbuild.propertiesruntime-conf.xmlschema.xml といったファイルを保持する/propel/generator/projects パスを使用します。

Eclipse workbenchにおいてこれらをファイルを編集したいが、Propelがあなたのプロジェクトのパスとは異なるパスにインストールされているとします。この場合Propelがビルドプロセスのために必要なファイルを編集する方法は3つの選択肢があります:

  1. PropelインストレーションのためにEclipseの範囲内で新しいプロジェクトを作成します
  2. それぞれのプロジェクトで対応するPropelプロジェクトにリンクを設定します
  3. Propelのbuild.propertiesruntime-conf.xmlschema.xmlをプロジェクトの範囲内に保存します

最初の2つのオプションはセットアップすることはとても簡単ですが両方とも手軽ではありません。3番目のオプションによってすべてのファイルを一つのプロジェクトに所属する同じEclipseプロジェクトに保存することが出来るようになります。さらに、Eclipse workbenchの範囲内でPropelビルドプロセスを実行するのは快適です。

プロジェクトを組織化する

最初に、プロジェクトを組織化しなければなりません。2つのプロジェクトとPropelのためにファイルを組織化する例です:

# propelとphingがインストールされている場所
/_system/phing/
/_system/propel/

# project 1
/project1/_model/    Propelのビルドプロセスのためのファイルを保有する
/project1/_php/cfg/   コンフィギュレーションファイルを保有する
/project1/_php/dob/   生成されたPropelデータオブジェクトクラスを保有する
/project1/_php/sql/   SQLファイルを保有する
/project1/website/    ウェブサイトのルートパス

# project 2
/project2/_model/    build.propertiesといったPropelビルドプロセスのためのファイルを保有する
/project2/_php/cfg/   コンフィギュレーションファイルを保有する
/project2/_php/dob/   生成されたPropelデータオブジェクトクラスを保有する
/project2/_php/sql/   SQLファイルを保有する
/project2/website/    ウェブサイトのルートパス

Propelのためにbuild.propertiesを作成する

runtime-conf.xmlschema.xmlが既に適切にセットアップされていて/project1/_model/ パスに保存されていることを前提とします。次にbuild.propertiesファイルを/project1/_model/ パスに作成することが出来ます。

build.propertiesファイルはAntが必要とするプロパティと同様にPropelビルドプロセスのためのプロパティを含みます。Windows環境上のbuild.propertiesファイルの例です。

#  A N T プ ロ パ テ ィ

php.command = C:/wamp/php5/php.exe
phing.home = E:/_system/phing
propel.home = E:/_system/propel
project.home = E:/project1
project.build = ${project.home}/_model

#  基 本 的 な プ ロ パ テ ィ

propel.project = project1
propel.database = mysql
propel.targetPackage = project1

#  デ ー タ ベ ー ス 設 定

propel.database.url = mysql://root:@localhost/project1
propel.mysql.tableType = InnoDB

#  デ ィ レ ク ト リ

propel.schema.dir = ${project.build}
propel.conf.dir = ${project.build}
propel.templatePath = ${propel.home}/generator/templates

propel.output.dir = ${project.home}
propel.php.dir = ${propel.output.dir}/_php/dob
propel.phpconf.dir = ${propel.output.dir}/_php/cfg
propel.sql.dir = ${propel.output.dir}/_php/sql

#  デ フ ォ ル ト フ ァ イ ル 名

propel.runtime.phpconf.file = config.php

Antプロパティbuild.xml を処理するときにAntによって使用されます。下記をどうぞご覧下さい。

ディレクトリプロパティは重要な部分です。propel.schema.dirpropel.conf.dirプロパティによってPropelはschema.xmlruntime-conf.xmlファイルがどこにあるのかを知ります。propel.templatePathプロパティは設定される必要があります。さもなければPropelはジェネレータパスでテンプレートを見つけることが出来ないからです。他の4つのディレクトリプロパティは出力のために設定されます。

Antのためにbuild.xmlを作成する

このbuild.xmlはAntによって使用されますが、Propelに必要とされるbuild.xmlとは混同してはなりません。これで4つのターゲットをセットアップすることが出来ます:

  1. 既存のデータベースからschema.xmlファイルを作成するため
  2. アプリケーションをビルドするため
  3. データベースを作成するため
  4. 作成されたSQLファイルを実行するため

プロパティはbuild.propertiesを作成する前から取得されます。我々のbuild.xml ファイルは以下の通りです:

<project name="Project1">
  <property file="build.properties" />
  <target name="Create Schema" description="creates schema.xml from DB">
    <exec dir="${propel.home}/generator" executable="${php.command}">
      <arg line="${phing.home}/bin/phing.php -Dproject.dir=${project.build} -Dproject=${propel.project} creole" />
    </exec>
  </target>
  <target name="Propel Build" description="build the application">
    <exec dir="${propel.home}/generator" executable="${php.command}">
      <arg line="${phing.home}/bin/phing.php -Dproject.dir=${project.build} -Dproject=${propel.project}" />
    </exec>
  </target>
  <target name="Create Database" description="create the database">
    <exec dir="${propel.home}/generator" executable="${php.command}">
      <arg line="${phing.home}/bin/phing.php -Dproject.dir=${project.build} -Dproject=${propel.project} -Dtarget=create-db" />
    </exec>
  </target>
  <target name="Run SQL" description="run the SQL file">
    <exec dir="${propel.home}/generator" executable="${php.command}">
      <arg line="${phing.home}/bin/phing.php -Dproject.dir=${project.build} -Dproject=${propel.project} -Dtarget=insert-sql" />
    </exec>
  </target>
</project>

ビルドファイルをAntに追加する

次に、Eclipse workbenchの"Window > Show View > Other > Ant"からAnt viewを開くことが出来ます。Ant viewにおいて"Add Buildfiles"ボタンを使用してプロジェクトからbuild.xmlファイルを選択することが出来ます。Ant viewではビルドファイルはリスト表示されません。4つのターゲットさえリスト表示されません。

ビルドターゲットを実行する

これで"Propel Build"ターゲットを選択して"Run"ボタンを選択することが出来ます。build.xmlファイルはAntによって処理されConsole viewはEclipseによって開かれます。Propelビルドプロセスを監視して警告やエラーに注意することが出来ます。成功して出力ディレクトリがOMクラス、コンフィギュレーションファイルとSQLファイルで満たされます。

データベースを作成する、SQLファイルを実行する、もしくは既存のデータベースからschema.xmlをリビルドするために、他のビルドターゲットを簡単に実行することが出来ます。

終わり

おめでとうございます、出来ました。一旦セットアップすると、Eclipseプロジェクトの範囲内でPropelビルドプロセスの管理とbuild.propertiesschema.xmlの編集が簡単になります。