Jak zrobić paczę WAR z projektu?
Z tego co kojarzę musisz dodać dependecy z Tomcatem:
Kopiuj
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
do tego zaznaczyć w pomie, że apka ma być pakowana jako war, np.:
Kopiuj
<groupId>com.yourapp</groupId>
<artifactId>Your-App</artifactId>
<version>1.0-RELEASE</version>
<packaging>war</packaging>
<name>Your-App</name>
No i klasę main SpringBootową trzeba wzbogacić o :
Kopiuj
public class MainClassInYourProject extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(MainClassInYourProject.class);
}
czyli Twoja klasa main powinna rozszerzać SpringBootServletInitializer
i przesłaniać metodę configure
. Być może są inne sposoby, ale ja właśnie tak rozwiązałem kiedyś kwestię konwersji apki pakowanej w jar
na war
.
Tak wyglądają moje dependencis w pliku pom:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
<version>2.1.5.RELEASE</version>
</dependency>
</dependencies>
Fragment kodu klasy w której jest informacja o uruchomieniu apki:
najpierw są importy i to:
@Controller
public class CustomerController {
private final CustomerServices customerServices;
private final UserServices userServices;
public CustomerController(CustomerServices customerServices, UserServices userServices) {
this.customerServices = customerServices;
this.userServices = userServices;
}
@GetMapping("")
public String index(ModelMap map){
User user = userServices.getLoggedInUser();
map.addAttribute("userLogin", user.getLogin());
return "index";
}