gpt4 book ai didi

java - 如何将 Spring Boot 应用程序项目部署到 Heroku

转载 作者:行者123 更新时间:2023-12-01 07:54:51 26 4
gpt4 key购买 nike

我创建了一个简单的服务器,它使用 JPA 存储库并返回 Json 格式的响应。它包括方法 post 和 get。这是一个 Spring Starter Boot 应用程序项目,一切都在我的本地主机上运行(我使用 postman 发送和接收 json 对象)。我的问题是当我尝试部署到 Heroku 时遇到很多问题。我添加了 jetty-runner 依赖项和插件。我还创建了一个 procfile,如下所示:

web: java $JAVA_OPTS -jar target/dependency/jetty-runner.jar --port $PORT target/*.war

最初目标文件夹是空的,并且 foreman start web 说它无法找到我的 war 文件,因此我将以下行添加到 pom.xml 中:

<packaging>war</packaging>

但是该项目创建了一个错误,因此我禁用了该项目的 maven 性质,然后再次配置了 maven,然后它在目标文件夹中包含了 pom.properties 和 pom.xml。当我尝试部署它时,它说无法访问目标/依赖项中的jetty jar 文件,因为没有这样的文件夹。所以我做了 maven install 并且它安装了丢失的文件夹。现在我收到找不到事务管理器的错误,因此我安装了jetty-plus和Atomikos的依赖项。但现在我仍然收到错误,没有找到事务管理器,并且有一个 java.net.bindexception。

我感觉我真的走错路了。我想知道是否有人可以从一开始就告诉我如何将 Spring Starter Boot 项目部署到 Heroku。任何帮助将不胜感激。

这是我的 pom.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>org.test</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>Challenge-Server1</name>
<description>Demo project for Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-runner</artifactId>
<version>7.4.5.v20110725</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.3</version>
<executions>
<execution>
<phase>package</phase>
<goals><goal>copy</goal></goals>
<configuration>
<artifactItems>
<artifactItem>
<groupId>org.mortbay.jetty</groupId>
<artifactId>jetty-runner</artifactId>
<version>7.4.5.v20110725</version>
<destFileName>jetty-runner.jar</destFileName>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>


</project>

最佳答案

我发现部署 Spring Boot 应用程序与部署 Spring Boot MVC 项目有点不同。基本上你不需要 jetty-runner 依赖项或插件,只需执行以下步骤:

  • 配置mvn项目
  • mvn 清理并安装
  • 将 Procfile 声明为:web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/*.jar

所有内容均来自此站点: http://web.archive.org/web/20171018145733/http://nicholaspaulsmith.com/spring-boot-on-heroku/

关于java - 如何将 Spring Boot 应用程序项目部署到 Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31484383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com