2017-07-16 1 views
0

J'ai créé un projet JHipster. Je voudrais exécuter les changesets de liquidibase manuellement. Par défaut, les changesets sont inclus dans le classpath. Le changelog est dans src/main/resources/config/liquibase/master.xml, et les changesets sont dans src/main/resources/config/liquibase/changelog.Comment définir le chemin de classe liquibase

<?xml version="1.0" encoding="utf-8"?> 
<databaseChangeLog 
    xmlns="http://www.liquibase.org/xml/ns/dbchangelog" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.5.xsd"> 

    <include file="classpath:config/liquibase/changelog/00000000000000_initial_schema.xml" relativeToChangelogFile="false"/> 
    <!-- jhipster-needle-liquibase-add-changelog - JHipster will add liquibase changelogs here --> 
    <!-- jhipster-needle-liquibase-add-constraints-changelog - JHipster will add liquibase constraints changelogs here --> 
</databaseChangeLog> 

Lors de l'exécution mvn liquibase:update, je reçois une erreur parce que les changesets ne sont pas dans le classpath même si le fichier existe:

[ERROR] Failed to execute goal org.liquibase:liquibase-maven-plugin:3.5.3:update (default-cli) on project playground: Error setting up or running Liquibase: liquibase.exception.SetupException: classpath:config/liquibase/changelog/00000000000000_initial_schema.xml does not exist -> [Help 1] 

J'essaie donc de courir à partir de la ligne de commande en réglant le chemin de classe.

liquibase --classpath=src/main/resources --classpath=postgresql-42.1.3.jar 
--url=jdbc:postgresql://localhost:5432/playground 
--driver=org.postgresql.Driver 
--changeLogFile=src/main/resources/config/liquibase/master.xml 
--username playground --password=***** update 

avec la même erreur: Unexpected error running Liquibase: classpath:config/liquibase/changelog/00000000000000_initial_schema.xml does not exist

Une solution consiste à supprimer la référence classpath: dans la inclure une partie mais je voudrais éviter d'éditer le fichier à chaque fois qu'un changeset est ajouté par jhipster lors de l'utilisation jhipster entity ou jhipster import-jdl.

+0

Pouvez-vous définir deux fois le classpath? Je vois deux drapeaux '--classpath'. Notez également que cela a été changé hier et classpath sera supprimé dans les futures versions de JHipster https://github.com/jhipster/generator-jhipster/pull/6121 –

+0

Je mets deux '--classpath' parce que je ne pouvais pas trouver le syntaxe pour un seul '--classpath'. J'ai essayé avec ';' séparateur, mais n'a pas fonctionné. Il semble supprimer 'classpath:' sera la solution future – Sydney

Répondre

0

La solution consiste à exécuter mvn process-resources avant d'exécuter une commande liquibase, de sorte que les fichiers sous src/main/resources se trouvent dans le dossier target/classes. Puis retirez la pièce classpath: comme indiqué dans https://github.com/jhipster/generator-jhipster/pull/6121