2015-10-19 5 views
0

Mon application a une base de données intégrée en tant que dépendance "test" (test Maven), mais cela provoque une exception lorsque vous voulez démarrer l'application sans commutateur -D car le pilote jdbc est déclaré dans le fichier application.yml (voir ci-dessous).Sélection du profil par défaut basé sur la portée

Est-il possible de définir la source de données en fonction de la portée (c'est-à-dire du runtime ou du test)? Ou mieux encore pouvez-vous changer le profil par défaut sans aucun commutateur -D (par exemple -Dspring.profiles.active = test)? Cela peut sembler anodin, mais il est déroutant pour notre équipe que vous puissiez exécuter des tests avec succès dans votre EDI, mais lorsque vous essayez de "lancer l'application", cela échoue à moins que vous ne définissiez le commutateur -D.

datasource: 
    url: jdbc:h2 

spring: 
    profiles: profile1 

datasource: 
    url: jdbc:postgresql 

Répondre

1

Si vous utilisez la base de données intégrée uniquement pour les tests, vous pouvez placer un application.properties (ou .yml) dans le dossier src/test/resources/ où vous mettez toutes les propriétés pour le test en courant. Au moins cela fonctionne pour moi . Vous n'avez donc pas besoin de placer vos propriétés de production dans un profil et elles sont utilisées lorsque vous exécutez votre application.

0
  1. Déplacer application.yml dans src/test/resources/

  2. Vous pouvez définir le profil par défaut avec


    datasource.url=jdbc:h2 => 

    datasource: 
     url: jdbc:h2 
    --- 

    spring: 
     profiles: profile1 

    datasource: 
     url: jdbc:postgresql 
+0

je dois définir le profil par défaut en fonction si je fais mes expériences ou pas que malheureusement ça ne marche pas. Connaissez-vous un moyen de définir le profil selon que j'exécute des tests ou normalement? – Charlie