Je tente de déployer une application minimale Vaadin/SpringBoot en tant que fichier WAR dans un Tomcat autonome.Déploiement de Vaadin/SpringBoot en tant que WAR
Tout fonctionne si je cours gradle vaadinRun
et l'accès sous localhost:8080
, mais la création du fichier WAR avec gradle war
puis le copier dans le dossier webapps de mes résultats Tomcat dans un 404. Malheureusement les journaux Tomcat ne montrent rien. Essayer d'accéder via localhost:8080/hello-vaadin
.
Voici la classe application elle-même:
package com.somecompany;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.boot.autoconfigure.*;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.web.support.SpringBootServletInitializer;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.boot.web.servlet.ServletComponentScan;
import com.vaadin.spring.annotation.EnableVaadin;
@ServletComponentScan
@SpringBootApplication
@EnableVaadin
public class Application extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
configureApplication(new SpringApplicationBuilder()).run(args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
return configureApplication(builder);
}
private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) {
return builder.sources(Application.class);
}
}
Ceci est l'interface utilisateur-classe correspondante:
package com.somecompany;
import com.vaadin.annotations.Theme;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.server.VaadinRequest;
import com.vaadin.ui.UI;
import com.vaadin.ui.Grid;
import org.springframework.beans.factory.annotation.Autowired;
import com.vaadin.ui.Label;
@SpringUI
@Theme("valo")
public class HelloWorldUI extends UI {
@Autowired
public HelloWorldUI() {
}
@Override
protected void init(VaadinRequest request) {
setContent(new Label("Hello World!"));
}
}
Et enfin mon script gradle:
plugins {
id "java"
id "com.devsoap.plugin.vaadin" version "1.2.4"
id "org.springframework.boot" version "1.5.7.RELEASE"
}
jar {
baseName = 'com.somecompany.hello-vaadin'
version = '0.0.1-SNAPSHOT'
}
apply plugin: 'war'
war {
baseName = 'hello-vaadin'
version = '1.0'
}
springBoot {
mainClass = 'com.somecompany.Application'
}
bootRepackage {
mainClass = 'com.somecompany.Application'
}
repositories {
jcenter()
mavenCentral()
maven { url "http://oss.sonatype.org/content/repositories/vaadin-snapshots/" }
maven { url 'https://repo.spring.io/libs-release' }
maven { url "https://repository.jboss.org/nexus/content/repositories/releases" }
}
dependencies {
compile("org.springframework.boot:spring-boot-starter-web")
providedRuntime("org.springframework.boot:spring-boot-starter-tomcat")
}
Après avoir traversé tutoriel après le tutoriel, il doit y avoir quelque chose que je néglige. Mais quoi, je ne vois pas quel pourrait être le problème?
Des indices très appréciés!
En tant qu'utilisateur maven j'ai besoin du spring-boot-maven-plugin, peut-être qu'il y a aussi un équivalent pour gradle? – mrkernelpanic
@Jay Oui, je peux voir l'application de la page du gestionnaire. – Tobias
@mrkernelpanic Cela devrait être fait avec dans la 4ème ligne, le plugin org.springframework.boot. – Tobias