1、Maven+Eclipse+Tomcat配置详解 前言:本文介绍的内容都是基于JDK配置ok的情况下进行的,JDK的配置在此不做描述。 ------------------------------------------------1.Maven的配置-------------------------------------------------------- 1. 下载maven,此处使用apache-maven-3.0.5版本,下载地址: http://maven.apache.org/docs/3.0.5/release-notes.html 2. 解压apach
2、e-maven-3.0.5到D:\eclipse\ (图1) 3. 拷贝apache-maven-3.0.5/conf/settings.xml到 C:\Documents and Settings\Administrator\.m2 (图2) (说明:如果setting.xml放置到maven/conf下面相当于全局变量,其修改会影响所有使用maven的人,放置到Administrator\.m2下面是针对某个用户Administrator而言,起修改仅会影响到该用户) 4. 修改C:\Documents and Settings\Administrator\.m2\sett
3、ings.xml
(1) 修改maven本地资源库的配置,以后maven用到的所有资源文件都会存储到该目录下:
4、pom.xml配置,以及eclipse的maven build中都会用到),
5、ipse\apache-maven-3.0.5(注意,路径最后不要加\,如果加了\,那后面path读出来的变量名称就是D:\eclipse\apache-maven-3.0.5\\bin,显然是错误的) (图6) 6. 配置环境变量path:在path里面添加%MAVEN_HOME%\bin; (注意,英文状态下的分号;不能少) (图7) 环境变量配置好以后,在cmd里输入mvn –version,如果出现下图信息,表示配置成功。 (图8) 至此,maven的配置完成。 ------------------------------------------------2.T
6、omcat的配置--------------------------------------------------------
1. 下载tomcat,可到apache官网http://tomcat.apache.org/download-60.cgi
2. 解压apache-tomcat-6.0.36到D:\eclipse\
(图9)
3. 修改tomcat的配置D:\eclipse\apache-tomcat-6.0.36\conf,首先修改server.xml,tomcat默认端口是8080,为防止端口冲突,将8080修改为6080。
8、t-6.0.36\bin,startup.bat启动tomcat,在地址栏里输入:http://localhost:6080/manager/html,弹出用户名和密码输入框,输入第4步骤设置的用户名和密码。 (图12) 登录成功后进入tomcat管理页面,表示tomcat配置成功 (图13) 至此,tomat配置完成。 ------------------------------------------------3.Eclipse的配置-------------------------------------------------------- 1. 安装Eclipse和
9、MyEclipse,可到官网下载 (图14) 2. 启动MyEclipse,进入help->MyEclipse Configuration Center (图15) 3. 进入Center中心后切换到SoftWare标签,一般高版本的MyEclipse会自带Maven插件,可先通过My SoftWare中卸载Maven插件,然后再在Browser SoftWare中通过add site添加m2eclipse: Maven:http://download.eclipse.org/technology/m2e/releases 最后通过Pending Changes中的【Apply (
10、1) change 】安装插件,中间可能会需要多次重启MyEclipse。 (图16) 4. MyEclipse的Maven插件安装完成后,在window->preference中会看到Maven插件,然后就是对Maven进行配置,首先是Installations,需要将本地的Maven添加进来D:\eclipse\apache-maven-3.0.5,并且配置好Global Setting (图17) 然后再配置User Settings (图18) 5. 在MyEclipse中配置tomcat(注意:tomcat server必须选择为Enable,否则不可用) (图19)
11、 ------------------------------------------------------------4.示例------------------------------------------------------------ 1. 现在就使用上面的配置创建我们的第一个maven webapp工程吧,打开MyEclipse的File->New->Others->Maven->Maven Project (图20) (图21) Catalog为All Catalogs,mabaen-archetype-webapp (图22) Group Id 和A
12、rtifact Id及Version都是Maven的几个关键元素,这三个元素定义了项目的基本坐标,在Maven的世界,任何的jar、pom或者war都是以基于这些基本的坐标进行区分的。 groupId定义了项目属于哪个组(可以理解为项目的package),artifactId定义了当前Maven项目在组中唯一的ID(可以理解为项目名称),version指定了项目当前的版本。 (图23) 2. 了解MyEclipse中项目的结构,web项目必须在src\main\webapps下面才可以成功编译和部署。 (图24) 3. 修改index文件,做一个简单的标示。成功运行项目后,页
13、面将显示为如下信息
(图25)
4. pom.xml文件是maven的核心(pom:Project Object Model),在该文件中可以加载任何项目所需的插件,系统会自动将这些项目所需的插件从maven repository center下载下来。因为要希望把项目部署到外部tomcat下面,所以此处需要加入tomcat-maven插件,以及希望启动的tomcat配置
14、aven-plugin
15、 5. 运行工程,选择工程名邮件Run As->maven clean,会将之前编译的内容清除重新编译。 (图27) 然后执行maven bulid,并在goals中输入package tomcat6:deploy (图28) 先查看一下(图28)run之前tomcat\webapps目录下的内容 (图29) Run(图28),当MyEclipse中的console控制台输出的内容为BUILD SUCCESS时,就表示部署成功了 (图30) (图28)Run之后tomcat\webapps目录下的内容,多了MyFirstMaven和MyFirstMaven.war两个文件,表示
16、项目发布成功 (图31) MyEclipse->项目右键->Run As->Maven Build,输入tomcat6:run,就可启动tomcat。 (图32) 出现如下信息表示tomcat启动成功 (图33) 在浏览器中输入http://localhost:6080/MyFirstMaven并访问 (图34) Ok,maven webapp项目实例完成。 ------------------------------------------------5.问题解答--------------------------------------------------
17、 在maven build工程的时候,大多数资料都是显示tomcat:deploy等等,于是一开始也是按照tomcat:deploy格式输入的,结果会产生大量的报错,而且启动的tomcat端口是8080,是eclipse自带的tomcat,而不是我们设置的6080端口的tomcat。错误信息如下: [DEBUG] (f) charset = ISO-8859-1 [DEBUG] (f) contextFile = D:\eclipse\workspaces\MyFirstMaven\target\MyFirstMaven\META-INF\context.xml
18、 [DEBUG] (f) ignorePackaging = false [DEBUG] (f) mode = war [DEBUG] (f) packaging = war [DEBUG] (f) path = /MyFirstMaven [DEBUG] (f) update = false [DEBUG] (f) url = http://localhost:8080/manager [DEBUG] (f) version = 1.1 [DEBUG] (f) warFile = D:\eclipse\workspaces\MyFirstMave
19、n\target\MyFirstMaven.war [DEBUG] -- end configuration -- [INFO] Deploying war to http://localhost:8080/MyFirstMaven [DEBUG] No server specified for authentication - using defaults [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ---
20、 [INFO] Total time: 2.797s [INFO] Finished at: Wed Mar 13 11:24:37 CST 2013 [INFO] Final Memory: 6M/12M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.codehau
21、s.mojo:tomcat-maven-plugin:1.1:deploy (default-cli) on project MyFirstMaven: Cannot invoke Tomcat manager: Server returned HTTP response code: 400 for URL: http://localhost:8080/manager/deploy?path=%2FMyFirstMaven&war= -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to ex
22、ecute goal org.codehaus.mojo:tomcat-maven-plugin:1.1:deploy (default-cli) on project MyFirstMaven: Cannot invoke Tomcat manager at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
23、at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
24、 at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) at org.apache.maven.DefaultMave
25、n.execute(DefaultMaven.java:156) at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.Nat
26、iveMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) a
27、t org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) Caused by: org.apache.maven.plugin.MojoExecutionExc
28、eption: Cannot invoke Tomcat manager at org.codehaus.mojo.tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:149) at org.codehaus.mojo.tomcat.AbstractWarCatalinaMojo.execute(AbstractWarCatalinaMojo.java:70) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuil
29、dPluginManager.java:101) at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) ... 19 more Caused by: java.io.IOException: Server returned HTTP response code: 400 for URL: http://localhost:8080/manager/deploy?path=%2FMyFirstMaven&war= at .www.protocol.http.HttpURL
30、Connection.getInputStream(HttpURLConnection.java:1305) at org.codehaus.mojo.tomcat.TomcatManager.invoke(TomcatManager.java:604) at org.codehaus.mojo.tomcat.TomcatManager.deployImpl(TomcatManager.java:662) at org.codehaus.mojo.tomcat.TomcatManager.deploy(TomcatManager.java:295) at org.codehau
31、s.mojo.tomcat.AbstractDeployWarMojo.deployWar(AbstractDeployWarMojo.java:85) at org.codehaus.mojo.tomcat.AbstractDeployMojo.invokeManager(AbstractDeployMojo.java:85) at org.codehaus.mojo.tomcat.AbstractCatalinaMojo.execute(AbstractCatalinaMojo.java:141) ... 22 more [ERROR] [ERROR] 原因分析及解
32、决方案: 1. 为什么tomcat:deploy的时候会报错呢? 报错Cannot invoke Tomcat manager: Server returned HTTP response code: 400的原因是因为如果用tomcat,maven是自动调用的maven自带的插件tomcat-6.0.29,前面介绍过,我们需要设置tomcat-user,才能访问tomcat的manager http://localhost:8080/manager/,因为maven自带的tomcat-6.0.29并没有设置tomcat-user,所以无法访问,报错400. 2. 为什么启动的是80
33、80端口的tomcat,而不是我们所需要的6080端口的tomcat呢?
因为如果使用tomcat:deploy或tomcat:run,maven会自动调用的maven自带的tomcat-6.0.29插件,而不是我们所需的外部设置的tomcat-6.0.36,那该怎么办呢?前面在maven-setting.xml设置的时候,重点强调过,有一个配置tomcat的地方,
34、就被启动起来了。 (f) packaging = war [DEBUG] (f) path = /MyFirstMaven [DEBUG] (f) pluginArtifacts = [org.apache.tomcat.maven:tomcat6-maven-plugin:maven-plugin:2.0-beta-1:, org.apache.tomcat.maven:common-tomcat-maven-plugin:jar:2.0-beta-1:compile, org.codehaus.plexus:plexus-archiver:jar:2.0.1:compi
35、le, org.codehaus.plexus:plexus-io:jar:2.0.1:compile, com.google.guava:guava:jar:10.0.1:compile, com.google.code.findbugs:jsr305:jar:1.3.9:compile, commons-io:commons-io:jar:2.0.1:compile, org.apache.httpcomponents:fluent-hc:jar:4.2-alpha1:compile, commons-logging:commons-logging:jar:1.1.1:compile, o
36、rg.apache.httpcomponents:httpclient:jar:4.2-alpha1:compile, org.apache.httpcomponents:httpcore:jar:4.2-alpha2:compile, org.codehaus.plexus:plexus-component-annotations:jar:1.5.5:compile, commons-lang:commons-lang:jar:2.6:compile, junit:junit:jar:4.10:compile, org.hamcrest:hamcrest-core:jar:1.1:compi
37、le, org.apache.maven:maven-archiver:jar:2.4.2:compile, org.codehaus.plexus:plexus-interpolation:jar:1.13:compile, org.codehaus.plexus:plexus-utils:jar:3.0:compile, commons-codec:commons-codec:jar:1.3:compile, org.apache.tomcat:catalina:jar:6.0.35:compile, org.apache.tomcat:juli:jar:6.0.35:compile, o
38、rg.apache.tomcat:annotations-api:jar:6.0.35:compile, org.apache.tomcat:catalina-ha:jar:6.0.35:runtime, org.apache.tomcat:tribes:jar:6.0.35:runtime, org.apache.tomcat:el-api:jar:6.0.35:runtime, piler:ecj:jar:3.7.1:compile, org.apache.tomcat:jasper:jar:6.0.35:runtime, org.apache.tomcat:jasper-el:jar:6
39、0.35:runtime, org.apache.tomcat:jsp-api:jar:6.0.35:runtime, org.apache.tomcat:servlet-api:jar:6.0.35:runtime, org.apache.tomcat:coyote:jar:6.0.35:runtime, org.apache.tomcat:dbcp:jar:6.0.35:runtime] [DEBUG] (f) port = 6080 [DEBUG] (f) project = MavenProject: org.sun:MyFirstMaven:0.0.1-SNAPSHOT
40、 @ D:\eclipse\workspaces\MyFirstMaven\pom.xml [DEBUG] (f) protocol = HTTP/1.1 [DEBUG] (f) uriEncoding = ISO-8859-1 [DEBUG] (f) useNaming = true [DEBUG] (f) useSeparateTomcatClassLoader = false [DEBUG] (f) useTestClasspath = false [DEBUG] (f) warSourceDirectory = D:\eclipse\workspaces\MyFirstMaven\src\main\webapp [DEBUG] -- end configuration -- [INFO] Running war on http://localhost:6080/MyFirstMaven
©2010-2025 宁波自信网络信息技术有限公司 版权所有
客服电话:4009-655-100 投诉/维权电话:18658249818