【问题标题】:Deploying Spring MVC webapp部署 Spring MVC webapp
【发布时间】:2016-01-17 13:21:59
【问题描述】:

我有 Spring MVC 应用程序,除了 pom.xml(完全注释驱动)之外没有 xml。我想构建战争并将应用程序部署到 tomcat 服务器。我已经包含了 maven 插件:

<build>
    <finalName>app</finalName>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        </plugins>
</build>

这是我的 MvcInitializer 类:

public class MvcInitializer extends
    AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
    return new Class[] { MvcConfig.class };
}

@Override
protected Class<?>[] getServletConfigClasses() {
    return null;
}

@Override
protected String[] getServletMappings() {
    return new String[] { "/" };
}
}

当我使用带有目标“包”的 maven 构建时,出现以下错误:

Error assembling WAR: webxml attribute is required (or pre-existing WEB-INF/web.xml if executing in update mode)

我需要做什么才能获得可以在 tomcat 服务器中运行的有效 war 文件?

顺便说一句,我可以在 IDE 中的 Tomcat 中运行我的应用程序,但我想部署它。

【问题讨论】:

  • 如果您有更新的应用程序,我强烈建议您使用带有 Spring Boot 的嵌入式容器(如果可行的话)。
  • 你不需要 web.xml

标签: java spring maven spring-mvc


【解决方案1】:

将此添加到您的pom.xml

<build>
    <plugins>
        <plugin>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.6</version>
            <configuration>
                <failOnMissingWebXml>false</failOnMissingWebXml>
            </configuration>
        </plugin>
    </plugins>
</build>

更新:最好将MvcConfig 添加为servlet configs 而不是root configs 的一部分:

public class MvcInitializer extends
    AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class<?>[] getRootConfigClasses() {
        return null;
    }

    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[] { MvcConfig.class };;
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}

【讨论】:

  • 成功生成war文件,但部署到tomcat后视图不显示。控制器运行良好,但视图却不行
  • 检查您的视图解析器。可能是配置问题
  • 问另一个问题,添加您的问题详细信息,也许其他人可以提供帮助
猜你喜欢
  • 1970-01-01
  • 2020-12-30
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 2013-09-27
  • 2013-02-13
  • 2015-05-29
相关资源
最近更新 更多