Java Spring Boot - 不会在Tomcat上部署的war文件Apache
我正在构建Java Spring引导项目 - 并且作为需要将项目生成为war文件的需求 - 然后让Tomcat Apache从此单独运行。Java Spring Boot - 不会在Tomcat上部署的war文件Apache
我已经构建了war文件,但是当我尝试部署它时,它的结构不正确,并且它生成404尝试查看项目。
-
我POM
http://maven.apache.org/xsd/maven-4.0.0 .xsd“> 4.0.0
<groupId>org.springframework</groupId> <artifactId>gs-spring-boot</artifactId> <version>0.1.0</version> <packaging>war</packaging> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.7.RELEASE</version> </parent> <dependencies> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- test --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- Spring Security --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency> <!-- jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- https://mvnrepository.com/artifact/org.hibernate.javax.persistence/hibernate-jpa-2.0-api --> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.1.Final</version> </dependency> <!-- mysql connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- mail service --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <!-- hot swapping, disable cache for template, enable live reload --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> <scope>provided</scope> </dependency> <!-- freemarker template --> <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.23</version> </dependency> <!-- json simple --> <dependency> <groupId>com.googlecode.json-simple</groupId> <artifactId>json-simple</artifactId> <version>1.1.1</version> </dependency> <!-- tag::actuator[] --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <!-- end::actuator[] --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> <version>1.4.194</version> <scope>test</scope> </dependency> </dependencies> <properties> <java.version>1.8</java.version> </properties> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <artifactId>maven-failsafe-plugin</artifactId> <executions> <execution> <goals> <goal>integration-test</goal> <goal>verify</goal> </goals> </execution> </executions> </plugin> </plugins> </build>
让Spring启动部署作为战争 - 你需要重新配置应用程序类。
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
在pom.xml ,因为我是使用maven我还添加了依赖添加
<packaging>war</packaging>
。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
我的申请被在复杂的我用reactjs作为前端表现层和Java一样的API层。我必须将reactjs构建版本移动到main/src/webapps中 - 然后将它作为js,css和html文件包正确显示在war文件中。使用reactjs作为表示层,它只能通过api连接到java端 - 所以url结构很重要,我已经把所有东西都放在了预期它会从根目录运行的地方。所以如果你部署到tomcat - 你可能需要重命名war文件ROOT.war。
很好,让它工作 – Acewin
Java的春季启动 - 战争文件不部署在Tomcat的Apache
弹簧引导与application.jar里面包括应用服务器builed。
Spring Boot旨在让您轻松创建弹簧驱动的生产级应用程序和服务,而且大惊小怪。它采用Spring平台的观点,以便新用户和现有用户可以快速找到他们需要的位。您可以使用它创建可以使用'java -jar'或更传统的WAR部署启动的独立Java应用程序。我们还提供了一个运行“春天脚本”的命令行工具。
https://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone
所以,你不需要再在Apache Tomcat应用服务器部署。 只需运行它就像简单的java .jar文件。
nohup java -jar app.jar &
我不能说男人 - 他们希望它打包成一个战争文件 - 所以它可以放在一个安全的医院服务器上。我正在本地运行项目,只是使用Maven构建并运行jar文件,很可能就像刚刚列出的那样。但是他们希望它只是通过战争文件来完成部署。 –
Spring团队创建SpringBoot来解决配置的复杂性。所以你可以通过删除pom.xml依赖关系配置和注释来删除SpringBoot配置,将它构建为.war,它会正常工作。 – 2017-10-12 02:39:33
- 从哪里删除弹簧引导配置? - 我将它作为war文件构建 - 它会产生404错误 –
春季启动Web项目Spring Boot WebApp as WAR
定期SpringBoot应用程序构建基于Maven的工作示例是一个打包的罐子。
您需要将其修改为WAR并检查WEB-INF的内容是否正确。
打包为war的Spring引导应用程序不是单独部署到Tomcat中,而是直接通过Spring Boot App(通过main方法)运行。你需要测试,但根据我的理解,如果有人建议你在tomcat中部署它,那么你需要通知他们,他们需要一个普通的Web应用程序,而不是SpringBoot应用程序。
每个SpringBoot应用程序都运行它自己的容器。
此外,您将视图文件保留在模板目录中,如果您未使用Thymeleaf,则无法从模板目录中将它们选为静态内容。
根据Traditional deployment page你必须添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
更新你的问题与web.xml&项目目录结构与您尝试的404 URL – 2017-10-12 00:33:22
- 那么web.xml似乎丢失 –
https://stackoverflow.com/questions/3136177/maven-error-while- building-war-package-web-xml-missing –