今天遇到 maven构建的web项目在idea中能正常运行但打成war包后在外部容器tomcat中无法运行的问题。总结一下遇到的问题:
第一个问题:项目结构不对
我的项目结构:

一般maven项目是:
明显少了一层 java maven在打包时会以src/main/java 作为package的sources root 但我的项目中没有这个目录就会导致 在spring的配置文件中配置的包路径 全都不正确;贴一个报错信息
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'job' defined in class path resource [applicationContext.xml]: Cannot resolve reference to bean 'IapIosTaskSer' while setting bean property 'targetObject';
所以后来在项目中添加了java这个文件夹,然后把原来的com文件夹移动到java下面;
题外说一句:我用的IDE是idea那么我在idea中是如何把项目跑起来的了。
idea是可以指定sources root 的,指定后的就可以根据路径找到类了。
第二个问题:mapper.xml没打包
打成war后mapper.xml全都不见了,所以在调用mapper层方法的时候,都要报错。解决办法在网上找了个办法;在pom.xml中添加了这段代码。
<build>
  <resources>
    <resource>
      <directory>src/main/java</directory>
      <includes>
        <include>**/*.xml </include>
      </includes>
    </resource>
    <resource>
      <directory>src/main/resources</directory>
      <includes>
        <include>**/*.* </include>
      </includes>
    </resource>

    <resource>
      <directory>src/main/webapp/WEB-INF</directory>
      <includes>
        <include>*.xml </include>
        <include>*.properties </include>
      </includes>
    </resource>
  </resources>
</build>

  

解决这2个问题后就顺利的在外部的tomcat中运行起来了