maven的部署和启动以及常见的三种错误

本文详细介绍如何通过Maven自动部署应用至Tomcat,并解决部署过程中常见的错误问题。

一.maven的部署和启动

我用的tomcat7,其中tomcat-user.xml文件需要配置如下role和user

[html]  view plain copy
  1. <role rolename="admin-gui"/>  
  2. <role rolename="admin-script"/>  
  3. <role rolename="manager-gui"/>  
  4. <role rolename="manager-script"/>  
  5. <role rolename="manager-jmx"/>  
  6. <role rolename="manager-status"/>  
  7. <user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status,admin-script,admin-gui"/>  

maven的setting.xml文件的servers节点下添加如下内容

[html]  view plain copy
  1. <server>  
  2.    <id>tomcat</id>  
  3.    <username>admin</username>  
  4.    <password>admin</password>  
  5. </server>  

然后当前项目的pom.xml文件的plugins节点下需要添加如下plugin

[html]  view plain copy
  1. <plugin>    
  2.      <groupId>org.codehaus.mojo</groupId>    
  3.      <artifactId>tomcat-maven-plugin</artifactId>         
  4.      <configuration>    
  5.         <server>tomcat</server>  
  6.          <url>http://localhost:8080/manager/text</url>      
  7.          <path>/framework</path>    
  8.      </configuration>     
  9. </plugin>   

在上述配置文件中:

其中server与maven的setting.xml中的id一致

其中url为tomcat管理地址,不同的容器,域名和端口可能不同,注意url的最后必须加上 /text 否则会出错

其中 path为你项目的名称


注意事项:

1、如果本机有多个tomcat,eclipse maven插件怎么知道是哪个tomcat呢? 答:你必须在eclipse里面配置 tomcat

2、在运行maven的deploy命令之前,一定要先启动tomcat(直接进入tomcat的bin目录点击startup.bat),否则会报:“Cannot invoke Tomcat manager: Connection refused” 错误

3、在 pom.xml 的configuration节点里面的url最后必须加上 /text ,否则,即使你在运行maven的deploy命令之前已经启动了tomcat,还是会报错:

“Cannot invoke Tomcat manager: Server returned HTTP response code: 403 for URL: http://localhost:8080/manager/deploy?path=%2Fframework&war= ”

4、在运行maven的deploy 命令之前,我们已经启动了tomcat,所以在运行maven的run 命令之前,必须先关掉tomcat,然后再运行maven的 run 命令,之后你对项目的修改都会自动的同步到项目发布目录


二.自动部署Tomcat错误排除

在Maven与Tomcat配合部署过程中,最常见的错误有三种,折腾了半天,终于找到三种错误产生的原因,以及相应的完美解决办法:

1.Connection refused错误

报错信息如下:

?
1
[ERROR]Failed to execute goal org.apache.tomcat.maven: tomcat7-maven-plugin: 2.0- SNAPSHOT: deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Connection refused: connect -> [Help 1]

原因:未启动Tomcat服务器

解决办法:先启动Tomcat服务器再选择Run

2. 401错误

报错信息如下:

?
1
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 401  for  URL: http: //localhost :8080 /manager/text/deploy ?path=%2Fhelloworld -> [Help 1]

原因:权限问题

解决办法在$CATALINA_BASE/conf/tomcat-users.xml,

如D:\apache-tomcat-7.0.34\conf\tomcat-users.xml文件中添加权限

?
1
2
<role rolename=”manager”/>
<user username=”admin” password=”admin” roles=”manager”/>

修改pom.xml文件,在<configuration>  

</configuration>中添加

?
1
2
<username>admin< /username >  
<password>admin< /password >

3.403错误

报错信息如下:

?
1
[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin: 2.0-SNAPSHOT:deploy (default-cli) on project helloworld: Cannot invoke Tomcat manager: Server returned HTTP response code: 403  for  URL: http: //localhost :8080 /manager/html/deploy ?path=%2Fhelloworld -> [Help 1]

原因:产生该问题有可能因为两个原因,具体参见解决办法

解决办法:

1)如果使用的是Tomcat 7,需要修改pom.xml中部署的url地址,将

<url>http://localhost:8080/manager</url>

<url>http://localhost:8080/manager/text</url>

在这次部署的问题上,我就是遇到了url 的问题,我用的是tomcat7

2)给tomcat用户权限分配上,需要同时具备manager-gui和manager-script权限

正确的conf/tomcat-users.xml配置应为:

?
1
2
3
4
5
<tomcat- users >
<role rolename= "manager-gui" />
<role rolename= "manager-script" />
<user username= "admin” password=" admin " roles=" manager-gui, manager-script"/>
< /tomcat-users >


