gpt4 book ai didi

java - 如何部署 SpringBoot webapp : war or jar?

转载 作者:行者123 更新时间:2023-11-28 22:18:50 24 4
gpt4 key购买 nike

使用 Maven 设置 Spring Boot 服务器应用程序相当简单。但我似乎无法弄清楚为什么我在将它用于 webapp 时遇到问题,而且我找不到关于如何做我想做的事情的明确文档。也许,我正在尝试将方钉装入圆孔中。

通常,人们会构建一个 war 并将其部署到一个独立启动的 Tomcat 实例中。我的理解是 SpringBoot 让你有一个嵌入式 tomcat 实例。然后使用 java -jar /path/to/target/springbootapp.jar 从 jar 启动服务器

但是当我添加 webapp 内容时,我该如何部署它?我必须更改我的 <packaging>jar</packaging> 吗?至 <packaging>war</packaging> ?或者我还能用这个 jar 吗?如果我确实改变了它,那么我该如何开始它?

最佳答案

我猜你已经通过上面的评论和你自己找到了答案。总结一下

打包应该对 pom.xml 进行 war 以包含 WEB-INF 下的静态文件。

下面只是例子

pom.xml

<packaging>war</packaging>

<dependencies>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>jquery-ui-themes</artifactId>
<version>1.11.3</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>datatables</artifactId>
<version>1.10.5</version>
</dependency>
<dependency>
<groupId>org.webjars</groupId>
<artifactId>datatables-plugins</artifactId>
<version>ca6ec50</version>
</dependency>

您也可以通过指定启动器(JarLauncher/WarLauncher)从命令行运行

命令行

java -cp your-target.war;some-dependency.jar org.springframework.boot.loader.WarLauncher

您还可以通过设置 resourceHandlerRegistry 来配置 webjars 等资源的路径

WebConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.your.spring.controller")
public class WebConfig extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
if (!registry.hasMappingForPattern("/webjars/**")) {
registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
}
if (!registry.hasMappingForPattern("/images/**")) {
registry.addResourceHandler("/images/**").addResourceLocations("classpath:/images/");
}
if (!registry.hasMappingForPattern("/css/**")) {
registry.addResourceHandler("/css/**").addResourceLocations("classpath:/css/");
}
if (!registry.hasMappingForPattern("/js/**")) {
registry.addResourceHandler("/js/**").addResourceLocations("classpath:/js/");
}
}

@Bean
public InternalResourceViewResolver internalViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/jsp/");
viewResolver.setSuffix(".jsp");
viewResolver.setOrder(1);
return viewResolver;
}
}

现在您的 jsp 文件可以拥有 webjar 中静态内容的路径,如下所示

在jsp文件上

<link rel="stylesheet" type="text/css" href="webjars/jquery-ui-themes/1.11.3/smoothness/jquery-ui.css">
<link rel="stylesheet" type="text/css" href="webjars/datatables/1.10.5/css/jquery.dataTables.css">
<link rel="stylesheet" type="text/css" href="webjars/datatables-plugins/ca6ec50/integration/foundation/dataTables.foundation.css">

<script type="text/javascript" src="webjars/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript" src="webjars/jquery-ui/1.11.3/jquery-ui.js"></script>
<script type="text/javascript" src="webjars/datatables/1.10.5/js/jquery.dataTables.min.js"></script>
<script type="text/javascript" src="webjars/datatables-plugins/ca6ec50/integration/foundation/dataTables.foundation.js"></script>

关于java - 如何部署 SpringBoot webapp : war or jar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31254787/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com