使其与平台无关 如今,使用注解之类的工具来开发Spring Boot应用程序可能很容易,并且可以将其初始化为Maven,Spring Boot和嵌入式服务器。
因此,正如我们所知,在构建Spring Boot应用程序时,默认情况下,我们将该应用程序打包到一个JAR文件中,并将我们的主要应用程序类执行到一个主要的嵌入式tomcat服务器中。然后,我们在环境中运行应用程序测试,Web应用程序或REST端点,以轻松进行测试和调试。
如果我们想使我们的应用程序服务器独立于其他应用程序并将其放置在其他服务器上,例如Weblogic,Jboss,Wildfly等,该怎么办?
为此,我们必须使我们的应用程序成为WAR文件。
这样做的简单步骤如下:
1.通过以下更改更新您的maven pom.xml
设置包装标签以防战争
<packaging>war</packaging>
将所有Tomcat Jar文件设置为提供
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency>
然后,我们需要更新maven-war-plugin,如果web.xml丢失则不会失败。可以通过更新build标记中的插件信息并通过删除org.springframework.boot pom中的 插件来完成此操作,如下所示:
maven-war-plugin
org.springframework.boot pom
<plugins> <!-- <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-war-plugin</artifactId> <version>3.1.0</version> <executions> <execution> <id>default-war</id> <phase>prepare-package</phase> <configuration> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </execution> </executions> </plugin> </plugins>
2.更新您的Main类以 扩展SpringBootServletInitializer
@SpringBootApplication public class SpringBootWarDeploymentApplication extends SpringBootServletInitializer { @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { return application.sources(SpringBootWarDeploymentApplication.class); } public static void main(String[] args) { SpringApplication.run(SpringBootWarDeploymentApplication.class, args); } }
3.将文件SpringBootWarDeployment-0.0.1.war重命名 为所需的名称 springrestapi.war。
4.检查您的服务器容器是否 缺少web.xml文件 功能
通常,由于某些容器无法部署破折号版本,因此我们通常希望从构建文件中删除版本号。
结论 通常,这对我有用,我下载了Apache Tomcat 8.5并编辑了pom.xml插件和中提琴!有效。我的所有项目最终都能正常工作,因为Tomcat 8.5及更高版本不接受Web.xml及其排除。
原文链接:http://codingdict.com