<think>好的,我现在需要帮助用户解决如何将Maven项目打包成WAR并部署到Tomcat的问题。用户可能是一个刚开始学习Java Web开发的开发者,对MavenTomcat的集成不太熟悉。首先,我要确保步骤清晰,用户能一步步跟着操作。 首先,我要参考用户提供的引用内容。引用1提到了使用Maven部署WAR到Tomcat的基本流程,引用2到5具体涉及了Spring Boot项目的配置,比如移除嵌入式Tomcat、添加Maven插件以及打包后的启动步骤。所以,我需要综合这些信息,给出一个通用的教程,同时涵盖普通Maven项目Spring Boot项目的不同处理方式。 接下来,我需要结构化的步骤。可能分为项目配置、打包、部署启动几个部分。在项目配置里,普通项目Spring Boot项目有不同的处理,比如修改packaging为war,添加Servlet API依赖,以及对于Spring Boot需要排除内嵌Tomcat并修改启动类。然后,打包部分使用mvn clean package命令。部署部分需要将生成的WAR文件放到Tomcat的webapps目录,启动Tomcat后访问验证。 同时,要注意常见问题,比如端口冲突、权限问题,以及如何配置上下文路径。引用中提到的failOnMissingWebXml错误需要设置maven-war-plugin来避免,这一点要特别指出,尤其是在没有web.xml的项目中。 用户可能遇到的问题包括打包失败、部署后无法访问,或者Spring Boot应用未正确适配外部Tomcat。需要提前在教程中给出解决办法,比如检查插件配置、排除Tomcat依赖、修改启动类等。 最后,生成相关问题,帮助用户深入理解,比如性能优化、日志查看、多环境配置等。这些问题应该基于教程内容,引导用户进一步学习。 整个过程中,要保持语言简洁,步骤明确,避免使用专业术语过多,让新手也能理解。同时,确保所有代码示例配置正确无误,用户可以直接复制使用。检查是否有遗漏的步骤,比如Tomcat的安装前提,或者环境变量的配置,可能需要用户提前准备好,但用户的问题主要关注打包部署,所以可能不需要详细展开。 总结一下,我需要将各个引用中的有效信息整合成一个连贯的教程,覆盖配置、打包、部署启动,同时区分普通项目Spring Boot项目,并解答常见问题,最后提出相关问题供用户参考。</think>以下是将Maven项目打包为WAR并部署到Tomcat的完整教程,结合Spring Boot非Spring Boot项目的不同场景: --- ### 一、项目配置阶段 #### 1. 修改pom.xml配置 ```xml <!-- 非Spring Boot项目 --> <packaging>war</packaging> <!-- Spring Boot项目需额外配置 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> <!-- 排除内嵌Tomcat --> </dependency> ``` *引用[4]中提到的移除嵌入式Tomcat方法与此等效* #### 2. 添加必要插件 ```xml <build> <plugins> <!-- Maven编译插件 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> <!-- 处理无web.xml项目 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.3.2</version> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <!-- Spring Boot项目需要 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> ``` *引用[2][3]中插件配置的综合优化版本* --- ### 二、打包操作 1. 在项目根目录执行命令: ```bash mvn clean package ``` 2. 生成路径: ``` target/项目名.war # 如引用[2]中kunyuan.war ``` --- ### 三、部署到Tomcat #### 1. 标准部署方式 ```bash # 将war文件复制到Tomcat的webapps目录 cp target/*.war ${TOMCAT_HOME}/webapps/ # 启动Tomcat(Linux/Mac) ${TOMCAT_HOME}/bin/startup.sh # Windows启动 双击startup.bat # 如引用[5]所述 ``` #### 2. 上下文路径设置 ```bash # 将项目重命名为ROOT.war可设为根路径 mv myapp.war webapps/ROOT.war ``` --- ### 四、验证部署 1. 访问地址: ``` http://localhost:8080/[项目名]/ ``` 2. 查看日志: ```bash tail -f ${TOMCAT_HOME}/logs/catalina.out ``` --- ### 五、Spring Boot专项配置 1. 修改启动类: ```java @SpringBootApplication public class Application extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { return builder.sources(Application.class); } } ``` *如引用[3][4]中提到的Servlet初始化方法* 2. 配置文件调整: ```properties # application.properties server.servlet.context-path=/myapp ``` --- ### 六、常见问题解决 1. **端口冲突**:修改Tomcat的`server.xml`中`<Connector port="8080">` 2. **权限问题**:Linux系统执行`chmod +x *.sh` 3. **静态资源加载失败**:检查`src/main/webapp`目录结构 4. **类找不到异常**:确认依赖范围是否正确(如Servlet API使用`provided`) ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值