【问题标题】:How to deploy a SpringBoot webapp: war or jar?如何部署 SpringBoot webapp:war 还是 jar?
【发布时间】:2015-09-24 03:03:42
【问题描述】:

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

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

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

【问题讨论】:

标签: java spring maven tomcat spring-boot


【解决方案1】:

我猜你已经通过上面的 cmets 和你自己找到了答案。 这里有一些总结

打包应该对 pom.xml 进行战争以包含 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>

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-22
    • 1970-01-01
    • 2020-03-22
    • 2016-05-19
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多