idea使用tomcat插件部署项目

maven的功能很多,主要是管理依赖包,还有些插件也是十分实用的

比如tomcat插件,直接配置插件就能部署项目运行,而不用手动单独下载tomcat

一,如何在idea使用tomcat插件

1,pom.xml中添加toncat7插件配置

  <plugins>
          <plugin>
          <groupId>org.apache.tomcat.maven</groupId>
          <artifactId>tomcat7-maven-plugin</artifactId>
          <version>2.1</version>
          <configuration>
              <port>9090</port>
              <path>/</path>
              <uriEncoding>UTF-8</uriEncoding>
              <server>tomcat7</server>
          </configuration>
      </plugin>
      </plugins>

2,idea配置

Edit Configurations-》

其中的端口号可以自由修改

使用tomcat插件启动:

二,插件部署项目报错

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run (default-cli) on project messystem: Could not start Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start -> [Help 1]
[ERROR] 

[ERROR] Failed to execute goal org.apache.tomcat.maven:tomcat7-maven-plugin:2.1:run (default-cli) on project messystem: Could not start Tomcat: Failed to start component [StandardServer[-1]]: Failed to start component [StandardService[Tomcat]]: Failed to start component [StandardEngine[Tomcat]]: A child container failed during start -> [Help 1]
[ERROR] 

这里的提示只能看出是tomcat插件执行run出错了,但是具体原因未知

可以往前看看是什么错误

这段错表面上能看出是最近的初始化加载了不同type的 “javax/servlet/ServletContext”,这或许就能看出问题,应该是版本不同了,

javax好像pom里面是有这个包的,

但是我的javax只有这里引入了,怎么可能会是不同版本的呢?

解决:javax这个包是tomcat提供的,使用插件启动,插件中的tomcat已经包含此包,pom又引入了此包,那么就可能导致版本不一样或者是冲突!!

javax能够在tomcat的lib目录下找到,这就说明这些包是能够由tomcat提供的
随便打开一个tomcat的lib目录

解决

那么就需要注意jar包的scope,改为 provided

pom.xml相关部分修改后如下

  <dependency>
<!--此包虽然在tomcat的bin找不见,但是如果不指定scope,启动也是会报错的,如果注释掉此包,也能正常启动-->
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
  <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.1</version>
            <scope>provided</scope>
        </dependency>
  <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>2.5</version>
            <scope>provided</scope>
        </dependency>

猜你喜欢

转载自blog.csdn.net/qq_36922927/article/details/81746907