如何 运行 带有嵌入式 tomcat 或 spring 的外部 war 文件用 gradle 启动?
How to run external war file with embedded tomcat of spring boot with gradle?
我正在尝试将外部 war 文件部署到 spring 的嵌入式 tomcat boot.I 添加 gradle 格式为 .[=22 的依赖项=] 文件,我想要 运行 这个 war 通过 spring 启动应用程序,但不是 运行ning 请任何人帮助我。
试试这个方法吧。在您的 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
一些 类 在 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);
}
};
}
我正在尝试将外部 war 文件部署到 spring 的嵌入式 tomcat boot.I 添加 gradle 格式为 .[=22 的依赖项=] 文件,我想要 运行 这个 war 通过 spring 启动应用程序,但不是 运行ning 请任何人帮助我。
试试这个方法吧。在您的 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
一些 类 在 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);
}
};
}