Jak vytvořit u Spring Boot web. aplikace WAR soubor?

publikováno: 1.3.2014

Ve výchozím nastavení používá Spring Boot web. aplikace embedded Tomcat. To je super u hello world příkladů, extra jednoduchých aplikací, nebo pokud používáte Cloud Foundry. Obyčejně ale chcete vytvořit klasickou webovou aplikaci, kterou poté můžete nasadit na jakýkoli Java EE server. Jak na to? 

1. V pom.xml nastavte:

<packaging>war</packaging>

2. v pom.xml do dependencies přidejte:

<dependency>
   <artifactId>spring-boot-starter-tomcat</artifactId>
   <groupId>org.springframework.boot</groupId>
   <scope>provided</scope>
</dependency>

3. Vytvořte tuto třídu:

import org.springframework.boot.builder.SpringApplicationBuilder;
import org.springframework.boot.context.web.SpringBootServletInitializer;

public class HelloWebXml extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(
            SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }
}

Poznámka: Application.class vypadá takto:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan
@EnableAutoConfiguration
public class Application {

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

HOTOVO

Teď už můžete tuto aplikaci spustit na jakémkoli Java EE serveru.

Pro spuštění (na mém oblíbeném) embedded Jetty serveru přidejte do pom.xml dovnitř <build><plugins>:

<plugin>
   <groupId>org.eclipse.jetty</groupId>
   <artifactId>jetty-maven-plugin</artifactId>
   <version>9.1.2.v20140210</version>
</plugin>

Pro vygenerování WAR souboru spusťte v hlavním adresáři projektu:

mvn package

Do adresáře target se vygeneruje soubor s příponou .war.original, který je možné nasadit na jakýkoli Java EE server. Také se vygeneruje soubor s příponou war, který obsahuje embedded Tomcat a je možné ho spustit pomocí:

java -jar nazev-souboru.war

Celý příklad (spolu s Hibernate a Spring Data JPA) je k dispozici na mém GitHub účtu: https://github.com/jirkapinkas/example-spring-boot

 

Reference

Skoleni bylo kazdopadne prinosne, i kdyz ve Springu uz chvilku delam, dodalo mi to kontext a hlubsi porozumeni. Libil se mi i prehled dalsich frameworku, jejich prakticke vyuziti a ze

Daniela

Školení bylo profesionální jako vždy (přesto v přátelském a otevřeném duchu). Je vidět, že Jirka je v dané problematice jako ryba ve vodě a neustále se posouvá kupředu, k čemuž

Aleš

Vyborna forma skoleni - vedeno lektorem podle dane linie se zacilenim na konkretni problematiku, nicmene s moznosti kdykoliv odbocit co vic upresnit problematiku na zaklade dotazu. Velmi uzitecne zejmena v

Petr


Novinky

5.4.2018: Jak hodně artifactů v Mavenu je připravených na použití v module path?
Od Java 9 je možné místo class path používat module path. K tomu je ale důležité, aby každý artifact který používáte měl definované jméno

26.3.2018: Java 10 je tady, Java 9 je EOL
Ještě jsem všude nepřešel na Java 9 a devítka už je EOL (End of Life).

20.3.2018: Přechod na Spring Boot 2
Postupně jsem všude přešel na Spring Boot 2 a mám k tomu pár poznatků, o které bych se rád podělil.