Maven创建完webapp项目部署到tomcat有三种方式,如果有知道其他方式部署的,欢迎补充。
第一种、讲war包copy到tomcat的webapps目录下。
首先选中你的工程,右键-->Run As-->Maven install,如下图:
等build成功后,找到workspace中的项目,然后找到target中的war包,copy到tomcat的webapps目录下启动即可。
第二种、在Eclipse中添加tomcat server,然后用此server启动project。
Eclipse默认没有安装tomcat server,可以在Eclipse左上角File-->New-->Other选择Server-->Server-->Next-->Apache-->Tomcat v7.0 Server-->Next,然后选择Tomcat home的目录Finish,则tomcatServer安装成功了。
然后就可以选中项目,右键Run As -->Run on Server即可。
第三种、用tomcat的Catalina中配置的XML文件中启动。
选中项目,右键-->Properties,选中Tomcat,勾选Is a Tomcat Project,然后在Context name 中输入项目名称,下面的Subdirectrory to set as web application root (optional) 框中写 /target/HelloWorld ,此处的HelloWorld是指你pom.xml中build的finalName。如下图:
点击Apply,然后OK。
也可以在Tomcat的confCatalinalocalhost中创建helloworld.xml,里面内容如下:
<Context path="helloworld" reloadable="true" docBase="E:workspacehelloworldtargethelloworld" workDir="E:workspacehelloworldwork" />
启动Tomcat之前先选中项目Run As -->Maven install。Build成功后再执行Eclipse中的Tomcat插件的猫形图,启动Tomcat。执行Maven install的目的就是在target目录下产生helloworld文件夹
如出现下面错误时
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/appleoa]]
at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:252)
at java.util.concurrent.FutureTask.get(FutureTask.java:111)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:1122)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:819)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1574)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1564)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/appleoa]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
... 7 more
Caused by: java.lang.NoClassDefFoundError: org/springframework/context/ApplicationContext
at java.lang.Class.getDeclaredFields0(Native Method)
at java.lang.Class.privateGetDeclaredFields(Class.java:2317)
at java.lang.Class.getDeclaredFields(Class.java:1762)
at org.apache.catalina.util.Introspection.getDeclaredFields(Introspection.java:106)
at org.apache.catalina.startup.WebAnnotationSet.loadFieldsAnnotation(WebAnnotationSet.java:270)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationListenerAnnotations(WebAnnotationSet.java:89)
at org.apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.java:63)
at org.apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.java:415)
at org.apache.catalina.startup.ContextConfig.configureStart(ContextConfig.java:892)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:386)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5405)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 7 more
Caused by: java.lang.ClassNotFoundException: org.springframework.context.ApplicationContext
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1854)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1703)
... 21 more
解决方法:
This was added by right clicking on the project in Eclipse.
->Properties -> Deployment Assembly -> Add --> andthen selected Maven Dependencies.