使用eclipse将maven项目部署tomcat, 以及如何实现热部署

摘要:
建议使用eclipse修改tomcat-users.xml文件,并添加以下代码<rolrolename=“经理”/>输入tomcat-users.xml插件中设置的用户名和密码>版本>配置>--此处的名称必须与setting.xml中配置的ID一致-->tomcat7<

在以前,我每次部署项目的时候都是关闭tomcat并开启tomcat,完成代码的编译并部署到tomcat上,现在想想,感觉当时怎么不去了解去如何部署到tomcat有几种方式,elispe 创建的web项目部署到tomcat的原理。若是了解了,估计很多时间都不会停留在关闭和开启tomcat上吧,当然这里也是说说而已。

目前,我是想把maven项目web工程部署到tomcat上,有以下方式可以部署到tomcat上。

1. 简单粗暴式,将maven项目web工程当作是web项目,在server上进行添加,并开启eclipse上的tomcat,这样项目就会部署到tomcat的wabapp目录下:

使用eclipse将maven项目部署tomcat, 以及如何实现热部署第1张  

      使用eclipse将maven项目部署tomcat, 以及如何实现热部署第2张

     使用eclipse将maven项目部署tomcat, 以及如何实现热部署第3张

     使用eclipse将maven项目部署tomcat, 以及如何实现热部署第4张

     这种方式是最常见了,也是web项目最常用的,如果搭建的单单只是web项目,而非maven项目(web工程)的话,可以使用此方法,部署的速度快,同时可以去设置边改代码,边更改内容,算是web项目的热部署了

     当然这是针对web项目而言,而非maven项目,也就是说项目是maven项目的话,每次修改jave都要关闭tomcat并开启tomcat,才能更改内容,非常麻烦。

2. tomcat 在网址上进入localhost:8080/manager(假设是本地tomcat),在这个里面可以添加web项目,第二种方式类似与这种,但不用通过访问localhost:8080/manager进行部署,而是通过maven的配置进行部署,以下是步骤

    (1) 修改tomcat的配置文件,建议使用eclipse进行修改

    使用eclipse将maven项目部署tomcat, 以及如何实现热部署第5张

  修改tomcat-users.xml文件,并添加以下代码

使用eclipse将maven项目部署tomcat, 以及如何实现热部署第6张使用eclipse将maven项目部署tomcat, 以及如何实现热部署第7张
<role rolename="manager-gui"/>
  <role rolename="manager"/>
  <role rolename="manager-script"/>
  <user username="admin" password="123" roles="manager-gui,manager-script"/>
View Cod

    (2) 启动tomcat,在外部启动或者在eclipse中启动,并在网页上输入localhost:8080/manager(假设是本地tomcat的话),提示输入用户和密码,输入tomcat-users.xml里设置的用户名和密码,出现以下的界面就算是配置成功了使用eclipse将maven项目部署tomcat, 以及如何实现热部署第8张

  

  使用eclipse将maven项目部署tomcat, 以及如何实现热部署第9张

    (3) 在maven项目中,配置pom.xml文件,在bulid 标签--> plugins 中添加以下代码,该代码的作用是指向指定的tomcat

使用eclipse将maven项目部署tomcat, 以及如何实现热部署第10张使用eclipse将maven项目部署tomcat, 以及如何实现热部署第11张
<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
     <!-- 
                此处url,本地的话最好是以IP地址的形式
                tomcat6或以下版本应是http://ip:port/manager/html
                tomcat7为http://ip:port/manager/text,
                我的tomcat是7
         -->
      <url>http://127.0.0.1:8080/manager/text</url>
     <!-- 此处的名字必须和setting.xml中配置的ID一致 -->
     <server>tomcat7</server>
    <!-- 此处的名字是项目发布的工程名 -->   
        <path>/${project.build.finalName}</path>
    </configuration>
</plugin>                            
View Code

    (4)在maven项目上右键,选择run as --> maven bulid,第一点击的时候,会让你创建下图:

         在Name值可以修改也可以不修改,只是区分maven bulid的名字

         在Goals中,若是第一次部署项目,填写tomcat7:deploy;之后部署项目,都是使用tomcat7:redeploy (ps:这里的tomcat7,我还没有验证是因为我使用的tomcat版本是tomcat 7,还是因为在maven的setting.xml文件中设置了server的Id是tomcat7,以后确定哈,当然你们可以去试一下,然后告诉我^_^)

  使用eclipse将maven项目部署tomcat, 以及如何实现热部署第12张

    创建完后,点击run件,在context出现类似信息代表已经部署成功。

  使用eclipse将maven项目部署tomcat, 以及如何实现热部署第13张

    可以去http://ip:port/manager中查看是否有项目部署上去。

 使用eclipse将maven项目部署tomcat, 以及如何实现热部署第14张

    这样就部署上去了,这里部署的名称因为是根据项目名,eclipse的项目名包含着版本信息。点击连接便可以进入该项目的默认连接(项目名/index.html)。

    能部署成功也有部署失败的,下面是我部署失败时的截图和解决原因:

    1. 编译出错,如下图

        使用eclipse将maven项目部署tomcat, 以及如何实现热部署第15张

         解决:maven项目的jdk版本与编译的java版本(eclipse配置的java版本)不一致,出现了编译出错。将maven项目的java版本与编译版本一致便可

                    1. 右键maven项目Bulid Path --> Configure Bulid Path,删除原有的JRE System Libray的java版本,添加新的java版本

                        使用eclipse将maven项目部署tomcat, 以及如何实现热部署第16张

         2. 在maven项目中pom.xml添加编译版本,代码如下:

使用eclipse将maven项目部署tomcat, 以及如何实现热部署第17张使用eclipse将maven项目部署tomcat, 以及如何实现热部署第18张
<!-- 编码  -->
<plugin>
    <!-- -->
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.5.1</version>
    <configuration>
        <!-- 根据自己的java的版本,我的是java 8 -->
        <source>1.8</source>
        <target>1.8</target>
    <encoding>UTF-8</encoding>
    </configuration>
</plugin>   
View Code

                        弄好后,项目会出现错误,原因是因为pom.xml指定的jave版本与项目的不一致,右键maven项目,选择maven --> Updata Project 便可以解决

                   3. 为了在创建maven项目时,项目的版本与编译的版本一致,可以去修改maven 位置下conf --> setting.xml文件,在profiles标签下添加如下代码:

      <profile>  
        <id>JDK1.8</id>  
        <activation>  
            <activeByDefault>true</activeByDefault>  
        </activation>  
        <properties>  
            <!-- 根据自身的java版本(eclipse配置的java版本) -->
            <maven.compiler.source>1.8</maven.compiler.source>  
            <maven.compiler.target>1.8</maven.compiler.target>  
            <encoding>UTF-8</encoding>  
        </properties>  
    </profile>

        这样创建出来的maven项目java版本与编译的java版本一致     

补充一点,maven项目很奇怪,明明配置的Java版本都与编译的java版本一致,可一旦新增了java文件,部署时还是会出现编译出错的问题,这点我就不知道原因了,只知道右键maven项目,maven --> Updata Project 后,可以解决这个问题。(猜测是因为maven项目所新增的java文件对应java版本与项目的java版本不一致,造成冲突,因为都要去设置java版本的问题,目前没有一劳永逸的办法,如果网友有解决方案,可以在评论里说,感谢你的参与)

  这种部署的方式,可以省去开启和关闭tomcat的时间,大大减少了开发时间。

 

 3. 我们通过第一种方式部署时,我们的项目会出现tomcat --> webapp文件夹下,并可以网址访问。这个项目之所以会存放在webapp下,是因为eclipse将项目以项目的形式编译成class文件,并传到tomcat下的webapp,而tomcat只所以知道webapp下有那些项目,是因为tomcat在启动的过程或是运行的过程中,扫描了webapp文件,并将不是原本的项目编写入conf --> server.xml文件中,会出现以下代码:

使用eclipse将maven项目部署tomcat, 以及如何实现热部署第19张

       这里的docBase是只项目的位置,默认的相对路径是tomcat下的webapp目录。

       path是指网络访问的项目名,以上配置即http://ip:port/HJLTest

       reloadable 是否要时时观察项目下的class等资源文件的改变,若为true,则可以实现热部署,即编写代码可以不用关闭服务器便可改变内容。若为false,则需要删除项目,重新部署项目才可改变内容

  知道了这个,我们便可以实现热部署,这也是第三个部署方案的原理。要对maven项目实现该部署方案,步骤如下:

            1. 将maven编译好的位置确定,并将docBase的值指向这个位置

            2.确定好访问的项目命,即path的值,浏览器上靠这个项目进行访问

            3. reloadable 的值一定要设置true ,不然实现热编译,没有意义

            步骤2和3都比较好处理,这里细讲步骤1,流程如下:

              maven项目右键 Bulid Path -->Configure Bulid Path -->Source栏,这里一共有4个目录:src/main/java,resources ;src/test/java,resource。将src/main/java,resources的编译输出位置修改:

        使用eclipse将maven项目部署tomcat, 以及如何实现热部署第20张 

       双击Output folder,选择默认的输出路径

                使用eclipse将maven项目部署tomcat, 以及如何实现热部署第21张

                  在最下面Allow output folders for sourse folders选项打勾,并设置输出class的路径,路径的话,最好放置在WEB-INF/classes的文件下,可以参照web项目使用部署一的方式查看部署到tomcat webapp下项目的文件结构,要以此结构为准。

                使用eclipse将maven项目部署tomcat, 以及如何实现热部署第22张

                配置好后,右键项目 run as --> maven install 运行,成功后,去到项目的位置上查看是否有对应的class文件(ps: 这里可能会出现java 版本不对的错误,maven项目右键 maven -->Updata Project便可以了)

                使用eclipse将maven项目部署tomcat, 以及如何实现热部署第23张

                使用eclipse将maven项目部署tomcat, 以及如何实现热部署第24张

                 上述步骤成功后,便可以去tomcat --> conf --> server.xml中 Host标签中设置Context标签,并设置doxBase的值:

                 我的话是指向项目的src/main/webapp目录:

                 使用eclipse将maven项目部署tomcat, 以及如何实现热部署第25张

        完成上述三步骤后,启动tomcat,打开http://ip:port/manager,便出现配置的项目:

        使用eclipse将maven项目部署tomcat, 以及如何实现热部署第26张

         使用eclipse将maven项目部署tomcat, 以及如何实现热部署第27张

          编写java文件后,city+s保存,返回刷新网页,发生改变,实现真正的热部署:

          使用eclipse将maven项目部署tomcat, 以及如何实现热部署第28张

          使用eclipse将maven项目部署tomcat, 以及如何实现热部署第29张

           补充:该方式虽然能实现热部署,但如果修改了xml文件的话,便要重新部署这点我也不知道原因,又空的时候查看一下,有网友知道也可以评论回复我,感谢你的参与

 

总结: 第一种部署方式不建议使用,若是在开发阶段,推荐第三种部署方式,若是放置于服务器,可以考虑第二种方式。关于第二种部署方式,可以在此基础上弄成多服务器部署,感兴趣的可以去看我的下一个博客,maven实现多部署服务器。

希望该篇随笔对你有帮助,有补充的也可以在评论回复,我会更新,谢谢观看与评论!!

        

            

免责声明:文章转载自《使用eclipse将maven项目部署tomcat, 以及如何实现热部署》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇(小技巧)SQL Server Management提供的最简单的SQL查询语句格式化MQ框架的比较下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

从别人的代码中学习golang系列--01

自己最近在思考一个问题,如何让自己的代码质量逐渐提高,于是想到整理这个系列,通过阅读别人的代码,从别人的代码中学习,来逐渐提高自己的代码质量。本篇是这个系列的第一篇,我也不知道自己会写多少篇,但是希望自己能坚持下去。 第一个自己学习的源码是:https://github.com/LyricTian/gin-admin 自己整理的代码地址:https://g...

idea修改maven默认配置不生效

1.问题现象 我的idea版本是2019.2的,通过File->Other Setting->Setting for New Projects修改maven的默认配置后,新建项目maven默认配置不生效 2.解决 打开C:Users用户.IntelliJIdea2019.2configoptions下的project.default.xml,添...

利用Travis CI+GitHub实现持续集成和自动部署

前言 如果你手动部署过项目,一定会深感持续集成的必要性,因为手动部署实在又繁琐又耗时,虽然部署流程基本固定,依然容易出错。 如果你很熟悉持续集成,一定会同意这样的观点:“使用它已经成为一种标配”。 什么是持续集成 Continuous Integration(CI) is a development practice that requires deve...

Chrome浏览器在Windows8/8.1下显示模糊的解决办法

  刚刚换了一台新电脑,安装完Windows 8.1,屏幕分辨率被自动设置为1920 X 1080,打开Chrome浏览器却发现内容显示非常模糊,不论如何改变Chrome的设置均没有效果,开启或关闭Chrome的硬件加速功能也无济于事。不光Chrome如此,许多其它应用程序和对话框中的文字也显示很模糊。   其实这是由于DPI缩放所引起的,可通过调整DPI...

Fiddler 502问题

使用Fiddler的时候遇到下面这个问题:在地址栏想打开个一般处理程序,出现连接本机失败的提示,如下图: 而这在我没打开Fiddler的时候是显示正常的。 查看Fiddler,在嗅探 -> 第二个Raw的报文最下面提示: [Fiddler] Connection to localhost failed.<BR>Exception Tex...

Use // eslint-disable-next-line to ignore the next line.

解决 在build/webpack.base.conf.js文件中,注释或者删除掉:module->rules中有关eslint的规则 参考---https://blog.csdn.net/qq_42108487/article/details/89814708...