专栏首页技术进阶之路Maven 整合Tomcat 容器

Maven 整合Tomcat 容器

一、整合之前

整合之前,我们都是使用本地的 Tomcat 服务器进行开发测试,最最头疼的一个问题就是每次做项目都要手动导入 jar 包,随着功能越来越多导入的 jar 包也越来越多,导致我们的项目变得很大,运维很头疼。

maven 正是解决这一问题的,当然还有 gradle,不过现在 javaweb 项目一般都是 maven 管理,所以我们也用 maven。

二、整合步骤

这里以 IDEA 演示如何使用 maven 创建一个 javaweb 项目:

# 大前提

大前提是你的 IDEA 已经配置好 maven 了,下面这张图是配置好的界面,如果你还没有配置,点击这里:https://blog.csdn.net/weixin_43941364/article/details/104667393

1、new project

新建一个项目, 输入 webapp 可以快速定位:

然后展开它,选择第一个正式版本:

这里解释一下这是在干嘛,这就是让 maven 给我们生成一个 模板,这样创建完项目之后就会自动生成 web 目录,而且会配置好 facts

下面点击确定,然后输入项目相关信息即可。


之后 maven 会去加载文件,等一会之后就好了,生成完成之后项目结构是这样的:

这只是模板,我们可以根据自己的需求随意更改,比如这里我们 JDK 的版本改为和我的项目内容一致:

下面是最关键的一步,为了整合 Tomcat,我们必须在 maven 当中配置,告诉 maven 我们需要 tomcat,这样他才会给你生成。

<plugins>
	<plugin>
		<groupId>org.apache.tomcat.maven</groupId>
		<artifactId>tomcat7-maven-plugin</artifactId>
		<version>2.2</version>
		<configuration>
			<port>8080</port>
			<path>/</path>
		</configuration>
	</plugin>
</plugins>

我们在build 标签中加入 plugins 标签,里面配置上面的内容。

  • port:端口号,和 tomcat 同理
  • path:项目的绝对路径,如果设置成 test 访问的时候要加上 /test,不写默认为根路径。

然后打开右侧的 maven 窗口,你会发现 tomcat 插件已经装好了。

如果你没有,我建议你将 maven 设置为如下配置:

然后我们来看一下 pom 文件中的标签都是什么意思。

<build>
        <finalName>maven-demo</finalName>
        <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
            <plugins>
                <plugin>
                    <artifactId>maven-clean-plugin</artifactId>
                    <version>3.1.0</version>
                </plugin>
                <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
                <plugin>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.0.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                </plugin>
                <plugin>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.22.1</version>
                </plugin>
                <plugin>
                    <artifactId>maven-war-plugin</artifactId>
                    <version>3.2.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-install-plugin</artifactId>
                    <version>2.5.2</version>
                </plugin>
                <plugin>
                    <artifactId>maven-deploy-plugin</artifactId>
                    <version>2.8.2</version>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.tomcat.maven</groupId>
                <artifactId>tomcat7-maven-plugin</artifactId>
                <version>2.2</version>
                <configuration>
                    <port>8080</port>
                    <path>/</path>
                </configuration>
            </plugin>
        </plugins>
    </build>

这里的<pluginManagement>标签里面的内容是重写的 maven 父类配置文件中配置,也就是说就算你不写也有,但是我们写了可以指定为较新的版本。它的作用就是提供一些基本的打包以及部署命令。

相信下面这张图大家看到很多次了:

这里简单说一下每个步骤的作用。

首先我们要明确每个 maven 项目都有一个 target 目录,该目录存放maven 运行之后生成的文件,比如该项目的目录已经被maven自动指定好了。

那么这样配置之后,maven 启动之后就会在该文件夹下生成相应的文件。

  • clean——清理:删除target 目录及内容;
  • compiler——编译:将 java 文件编译成 class 文件放入 target 目录;
  • deploy——部署:将项目部署到远程仓库,需要事先在pom 文件中配置,我没用过;
  • package——打包:将项目打包放入target 目录;
  • install——安装:将项目打包后并发布到本地仓库;

其中package命令默认会把项目打成jar包,但是我们可以配置为 war 包。

比如这里我们加入了一个war 的插件,这样就可以直接执行该会插件,然后项目会自动被打包放入 target目录下。


好了,到现在为止我们才新建了项目,还没有解释 Tomcat 在哪。

2、Tomcat

我们使用 maven 工具启动 Tomcat:

双击 run 即可运行项目,他会自动执行我们之前介绍的 compiler package 等命令。

运行结果如图,简直不要太方便,按照我们传统的当时还有配置本地的 Tomcat 等信息:

现在只需要在 pom 文件里面配置就好了。

那么你是否好奇,这个 tomcat 哪来的?

我们之前说了,这个不是本地的 Tomcat,是它再带的,是插件本身,那我们来验证一下。

我们打开target 目录来看一下:

我们发现它确实自动生成了一个 tomcat 文件夹,而且里面的目录结构即为 tomcat 目录结构。

现在可以确定了,这个 tomcat 其实是 maven插件自带的。

三、整合之后

整合之后如果我们想发布项目到服务器该怎么办?

简单只需两步:

1、双击执行 war命令:

2、打开 target找到war文件,然后复制到服务器的Tomcatwebapp目录下:

如果服务器在运行都不用重启可以直接访问。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • JavaWeb 使用 Druid 连接池查询数据库

    本 Demo 使用 Maven 创建,如果你没有使用该工具也无伤大雅,自己下载对应的 jar 包放到 lib目录下就可以了。

    wsuo
  • 探花交友_搭建开发环境

    此命令为部署 Redis 集群,如果本地的 docker 没有 redis 的镜像,那么他会先自动下载再部署。

    wsuo
  • IDEA 导入并运行 Eclipse 的 JavaWeb 项目

    有很多是 Eclipse 自己生成的,还有就是项目编译产生的文件,这些都不是我们需要的,所以可以直接删掉。

    wsuo
  • @Override is not allowed when implementing interface method

    1、File-->Project Structure...-->Module-->选中模型-->Language Level,选择6(网上这种方案较多)

    林老师带你学编程
  • Maven 核心原理解析(3)

    元素继承 可以看到, 子POM中并未定义模块groupId与version, 这是因为子POM默认会从父POM继承了如下元素: groupId、version...

    Java帮帮
  • C++核心准则CP.26:不要分离线程

    Often, the need to outlive the scope of its creation is inherent in the threads ...

    面向对象思考
  • ABAP和Java的单元测试Unit Test

    ABAP class单元测试的执行入口,CLASS_SETUP, 是硬编码在单元测试框架实现CL_AUNIT_TEST_CLASS里的。

    Jerry Wang
  • 解决jetty7.0.pre5启动时报ClassNotFoundException: javax.interceptor.InvocationContext异常的问题

    一.背景介绍:最近项目在使用maven命令行运行jetty服务器时出现ClassNotFoundException: javax.interceptor.Inv...

    阿豪聊干货
  • 正则表达式生成—VerbalExpressions

    从听说正则表达式这个词开始,我就没学会过怎么写正则表达式,也是有认真学过的,但是由于不经常用,学一次忘一次。前段时间遇到VerbalExpressions这个神...

    阿杜
  • 聊聊设计模式之单例模式(上)

    前言 单例模式应该是设计模式中最容易理解也是用得最多的一种模式了,同时也是面试的时候最常被问到的模式。单例模式的作用就是确保在任何情况下都只有一个实例对象,并提...

    黄泽杰

扫码关注云+社区

领取腾讯云代金券