Si votre Spring BootJar ne fonctionne pas

Dépannage des problèmes de chargement de Spring Boot Jar



image







Avez-vous rencontré le problème de démarrage d'une nouvelle archive Spring Boot?







En général, l'innovation dans ce sens n'est pas la première, il n'y a pas de normes spéciales. Par conséquent, beaucoup de gens ratissent les problèmes et les résolvent sur les forums et les débordements de pile.

Si vous rencontrez également un problème, je vous aiderai à le résoudre. Dans ce cas, lisez la suite.







, BootJar . , .







. — JSP . JSP? , - , , .







( ):







/src/main/
    java/
    resources/
        static/
            some.html
        public/
    webapp/
        WEB-INF/jsp
            index.jsp
      
      





BootJar / BootWar, jsp BootJar . BootWar. , . , — , , , . BootRun , .







, : , .







, . BootJar. , … ! , 302 + 404 ( ). .

— , , , webjars. ???







. jsp BootJar, BootWar. … . , .







, . BootJar — . .







: Spring Boot , . — . ! .







. — BootJar (webjars), , , , , ! , .







— - static/, public/. , . jsp . , . , ( ), jsp . jsp ,

spring.resources.static-locations









.

, , , . , ( webapp/), , , — META-INF/resources, . BootJar. .







? -, -, , . — . , . , .







-? -, , , -, . , . , : — , , .







. . , , classpath.







, . ?







.







  1. spring- . , , , jsp .
  2. . : spring-, , — , , . , .
  3. — BootJar.


. , , .

Gradle.

.







sourceSets {
    jsp {
        resources.source(sourceSets.main.resources);
        resources.srcDirs += ['src/main/webapp'];
    }
    jmh {
        .. ..
    }
}
      
      











task jsp(type: Jar, description: 'JSP Packaging') {
    archiveBaseName = 'jsp'
    group = "build"
    def art = sourceSets.jsp.output
    from(art) {
        exclude('META-INF')
        into('META-INF/resources/')
    }
    from(art) {
        include('META-INF/*')
        into('/')
    }
    dependsOn(processJspResources)
}
      
      





processJspResources , . :







bootJar {
    dependsOn(jsp)
    bootInf.with {
        from(jsp.archiveFile) {
            include('**/*.jar')
        }
        into('lib/')
    }
}
      
      





Je n'ai pas pu trouver comment l'ajouter d'une autre manière (directe) - il est impossible de connecter la configuration jspImplementation du projet lui-même, mais j'aimerais bien. Mais si nous le prenons toujours d'un autre module, nous le faisons toujours:







artifacts {
    jspImplementation jsp
}
      
      





Voilà, maintenant nous avons une bibliothèque de ressources, que le tomkat doit charger selon tous les standards, et elle se charge. Exécutez-le comme BootJar.








All Articles