problème avec INIT=RUNSCRIPT et les chemins relatifs

j'utilise les conventions maven pour les chemins source (src/main src/test) et j'ai mes scripts sql dans src/main/resources / scripts.

je veux lancer mon application avec de la mémoire H2 et j'aimerais utiliser l'url jdbc pour initialiser ma db:

database.url=jdbc:h2:mem:;INIT=RUNSCRIPT FROM 'src/main/resources/scripts/create.sql';

mon problème est que ce chemin relatif (src/main/... ) ne fonctionne pas, et que H2 ne se plantera pas si la commande init=runscript ne cible rien.

est ce que quelqu'un sait quel est le chemin que je devrais utiliser pour faire ce travail ?

Merci

35
demandé sur Maxime ARNSTAMM 2010-12-20 16:38:05

2 réponses

Vous pouvez utiliser l'url suivante:

"jdbc:h2:mem:sample;INIT=RUNSCRIPT FROM 'classpath:scripts/create.sql'"

avec celui-ci, il est possible d'Exécuter script depuis classpath. Ainsi, vous pouvez simplement mettre src/main/resources/scripts ou src/test/resources/scripts dans votre maven (ou autre chose).

71
répondu viktortnk 2011-12-13 09:22:59

je te suggère d'essayer d'utiliser un chemin absolu pour commencer, juste pour vérifier que tout fonctionne. Ensuite, vérifiez votre chemin de classe. Par exemple, bin/main/resources/scripts/create.sql, en supposant que bin est l'endroit où vos classes sont compilées, et est sur votre classpath.

Depuis src, là où votre source vit, n'est généralement pas sur le chemin de la classe, cela pourrait être la source de votre problème.

2
répondu darioo 2010-12-20 13:47:02