Java Spring 引导 - war 文件未在 Tomcat Apache 上部署
Java Spring Boot - war file not deploying on Tomcat Apache
我正在构建一个 Java Spring 引导项目 - 作为一项要求,我需要将项目生成为 war 文件 - 然后有 Tomcat 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>
Java Spring Boot - war file not deploying on Tomcat Apache
Spring-使用 application.jar 构建的引导,包括内部应用程序服务器。
Spring Boot 的目标是让创建 Spring 支持的生产级应用程序和服务变得容易,而且不会大惊小怪。它采用了 Spring 平台的自以为是的观点,以便新用户和现有用户可以快速获得他们需要的位。您可以使用它来创建独立的 Java 应用程序,这些应用程序可以使用“java -jar”或更传统的 WAR 部署启动。我们还提供了一个运行“spring 脚本”的命令行工具。
https://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone
So, You don't need to again deploy in Apache Tomcat Application Server.
Just Run It like simple java .jar file.
nohup java -jar app.jar &
Spring 启动 web 项目的工作示例 Spring Boot WebApp as WAR
通过 maven 构建的常规 Spring 启动应用程序是一个打包的 jar。
需要修改为WAR,检查WEB-INF内容是否正确
Spring 打包为 war 的启动应用程序不是单独部署到 Tomcat 而是直接通过 Spring 启动应用程序部署到 运行(通过 main方法)。您需要测试,但根据我的理解,如果有人建议您将其部署在 tomcat 中,那么您需要通知他们他们要求的是常规 Web 应用程序,而不是
Spring启动应用程序。
每个 Spring 启动应用程序 运行 都有自己的容器。
此外,您将视图文件保存在模板目录中,如果您不使用 Thymeleaf,则不能将它们作为静态内容从模板目录中选取。
根据 Traditional deployment page 你必须添加依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
要获得 Spring 引导以部署为 war - 您需要重新配置应用程序 class。
@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
添加
<packaging>war</packaging>
因为我使用的是 maven,所以我也添加了依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
我的应用程序很复杂,因为我使用 reactjs 作为前端表示层,而 Java 只是作为 api 层。我必须将 reactjs 构建移动到 main/src/webapps——然后它会在 war 文件中正确呈现为 js、css 和 html 文件的捆绑包。当 reactjs 充当表示层时,它只能通过 api 连接到 java 端 - 所以 url 结构很重要,我已经把所有东西都放在预期中 运行 从根开始。因此,如果您部署到 tomcat - 您可能需要重命名 war 文件 ROOT.war.
我正在构建一个 Java Spring 引导项目 - 作为一项要求,我需要将项目生成为 war 文件 - 然后有 Tomcat 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>
Java Spring Boot - war file not deploying on Tomcat Apache
Spring-使用 application.jar 构建的引导,包括内部应用程序服务器。
Spring Boot 的目标是让创建 Spring 支持的生产级应用程序和服务变得容易,而且不会大惊小怪。它采用了 Spring 平台的自以为是的观点,以便新用户和现有用户可以快速获得他们需要的位。您可以使用它来创建独立的 Java 应用程序,这些应用程序可以使用“java -jar”或更传统的 WAR 部署启动。我们还提供了一个运行“spring 脚本”的命令行工具。
https://spring.io/blog/2013/08/06/spring-boot-simplifying-spring-for-everyone
So, You don't need to again deploy in Apache Tomcat Application Server. Just Run It like simple java .jar file.
nohup java -jar app.jar &
Spring 启动 web 项目的工作示例 Spring Boot WebApp as WAR
通过 maven 构建的常规 Spring 启动应用程序是一个打包的 jar。
需要修改为WAR,检查WEB-INF内容是否正确
Spring 打包为 war 的启动应用程序不是单独部署到 Tomcat 而是直接通过 Spring 启动应用程序部署到 运行(通过 main方法)。您需要测试,但根据我的理解,如果有人建议您将其部署在 tomcat 中,那么您需要通知他们他们要求的是常规 Web 应用程序,而不是 Spring启动应用程序。
每个 Spring 启动应用程序 运行 都有自己的容器。
此外,您将视图文件保存在模板目录中,如果您不使用 Thymeleaf,则不能将它们作为静态内容从模板目录中选取。
根据 Traditional deployment page 你必须添加依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
要获得 Spring 引导以部署为 war - 您需要重新配置应用程序 class。
@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 添加
<packaging>war</packaging>
因为我使用的是 maven,所以我也添加了依赖项。
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
我的应用程序很复杂,因为我使用 reactjs 作为前端表示层,而 Java 只是作为 api 层。我必须将 reactjs 构建移动到 main/src/webapps——然后它会在 war 文件中正确呈现为 js、css 和 html 文件的捆绑包。当 reactjs 充当表示层时,它只能通过 api 连接到 java 端 - 所以 url 结构很重要,我已经把所有东西都放在预期中 运行 从根开始。因此,如果您部署到 tomcat - 您可能需要重命名 war 文件 ROOT.war.