2017-06-27 2 views
0

Ich habe versucht, mit Liquibase Maven Update-Befehl zu arbeiten.Liquibase maven Update-Befehl mit Parameter toTag

Mein Szenario ist folgendes:

1. I have three versions of SQL in SVN. 
    2. I have already migrated to version 1. 
    3. Then I want to upgrade to version 2. 
    4. But don't want to apply version 3 migration. 
    5. With each version's changeset I use tagDatabase to tag database. 

Ich ging durch Maven Update optionale Parameter. Ich habe einen optionalen Parameter "toTag" gefunden und versucht, ihn zu benutzen. Aber das Ergebnis ist toTag Parameter funktioniert nicht wie erwartet. Liquibase geht voran mit der Migration von Version 3.

Meine Maven-Konfiguration ist unten:

<profile> 
    <id>migrate-change-log</id> 
    <build> 
     <resources> 
      <resource> 
       <directory>src/main/resources</directory> 
       <filtering>true</filtering> 
      </resource> 
     </resources> 
     <plugins> 
      <plugin> 
       <groupId>org.liquibase</groupId> 
       <artifactId>liquibase-maven-plugin</artifactId> 
       <version>${liquibase.version}</version> 
       <configuration> 
        <propertyFile>liquibase.properties</propertyFile> 
       </configuration> 
       <executions> 
        <execution> 
         <phase>process-resources</phase> 
         <configuration> 
          <verbose>${verbose}</verbose> 
          <toTag>${to.tag}</toTag> 
         </configuration> 
         <goals> 
          <goal>update</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 
     </plugins> 
    </build> 
</profile> 

Vielen Dank im Voraus.

Antwort

0

Um NICHT ein bestimmtes Changeset in einer bestimmten Umgebung bereitzustellen, müssen Sie etwas angeben, das verhindert, dass Changeset bereitgestellt wird. Die gebräuchlichsten Methoden sind Kontexte oder Labels. Sie könnten beispielsweise entscheiden, dass eine Änderung nur für Entwicklungs- oder Testumgebungen geeignet ist, sodass Sie das Attribut context="dev OR test" für dieses Änderungsset verwenden können. Dann geben Sie bei der Bereitstellung den Kontext im folgenden Befehl an: d. H. bei der Bereitstellung in der Entwicklungsumgebung und bei der Bereitstellung in der Produktion geben Sie context=prod an.

Tags sollen die Datenbank so kennzeichnen, dass sie alle Änderungen für eine bestimmte Version der Software enthält, mit der die Datenbank arbeitet, und nicht als Möglichkeit, zu steuern, welche Änderungen implementiert werden.

+0

Ich stimme zu und derzeit verwende ich die Etiketten zur Angabe der Version, Label = "v1.0" und während der Bereitstellung werde ich alle Änderungssets für Label v1.0 ausführen und für die Umgebung verwende ich Kontextattribut. Und zuletzt verwenden Sie , um die Datenbank zu kennzeichnen. Ist das der richtige Weg? Vielleicht bin ich mir klar über diesen Punkt, warum Tag Datensatz in der Datenbank bleibt und was bedeutet "toTag" Attribut? Und wie kann ich liquibase migrieren von v1.0 auf v2.0, wenn in der Quelle mehrere Versionen verfügbar sind. Lables wieder, gute Annäherung ?? –

Verwandte Themen