2010-07-19 7 views
3

La semaine dernière, j'ai lu sur le démarrage rapide de liquibase et tous les tutoriels connexes, mais je sens que je ne comprends pas toute la dérive de l'utiliser pour le changement consécutif dans la base de données et je avoir des questions encore ouvertes. Je développe une application dans netbeans en utilisant maven avec 3 modules: module dbunit, module de service et le module webapp. Comme vous avez pu deviner dbunit la base de données, le service est au top et la webapp utilise les services.so le parent pom a la déclaration de tous les groupids, artefacts et versions pour tous les jars et les plugins.Comment utiliser réellement liquibase dans un projet maven avec svn

je parviens à générer le fichier changelog de la ligne de commande car db est déjà i existant et en supposant tout mettre en place correctement en utilisant le plugin liquibase Maven:

question 1: Quel sera l'objectif liquibase est depuis ce moment Je fais tout changement de base de données en ce moment?

Question 2: Si je veux ajouter par exemple une nouvelle table à la base de données, je vais ajouter ce nouveau changeSet dans le même fichier changelog ou je dois créer un nouveau fichier changelog.xml?

Question 3: Je crois que lorsque le DBUnit exécute courra le changeset mais est-ce nécessaire d'ajouter le plugin th module webapp trop (peut-être pour exécuter l'objectif liquibase avant le déploiement avec le plugin cargo) ou DBUnit sera prends soin de ça?

Question 4: Quelle subversion exactement aide à garder les états du changelog (en supposant qu'il n'y a qu'un seul changelog refere à la question 2)

merci pour lire ceci et pour vous aider.

Répondre

6
  1. Voir http://www.liquibase.org/documentation/maven

donc nous assignons l'exécution de votre liquibase à une phase comme

<phase>process-resources</phase> 

Mais j'utiliser un exécuteur testamentaire de printemps aussi. Donc, chaque fois que mon application démarre, elle lance un exécuteur liquibase pour exécuter les changelogs manquants dans la base de données. C'est bien, car lorsque vous êtes prêt avec votre travail et vos tests, liquibase a mis à jour votre base de données dev mais pas votre base de données de production. Mais lorsque vous installez votre war et lancez votre webapp, liquibase le gère automatiquement pour mettre votre base de données dans l'état actuel. Vous n'avez donc pas à vous souvenir de faire des choses supplémentaires avant de déployer votre nouvelle version.

  1. Gardez votre changelog.xml avec inclut changelog fichiers comme celui-ci

    http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-1.9. xsd ">
    quand vous voulez une nouvelle table, ajoutez un fichier changelog-0002.xml et référence dans votre maître changelog.xml

  2. voir la réponse 1. Je mettrais dans votre module webapp aussi.

  3. Vous devriez avoir beaucoup de fichiers changelog. donc cette question n'est pas applicable.

+0

Merci pour l'explication, je suis devenu plus clair dans mon mind.There est une autre chose que je me demande about.In mon projet '' Spring' utilise hibernate'.i a laissé tomber les tables de ma base de données, mettre 'hbm2ddl 'pour' valider 'et ajouter le 'changelog généré' au' master changelog', il semble que lorsque les cas de tests s'exécutent, ils échouent parce qu'ils ne peuvent pas trouver les tables, je me demande s'il y a une autre astuce à cela Merci pour la réponse à nouveau –

+0

Je pense que vous devriez utiliser hbm2ddl seulement pour votre changelog initiale. Je n'utilise pas hbm2ddl du tout. – Janning

Questions connexes