maven部署项目到tomcat

Posted gaogaoyanjiu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了maven部署项目到tomcat相关的知识,希望对你有一定的参考价值。

一、maven发布项目到远程tomcat

spring boot因为内嵌tomcat容器,所以可以通过打包为jar包的方法将项目发布,但是如何将spring boot项目打包成可发布到tomcat中的war包项目呢?

1、新建springboot项目(IDEA内置有maven插件,我们也可以使用自配置的maven插件,自定义maven仓库位置,创建maven项目,这里以springboot项目为例)

技术分享图片

 

2、设置Group和Artfact,Type选择maven Project,Packaging打包方式必须选择War包(在tomcat运行必须是war包),

等同于在pom.xml文件中修改打包类型,将spring boot默认的<packaging>jar</packaging>修改为<packaging>war</packaging>形式;

技术分享图片

3、选择依赖的jar包(web项目选择web,这里只做测试,有需要可以根据需求选择其他依赖)

技术分享图片

4、设置项目名称和项目本地存放目录

技术分享图片

5、springboot目录结构

技术分享图片

 

项目创建好后的pom.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.springboot-test</groupId>
    <artifactId>taobao</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>taobao</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.0.3.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.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-tomcat</artifactId>
    <!--
      <scope>provided</scope>
    -->
    </dependency> 
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
</dependencies>
<build>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
  </plugins>
</build>

</project>

6、spring boot的web项目中内嵌tomcat服务器,所以如果我们想要发布war包到tomcat项目,要将spring boot中内嵌的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>

如果本地开发的时候依然想要使用spring boot内嵌tomcat进行调试,添加如下依赖即可;

也可以去掉如下依赖,或者注释掉<scope>provided</scope>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
</dependency>

 

7、spring boot发布jar包web程序的入口是main函数所在的类,使用@SpringBootApplication注解。

但是如果war包发布至tomcat,有两种方式。

方式一:需要增加 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。

1、启动类,添加@SpringBootApplication注解

@SpringBootApplication
public class TaobaoApplication {
    public static void main(String[] args) {
        SpringApplication.run(TaobaoApplication.class, args);
    }
}

2、SpringBootServletInitializer 子类,application.sources(TaobaoApplication.class);方法的参数必须和启动类的类名一致。

public class ServletInitializer extends SpringBootServletInitializer {
    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(TaobaoApplication.class);
    }
}

方式二:直接将main函数所在的类继承 SpringBootServletInitializer 子类,并覆盖它的 configure 方法。

    @SpringBootApplication
    public class DemoApplication extends SpringBootServletInitializer {
         
        @Override
        protectedSpringApplicationBuilder configure(
                SpringApplicationBuilder application) {
            returnapplication.sources(DemoApplication.class);
        }
     
         
        publicstaticvoid main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }

以上就完成了spring boot项目打包war包的所有步骤,可以发布至tomcat7及其以上版本。

 8、创建测试类

 

 

二、maven自动化部署

1、

2、

3、

4、

5、

三、发布maven项目到中央仓库(Central Repository)

 

https://blog.csdn.net/zz210891470/article/details/53737883




























以上是关于maven部署项目到tomcat的主要内容,如果未能解决你的问题,请参考以下文章

maven部署项目到tomcat

转载eclipse中maven项目部署到tomcat

eclipse中maven项目如何部署到tomcat

手动部署Servlet到Tomcat

tomcat部署maven项目需要安装maven环境吗

Maven 多模块web项目如何集成到tomcat里面去 然后怎么运行?