2011-08-01 14 views
8

Kuruluş komut dosyamda veritabanlarıyla çalışıyorum. Tüm veritabanı detayları benim özelliklerimdeki dosyada, ancak kullanıcının hangi detayları kullanacağını kolayca seçebildiğimi merak ediyordum? Phing ile çalışıyorum ama Ant'e çok benzediğinden, aynı zamanda Ant yanıtlarını da kabul ediyorum. Ben Kullanılacak veritabanı seçmek için kullanıcıya basit yapı bayrağını sunmak istiyorumPhing (ve Ant) oluşturma komut dosyalarındaki özellikleri seçme

# 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 

:

İşte benim örnek build.properties bu. Bir veritabanı şemasını denetlemek için bir oluşturma görevim olduğunu varsayalım. Ben şöyle bir yapı bayrağını sunmak istiyorum:

phing -Ddatabase=staging check-schema 

db.staging kullanmalıdır O * veritabanı bağlantısı detayları için özelliklerini.. Böyle bir şeyi nasıl başarabilirim?

cevap

7

Phing yapı dosyalarında özellikleri barındırabilirsiniz. Bunu yapmak, aradığınız işlevselliği elde eder.

<?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> 

Ayrıca şeyler yerine -D komut satırı seçeneği belirleme kullanıcılar için daha kolay hale getirmek için giriş etiketine bakmak isteyebilirsiniz:

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

Müthiş! Yuvalama özelliklerinin işe yaradığını bilmiyordum (ve işe yaramadığını gösteren birkaç rapor buldum, bu yüzden hiç denemedim). 'Girdiye' gelince, ben -D bayraklarını tercih ederim, çünkü bunu tekrar dışarıdan yazabilirim (örneğin Phing'i Phing'e önceden girerek düşünün). –