2011-08-01 16 views
8

Pracuję z bazami danych w moim skrypcie kompilacji. Wszystkie szczegóły bazy danych znajdują się w moim pliku właściwości, ale zastanawiałem się, w jaki sposób mógłbym łatwo wybrać, który zestaw danych ma zostać użyty? Pracuję z Phingiem, ale ponieważ jest tak podobny do Anta, przyjmuję również odpowiedzi od Anta.Wybieranie właściwości skryptów kompilacji Phing (i Ant)

Oto mój przykładowy build.properties:

# 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 

Chciałbym zaoferować użytkownikowi prosty build flagę na wybór bazy danych do wykorzystania. Załóżmy, że mam zadanie kompilacji, aby sprawdzić schemat bazy danych. Chciałbym zaoferować flagę kompilacji w następujący sposób:

phing -Ddatabase=staging check-schema 

To powinno korzystać z właściwości db.staging. * Dla szczegółów połączenia z bazą danych. Jak mogę osiągnąć takie coś?

Odpowiedz

7

W plikach kompilacji Phing można zagnieżdżać właściwości. W ten sposób uzyskasz funkcjonalność, której szukasz.

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

Można również zajrzeć do znacznika wejściowego, aby ułatwić użytkownikom zamiast podanie opcji wiersza polecenia -D:

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

Awesome! Nie wiedziałem, że działały funkcje zagnieżdżania (i znalazłem kilka raportów, że to nie zadziałało, więc nigdy nie próbowałem). Jeśli chodzi o 'input', wolę flagi -D, ponieważ mogę skryptować to ponownie z zewnątrz (pomyśl o zahaczeniu Phinga na przykład o Git przed wprowadzeniem). –

Powiązane problemy