Phingの履歴
PHP版ant。情報があんまりないなぁ…。Symfonyで使われてるみたいだけど。
http://phing.info/trac/
ユーザガイド
http://phing.info/docs/guide/current/
インストール
% pear channel-discover pear.phing.info % pear install phing/phing
サンプル
例)temp,logディレクトリを作成して、777にする
build.xml
<?xml version="1.0"?> <project name="myproject" default="install" basedir="."> <target name="install"> <echo msg="Making directory" /> <mkdir dir="temp" /> <mkdir dir="log" /> <chmod file="temp" mode="0777" /> <chmod file="log" mode="0777" /> </target> </project>
build.xmlがあるディレクトリでコマンドを実行
% phing
buildfile
http://phing.info/docs/guide/current/chapters/GettingStarted...
<?xml version="1.0"?> <project name="FooBar" default="dist" basedir="."> <target name="prepare"> <echo msg="Making directory ./build" /> <mkdir dir="./build" /> </target> <target name="build" depends="prepare"> <echo msg="Copying files to build directory..." /> <echo msg="Copying ./about.php to ./build directory..." /> <copy file="./about.php" tofile="./build/about.php" /> <echo msg="Copying ./browsers.php to ./build directory..." /> <copy file="./browsers.php" tofile="./build/browsers.php" /> <echo msg="Copying ./contact.php to ./build directory..." /> <copy file="./contact.php" tofile="./build/contact.php" /> </target> <target name="dist" depends="build"> <echo msg="Creating archive..." /> <tar destfile="./build/build.tar.gz" compression="gzip"> <fileset dir="./build"> <include name="*" /> </fileset> </tar> <echo msg="Files copied and compressed in build directory OK!" /> </target> </project>
タスク
CapsuleTask
テンプレートを使ってファイル生成する。例えば自分でscaffoldみたいなことが作れる。CapsuleというのはPhingが用意した素のPHPによるテンプレートエンジン。テンプレート内で<?php echo $var ?>とかやって変数出力する。素のPHPだからテンプレート内でコードも書けるので手軽。同じようなものにSmartyTaskがある。
指定しなければならないプロパティ
- templatePath
- controlTemplate(テンプレートファイル名)
- outputDirectory
- outputFile
- contextProperties(assignする変数をproperties形式で書かれたファイル名)
svn
この4つが使える。
SvnCheckoutTask
SvnUpdateTask
SvnLastRevisionTask
SvnExportTask
checkoutするならこう
<svncheckout svnPath="svn" // svnクライアントのパス toDir="library" repositoryUrl="http://server/repository/url" />
Zend_Config, Zend_DBを使ってmigrateするタスク
http://item.mindia.jp/akkun_dev/framework/trunk/src/Mindia/T...
build.xml
<project name="myproject" default="install" basedir="."> <taskdef name="dbmigrate" classname="mindia.task.DbMigrateTask" classpath="lib" /> <target name="install"> <dbmigrate connectorFile="config/server.ini"> <fileset dir="application/db"> <include name="*.sql" /> </fileset> </dbmigrate> </target> </project>
config/server.ini
[database]
adapter = Pdo_MySQL
params.engine = mysql
params.username = akkun
params.password = password
params.host = localhost
params.dbname = mydatabase
後はapplication/dbディレクトリに実行したいsqlファイルをいれてphing!