如何用gradle运行带有嵌入式tomcat的spring boot的外部war文件?

时间:2017-09-11 08:03:05

标签: spring-boot-gradle-plugin

我正在尝试将外部war文件部署到spring boot的嵌入式tomcat中。我以.war文件的格式添加了gradle依赖项,我希望通过spring boot app运行此war,但是没有运行请任何人都可以帮助我

2 个答案:

答案 0 :(得分:0)

试试这种方法。在Spring启动应用程序中添加此代码块。 您的war文件必须放在src/main/resources目录中。

@Bean
    public EmbeddedServletContainerFactory servletContainerFactory() {
        return new TomcatEmbeddedServletContainerFactory() {

            @Override
            protected TomcatEmbeddedServletContainer getTomcatEmbeddedServletContainer(Tomcat tomcat) {

                new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();

                try {

                    tomcat.addWebapp("/cms", new ClassPathResource("cms.war").getFile().toString());

                } catch (Exception ex) {
                    throw new IllegalStateException("Failed to add webapp",ex);
                }
                return super.getTomcatEmbeddedServletContainer(tomcat);
            }
        };

    }

- >将application.properties中的基目录更改为

server.tomcat.basedir=temp-server

答案 1 :(得分:0)

Spring Boot 2中更改了一些类,因此您必须这样做:

@Bean
public ServletWebServerFactory servletContainer() {
    return new TomcatServletWebServerFactory() {
        protected TomcatWebServer getTomcatWebServer(Tomcat tomcat) {
            new File(tomcat.getServer().getCatalinaBase(), "webapps").mkdirs();
            try {
                tomcat.addWebapp("/cms", new ClassPathResource("cms.war").getFile().toString());

            } catch (Exception ex) {
                throw new IllegalStateException("Failed to add webapp", ex);
            }
            return super.getTomcatWebServer(tomcat);
        }
    };
}