在Eclipse通过Maven创建Pom项目,即聚合项目达到分布式项目的效果时,该Pom中必定包含一个可用于直接发布的War类型的项目和多个Jar类型的功能模块项目。部署一个简单的War类型项目跟传统的动态Web项目相同,部署Pom类型的项目则需要相关配置了,在Tomcat服务器上一个重要的插件必不可缺:tomcat7-maven-plugin或则tomcat-maven-plugin。后者为早期版本,此处我们使用前者,亲测tomcat7-maven-plugin可用于tomcat7、tomcat8和tomcat9中,此处我使用的是tomcat9来使用该插件。
进入该界面前需要先登录,用户名和密码在tomcat安装目录的conf/tomcat-user.xml文件中,需要进行如下配置:
<role rolename="tomcat"/>
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="role1"/>
<user password="123456" roles="tomcat,manager-gui" username="tomcat"/>
登录进入成功则看步骤2,失败则参考问题1.
pom.xml文件配置如下:
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.mavengroupId>
<artifactId>tomcat7-maven-pluginartifactId>
<configuration>
<port>8888port>
<path>/path>
<version>2.2version>
configuration>
plugin>
plugins>
build>
配置完成进入步骤3.
由于在第二步骤我们没有配置项目的具体路劲,则默认使用tomcat的主路径来访问项目,首次操作:右键该Pom聚合项目,选择第二个Maven build..,在弹出框恶Goals中输入:tomcat7:run 或则 clean tomcat7:run 两个命令都可以,回车可看控制台信息,下次操作:可直接选择第一个Maven build..,点击其中一个历史命令即可。若出现如下信息则表示部署运行项目成功:
[INFO] Running war on http://localhost:8888/
[INFO] Using existing Tomcat server configuration at D:\develop\JQuerySpace\taotao-manager\taotao-manager-web\target\tomcat
[INFO] create webapp with contextPath:
七月 09, 2017 10:49:51 上午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-bio-8888"]
七月 09, 2017 10:49:51 上午 org.apache.catalina.core.StandardService startInternal
信息: Starting service Tomcat
七月 09, 2017 10:49:51 上午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/7.0.47
七月 09, 2017 10:50:04 上午 org.apache.catalina.core.ApplicationContext log
信息: No Spring WebApplicationInitializer types detected on classpath
七月 09, 2017 10:50:04 上午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-bio-8888"]
此后直接访问该路径http://localhost:8888/,则能进入聚合项目中的war类型项目的index.jsp界面,集成部署完成,控制台信息不如上所述请参考问题2,问题3。
&emap; 解决:tomcat对于访问路径解析出错,进入tomcat安装目录的webapps目录下的manager文件夹中的META-INF文件夹中找到context.xml,注释掉如下一段配置:
<Context antiResourceLocking="false" privileged="true" >
Context>
解决:该错误信息后面会给一个该jar的本地仓库路径,可能问题是在项目本地仓库中该jar包存在引用问题,建议删除本地仓库中的该jar包,而后重新编译build该项目或则所有项目,eclipse会自动重新下载该错误插件jar。我的本地仓库为C:\Users\Administrator.m2\repository中,出现该问题,个人建议将该仓库中的jar包全部删除而后编译重新全部下载,否则会在运行时报其他jar包的问题。
解决:若该聚合项目存在父类的Maven Project POM类型或则存在同类的Maven Project Jar类型项目,运行该项目前需要提前将其他与之相关的项目安装部署,选择Maven install…,注意此处提前安装的并不是该POM项目中的Maven Module哦! (module不需要提前安装,它跟随该pom一起部署运行) 控制台出现如下信息则成功:
BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 4.927 s
[INFO] Finished at: 2017-07-09T11:30:46+08:00
[INFO] Final Memory: 12M/155M
解决:运行项目可能出现该问题,可能原因是:服务器已经开启了,或则该项目已经提前运行过,另一个进程在使用中。关闭服务器,在Console控制台点击X号关闭,直到出现小红色方块并点击它结束关闭,确保最后全部关闭进程完成,而后再重新运行项目即可。
开发学习中很多问题都能够通过网络搜索解决,解决问题或许很容易,找到问题分析理解却很难!