IDEA上創建 Maven SpringBoot項目發布到Tomcat


概述

  上篇記錄了IDEA上創建 Maven SpringBoot+mybatisplus+thymeleaf 項目,但是如何將SpringBoot發布到Tomcat,直接采用Maven 命令Clear-Package指令之后,生成的War並不能訪問,任然顯示404錯誤。所以這個時候,需要修改代碼內容部分;

代碼調整項

1、修改pom.xml文件;

(1)、finalName要和Application.properties中的server.context-path值保持一致;

<build>
    <finalName>htcv</finalName>
    <plugins>     
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${jdk.version}</source>
          <target>${jdk.version}</target>
        </configuration>
      </plugin>
    </plugins>

(2)、pom加上javax.servlet.servlet-api依賴項;

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>3.0-alpha-1</version>
 </dependency>

(3)、發布的時候排除內嵌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>

完整的pom.xml配置如下,記得將<packaging>jar</packaging>修改成<packaging>war</packaging>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.justin</groupId>
  <artifactId>htcspringboot</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>Maven Quick Start Archetype</name>
  <url>http://maven.apache.org</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.2.RELEASE</version>
    <relativePath />
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <jdk.version>1.8</jdk.version>
    <mybatis-starter-version>1.2.0</mybatis-starter-version>
    <mybatis.plus.version>2.1.0</mybatis.plus.version>
    <ojdbc14.version>10.2.0.5.0</ojdbc14.version>
    <druid.version>1.0.28</druid.version>
    <spring.boot.version>1.5.2.RELEASE</spring.boot.version>
  </properties>

  <dependencies>
    <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-thymeleaf</artifactId>
      <version>${spring.boot.version}</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>${mybatis-starter-version}</version>
    </dependency>

    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus</artifactId>
      <version>${mybatis.plus.version}</version>
    </dependency>

    <dependency>
      <groupId>com.oracle</groupId>
      <artifactId>ojdbc14</artifactId>
      <version>${ojdbc14.version}</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>${druid.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>3.0-alpha-1</version>
    </dependency>
  </dependencies>

  <build>
    <finalName>htcv</finalName>
    <plugins>      
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>${jdk.version}</source>
          <target>${jdk.version}</target>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

2、修改java文件內;

  讓程序入口Main方法類繼承SpringBootServletInitializer,重寫configure方法;

import com.justin.model.Einvoice;
import com.justin.serviceapi.EinvoiceService;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.Banner;
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.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@SpringBootApplication
@RestController
@MapperScan("com.justin.dao")
public class Application extends SpringBootServletInitializer
{
    @Autowired
    private EinvoiceService einvoiceservice;

    @RequestMapping("/")
    public  String Greeting()
    {
        return "Justin Say Hello WOrld!";
    }

    @RequestMapping("/Add")
    public  String AddEinvoice()
    {
        Einvoice Einv=new Einvoice();
        Einv.setInvoicecode("98234728");
        Einv.setInvoicenum("1111111");
        einvoiceservice.insertOne(Einv);
        return  "INser SUCC";
    }

    @RequestMapping("/check/{invoicecode}")
    public  String ShowInfo(@PathVariable("invoicecode") String invoicecode)
    {
        return einvoiceservice.GetInvoiceNUmByCode(invoicecode);
    }
@RequestMapping(
"/Update/{invoicecode}/{invoicenum}") public String UpInfo(@PathVariable("invoicecode") String invoicecode,@PathVariable("invoicenum") String invoicenum) { einvoiceservice.ChangeCode(invoicenum,invoicecode); return "SUCC"; } public static void main(String[] args) { SpringApplication.run(Application.class,args); } @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return configureApplication(builder); } private static SpringApplicationBuilder configureApplication(SpringApplicationBuilder builder) { return builder.sources(Application.class).bannerMode(Banner.Mode.OFF); } }

重新打包發布即可,輸入網址 http://localhost:8080/htcv//HE/CIndex  即可訪問自定義的頁面內容項;

參考博客網址

spring boot項目發布tomcat容器(包含發布到tomcat6的方法) http://www.cnblogs.com/weixliu/p/6432342.html

 


免責聲明!

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



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