Spring注释控制器不能与Heroku上嵌入的Tomcated一起工作

Spring注释控制器不能与Heroku上嵌入的Tomcated一起工作,spring,tomcat,spring-mvc,heroku,embedded-tomcat-7,Spring,Tomcat,Spring Mvc,Heroku,Embedded Tomcat 7,当我使用WAR时,我有spring注释的控制器可以很好地工作,但是当我尝试在本地和Heroku上运行嵌入式时,没有一个注释的控制器可以工作。我使用mvc:view-controller设置了一些页面,但组件扫描控制器都不起作用 package com.myapp.launch; import java.io.File; import javax.servlet.ServletException; import org.apache.catalina.LifecycleException;

当我使用WAR时,我有spring注释的控制器可以很好地工作,但是当我尝试在本地和Heroku上运行嵌入式时,没有一个注释的控制器可以工作。我使用
mvc:view-controller
设置了一些页面,但
组件扫描
控制器都不起作用

package com.myapp.launch;

import java.io.File;

import javax.servlet.ServletException;

import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;

public class Main {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        String webappDirLocation = "src/main/webapp/";
        Tomcat tomcat = new Tomcat();

        //The port that we should run on can be set into an environment variable
        //Look for that variable and default to 8080 if it isn't there.
        String webPort = System.getenv("PORT");
        if(webPort == null || webPort.isEmpty()) {
            webPort = "8080";
        }

        tomcat.setPort(Integer.valueOf(webPort));

        try {
            tomcat.addWebapp("/", new File(webappDirLocation).getAbsolutePath());
        } catch (ServletException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("configuring app with basedir: " + new File("./" + webappDirLocation).getAbsolutePath());

        try {
            tomcat.start();
        } catch (LifecycleException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        tomcat.getServer().await();  


    }

}
这是我的spring配置的一部分

<mvc:view-controller path="/" view-name="home"/>
<mvc:view-controller path="/terms" view-name="terms"/>
<mvc:view-controller path="/privacy" view-name="privacy"/>

<context:component-scan base-package="com.myapp.controllers"/>

我发现这是因为我的控制器是groovy,当我在本地运行tomcat时,这些控制器被编译为make步骤的一部分,但当我启动tomcat embedded时,相同的过程没有运行。在我的gmaven插件中添加了一个执行目标之后,我就能够毫无问题地完成这个任务了

由于这些类是由gmaven编译的,tomcat能够提取它们