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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM