Spring Boot 打war包并利用docBase指定根目录为打包的工程

指定根目录有两种方式

1:直接将打的war包名称定义为ROOT

2:利用docBase

比如笔者war包名为xibu.war,将该war包丢到/Users/archerlj/Library/apache-tomcat-8.5.8/webapps目录下即可。
为了访问方便,我修改了tomcat安装目录下的conf文件下的server.xml文件:

在该文件最后的Host节点添加如下:

<!-- path留空代表访问域名后面不需要带项目的名称 -->
<Context path="" docBase="xibu" reloadable="false" />

path是虚拟目录。 docBase是真实目录,可以是相对路径或者绝对路径,这里因为xibu.war放在webapp下面,所以直接用了相对路径。

参考:Spring Boot 打war包

  1. 将SpringBoot的项目的打包方式设置为war

    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>1.0.0</version>
    <packaging>war</packaging>
  2. 移除内嵌的tomcat模块,但是为了我们在本机测试方便,我们还需要引入它,所以配置如下

    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-tomcat</artifactId>
                </exclusion>
            </exclusions>
    </dependency>
    <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
    </dependency>
  3. 添加tomcat-servelt-api依赖

    <dependency>
          <groupId>org.apache.tomcat</groupId>
          <artifactId>tomcat-servlet-api</artifactId>
          <!--此处跟随服务器tomcat版本-->
          <version>7.0.42</version>
          <scope>provided</scope>
    </dependency>
  4. 修改入口方法 继承一个SpringBootServletInitializer类,并且覆盖configure方法

    package com.example;  
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.builder.SpringApplicationBuilder;
    import org.springframework.boot.web.support.SpringBootServletInitializer;
    import org.springframework.cache.annotation.EnableCaching;  
    
    @SpringBootApplication
    @EnableCaching
    public class SpringDataJpaExampleApplication extends SpringBootServletInitializer {  
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(SpringDataJpaExampleApplication.class);
        }  
    
        public static void main(String[] args) {
            SpringApplication.run(SpringDataJpaExampleApplication.class, args);
        }
    }
  5. 添加war插件,用来自定义打包以后的war包的名称

    <build>
            <finalName>springboot</finalName>
            <!-- 打包项目 mvn clean package -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                          <warSourceExcludes>src/main/resources/**</warSourceExcludes>
                          <warName>springboot</warName>
                    </configuration>
                </plugin>
    </build>

    引入上面这个插件,是避免maven打包的时候为我们默认的一个带有版本号的war包名称,因为我们部署到tomcat以后,在访问项目的时候,需要用到这个war包的名称

    6.部署至tomcat服务器

    大部分情况下,在进行工程开发的时候,没有配置server.servlet.context-path

    此时有两种办法:1.直接打包为ROOT.war

    2.更改docBase

    参考:SpringBoot war包部署到tomcat

    关于Tomcat虚拟主机(appBase,docBase)的配置问题

    比如笔者war包名为xibu.war,将该war包丢到/Users/archerlj/Library/apache-tomcat-8.5.8/webapps目录下即可。
    为了访问方便,我修改了tomcat安装目录下的conf文件下的server.xml文件:

    在该文件最后的Host节点添加如下:
                <!-- path留空代表访问域名后面不需要带项目的名称 -->
                <Context path="" docBase="xibu" reloadable="false" />
    path是虚拟目录。
    docBase是真实目录,可以是相对路径或者绝对路径,这里因为xibu.war放在webapp下面,所以直接用了相对路径。
    

    这样,启动tomcat之后就可以直接通过访问http://localhost:8080来访问你的项目了。

    好了,cd到tomcat的bin目录下 sudo sh startup.sh启动tomcat就可以了,这时候访问http://localhost:8080就能访问部署的项目了(笔者修改了端口:8081)

原文地址:https://www.cnblogs.com/huanghongbo/p/9022507.html

时间: 2024-10-04 16:27:20

Spring Boot 打war包并利用docBase指定根目录为打包的工程的相关文章

Spring Boot 打 war 包的步骤

## Spring Boot 打 war 包的步骤 1. 添加 spring-boot-start-tomcat 的 provided 依赖 ``` <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </

Spring Boot 打war包部署,打jar包

官方文档:http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-create-a-deployable-war-file 一:更改程序入口类 Application.java 使其继承SpringBootServletInitializer,并重写configure方法 @SpringBootApplication public class Application extends SpringBoot

Spring boot demo: spring boot生成war包

spring boot会默认生成Jar包,如果想要生成war包需要修改pom和启动类. 并且,测试的时候发现,部署在apache tomcat 7下会报包含的jar包错误,而在apache tomcat 8下能正常启动访问. 如果再tomcat 7下需要解决war包内的jar包冲突(参考:https://blog.csdn.net/qq_14853889/article/details/80026885) 以下步骤参考: https://docs.spring.io/spring-boot/do

spring boot 生成 war 包有一个war.original是什么?

两个坑 .war.original 生成这种格式的文件,是因为在开启了二次打包.具体可以看这里 修改入口文件的配置 , 官方文档看这里 类似下面的代码,要继承SpringBootServletInitializer @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(

【转】Spring boot 打成jar包问题总结

http://www.cnblogs.com/xingzc/p/5972488.html 1.Unable to find a single main class from the following candidates 1.1.问题描述 maven build时出现以下错误提示日志: [ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:1.3.5.RELEASE:repackage

Spring Boot 以 jar 包方式运行在后台

spring-boot jar 包方式启动: 首先,为了防止和常用的 Tomcat 8080 端口冲突,将 Spring-boot 项目的端口号设置为 9090. 具体方法:在 application.properties 文件里写 server.port=9090. 使用 maven 命令:clean package 打包. 放到服务器上一个合适的位置. 使用 Java -jar spring-boot01-1.0-SNAPSHOT.jar 命令,启动 jar 包. 然后,在浏览器输入 htt

Spring Boot导出jar包发布

一:事由 现在的项目组开发项目使用的是Spring Boot的技术,开发的时候是直接通过一个入口主函数来启动项目的.如果将项目交给客户,怎样才能正确的发布运行呢?百度了一下有关的知识,大概了解到是通过导出jar包,直接运行来实现的.不过从网上查阅的资料,都不太理想,于是自己和另外一个同事就倒腾开了.倒腾了好一会,最终找到了一个比较简单有效的方法来实现,现在分享如下. 二:从Eclipse中导出对应的可运行的jar包(这一步是最为关键的) 1:选中对应的java项目——右键——导出 2:选择导出j

Spring Boot将WAR文件部署到Tomcat

在本文中,将演示如何将Spring Boot WAR文件部署到Tomcat servlet容器中. 对于Spring Boot WAR部署,需要执行三个步骤: 扩展SpringBootServletInitializer 根据提供标记嵌入式servlet容器. 更新包装为 War 测试工具: Spring Boot 1.4.2.RELEASE Tomcat 8.5.9 Maven 3 注意在Spring Boot中,具有嵌入服务器解决方案的最终可执行JAR文件可能不适合所有生产环境,特别是部署团

spring boot 打jar包,获取resource路径下的文件

前言:最近在spring boot项目静态类中获取resource路径下文件,在idea中启动都可以获取,但是打包后变成了jar包 就无法获取到.我想到了两种方法,一种是根据http访问静态资源比如 localhost:9080/static/template/xxx.ftl文件.另外一种是根据流获取到文件,然后拷贝到新的文件夹下面.下面说的就是第二种方式的代码 public class DocUtil { //此路径是其他方法进行调用,且只需要加载一次private static String