2011-08-01 6 views
8

私は自分のビルドスクリプトでデータベースを扱っています。すべてのデータベースの詳細は私のプロパティファイルにありますが、私はどのように使用する詳細のセットをユーザに簡単に選択させることができるのだろうかと思っていました。私はPhingと一緒に働いていますが、Antと非常に似ているので、Antの回答も受け入れます。私が使用するデータベースを選択するようにユーザーに簡単なビルドフラグを提供したいと思いPhing(およびAnt)ビルドスクリプトでプロパティを選択する

# Connection details for the dev database 
db.dev.hostname=localhost 
db.dev.database=foo 
db.dev.username=foo_user 
db.dev.password=foo_password 

# Connection details for the staging database 
db.staging.hostname=some.remote.server 
db.staging.database=bar 
db.staging.username=bar_user 
db.staging.password=bar_password 

は、ここに私のサンプルbuild.propertiesです。データベーススキーマをチェックするビルドタスクがあるとします。次のようなビルドフラグを提供したいと思います。

phing -Ddatabase=staging check-schema 

データベース接続の詳細については、db.staging。*プロパティを使用する必要があります。どのように私はそのようなことを達成することができますか?

答えて

7

Phingビルドファイルでは、プロパティをネストできます。そうすることで、探している機能を得ることができます。

<?xml version="1.0"?> 
<project name="test" default="init"> 
    <property name="database" value="staging" /> 
    <property name="db.dev.hostname" value="localhost" /> 
    <property name="db.staging.hostname" value="some.remote.server" /> 
    <property name="db.hostname" value="${db.${database}.hostname}" /> 

    <target name="init"> 
    <echo msg="${db.hostname}" /> 
    </target> 
</project> 

あなたはまた、代わりに、-Dコマンドラインオプション指定のユーザーのために物事を簡単にするためにinputタグに見たいと思うかもしれません:

<input propertyname="database" validargs="dev,staging">Which database?</input> 
+0

素晴らしいを!私は入れ子のプロパティが働いたことを知りませんでした(そして、うまくいかなかったとの報告がいくつか見つかったので、私は試みませんでした)。 'input'に関しては、私は外部から再びスクリプトを書くことができるので、-Dフラグを好む(PhingをyoutのGit pre-commmitのように引っ掛けることを考えてください)。 –

関連する問題