您的位置:首页 > 编程语言 > Java开发

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

2018-05-11 00:05 706 查看
原文链接:http://www.cnblogs.com/huanghongbo/p/9022507.html

指定根目录有两种方式

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

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: