咨询1
咨询2
交流群
电话

开发环境下部署的方法和原理

文档 > 二次开发 2018-07-09 13:01 阅读

Tomcat部署目录

Tomcat部署非常简单,直接把程序复制到{Tomcat安装目录}/webapps目录下即可。该目录下会有很多默认的文件夹,如docs examples host-manager manager ROOT,这些都是Tomcat的文档、演示以及管理平台,实际使用中都不需要,如果配置不当甚至还会有安全隐患。所以在部署前,要先删除这些文件夹。

webapps下有一个特殊的文件夹ROOT,放在该目录下会作为Tomcat访问的根目录,比如/webapps/ROOT/index.html的访问地址为http://localhost:8080/index.html。而/webapps/abc/index.html的访问地址则为http://localhost:8080/abc/index.html。因此大部分情况下,都是部署在ROOT目录。

通过修改tomcat的server.xml文件可以改变tomcat的部署位置,但如果不是非常精通Tomcat,我们不建议你这么做。特别是在部署碰到错误时,更应该放弃这种做法。我们碰到过很多因为修改tomcat配置导致错误的案例。

maven目录结构与部署的关系

  • /src/main/java/ 源码目录。编译后会保存在/target/classes/目录。该目录不用直接参与部署。
  • /src/main/resources/ 资源目录。编译后会也会保存在/target/classes/目录。该目录不用直接参与部署。
  • /src/main/wabapp/ web程序的页面、图片、css、js等文件。该目录的文件可以需要部署在{tomcat}/webapps/ROOT/目录下。如/src/main/webapp/index.html则部署到{tomcat}/webapps/ROOT/index.html
  • /target/classes/ 编译后会自动生成该目录,包含/src/main/java//src/main/resources/中的内容。该目录下的文件需要部署在{tomcat}/webapps/ROOT/WEB-INF/classes/目录下。

综上所述,只要将/src/main/wabapp//target/classes/复制到tomcat相应目录即可,但还缺少依赖包,即{tomcat}/webapps/ROOT/WEB-INF/lib/目录下的jar包。

maven打包

使用mvn package或者mav install可以得到完整的war包。直接在命令行使用maven命令,或者使用eclipse、idea等开发工具中相应的功能,都可以实现打包。

打包后在/target目录下会出现类似jspxcms-9.0.0.war的文件。war文件和zip文件格式是一样的,可以使用解压软件打开。解压后得到的文件就是上述的/src/main/wabapp//target/classes/和依赖包/WEB-INF/lib/组成的。

war部署

war文件可以直接部署到{Tomcat安装目录}/webapps/运行tomcat后会自动解压,解压的目录和war文件名是一样的,比如{Tomcat安装目录}/webapps/jspxcms-9.0.0.war会解压成{Tomcat安装目录}/webapps/jspxcms-9.0.0。通过上面的知识可以知道,要访问到这个程序,访问地址应该是http://localhost:8080/jspxcms-9.0.0/,而这个访问地址http://localhost:8080/是无法访问的。这显然不是我们想要的。这时需要将jspxcms-9.0.0.war重命名为ROOT.war,解压后成{Tomcat安装目录}/webapps/ROOT/,这样就可以通过http://localhost:8080/访问了。

有一点需要注意,如果一个目录已经存在{Tomcat安装目录}/webapps/ROOT/,只替换ROOT.war包,这样不会重新解压。需要将ROOT目录删除再替换ROOT.war文件才会重新解压。