2017-10-11 4 views
1

J'essaie de suivre this example pour faire l'intégration et spring boot dev tools pour faire le redémarrage automatique. Les classes dans le dossier de construction sont mises à jour lorsque j'exécute la tâche build --continuous mais l'application parle toujours aux anciennes classes. Dans l'exemple, la tâche bootRun est comme ci-dessous. Mon projet a sa tâche personnalisée pour exécuter l'application. En ce moment avec build -continuous lorsque je fais une modification de l'application, il reconstruit les classes, mais l'application en cours ne montre pas les changements. Comment modifier ma tâche personnalisée h2Run afin qu'elle charge les classes modifiées? Je vous remercie.Intégration d'outils de démarrage de démarrage et de démarrage de ressort ne montrant pas les changements de classe mis à jour

La tâche d'exécution de démarrage dans l'exemple

bootRun { 
    classpath = sourceSets.main.runtimeClasspath + configurations.dev 
} 

Ma tâche personnalisée pour bootRun

class Run extends JavaExec { 
    Run() { 
     group "application" 
     dependsOn project.tasks.classes, project.tasks.pathingJar 
     classpath = project.files("$project.buildDir/classes/main", "$project.buildDir/resources/main", project.tasks.pathingJar.archivePath) 
     main = "com.mycompany.Application" 
    } 
} 

task h2Run(type: Run) { 
    classpath = sourceSets.main.runtimeClasspath + configurations.dev // this is not working 
    description "Start $appName using H2 database" 
    args "--spring.profiles.active=dev" 
    mustRunAfter 'cleanH2' 
    dependsOn copyContentTypeLibraries 
} 
+0

Veuillez répondre à la question si personne ne peut répondre. Je dois récupérer ma réputation. ;) – somename

Répondre

1

Je marchais à travers l'article DZone vous lié. Je n'ai pas ajouté votre classe ou tâche personnalisée Run, je viens d'attraper la tâche bootRun dès la sortie de l'article. Même sans aucun code personnalisé, j'ai d'abord ressenti le même comportement que vous.

L'article stipule:

  1. Au premier terminal, commencez Gradle construire comme une tâche continue: gradle build --continuous

  2. Au second terminal, lancez la tâche Gradle bootRun: gradle bootRun

Si je fais ces choses, dans cet ordre, je vois aussi mes classes recompiler, mais le conteneur de servlet ne sélectionne pas les changements. Juste comme tu décris.

Cependant, si je gradle bootRunpremier et gradle build --continuousdeuxième, après l'application est en cours d'exécution, l'application redémarre comme prévu chaque fois que je modifier un fichier java.

Avez-vous essayé d'exécuter les commandes dans les deux fenêtres de terminal dans l'ordre inverse?

+0

vous avez raison je n'ai pas eu à ajouter une tâche d'exécution spéciale. Cela devrait fonctionner quand nous ajoutons la dépendance avec la tâche bootRun de gradle. – somename