Heroku上的Java Web应用程序:无法访问jarfile

Nai*_*gun 6 java github heroku maven spring-boot

我正在尝试将我的Java Spring Boot Web应用程序部署到Heroku.

要在本地启动它,我运行:

mvn install

然后

java $JAVA_OPTS -jar target/*.war

因此,对于Heroku,我创建了Procfile: web: java $JAVA_OPTS -jar target/*.war

我使用Heroku Github集成,应用程序从Github部署到Heroku.所以我把它推到那里.

但该应用程序无法启动.

heroku logs --app myapp 给我:

2015-09-09T21:53:25.581128+00:00 heroku[web.1]: Starting process with command `java $JAVA_OPTS -jar target/*.war`
2015-09-09T21:53:27.110820+00:00 app[web.1]: Error: Unable to access jarfile target/*.war`
Run Code Online (Sandbox Code Playgroud)

heroku run bash --app myappls -a不显示target目录.

我认为Heroku不构建应用程序.但是我做错了什么?在此先感谢您的建议!

Hit*_*eeb 6

而不是mvn installmvn package给知道其中的差别检查http://maven.apache.org/guides/getting-started/maven-in-five-minutes.html

使用Heroku Maven插件部署WAR文件允许您将部署过程与现有Maven过程集成.Heroku插件使用mvn包阶段生成的工件,并将它们构建为上传到Heroku服务器的Slug文件.

通过这种方式,Heroku Maven插件可以避免远程重新编译项目的开销.从CI服务器部署时,这通常是首选方法,CI服务器可能已经构建了WAR文件并对其进行了测试.

资料来源:https://devcenter.heroku.com/articles/war-deployment#deployment-with-the-heroku-maven-plugin

关于部署Spring Boot,需要采取一些步骤:

  • 配置端口

    web: java -Dserver.port=$PORT -jar target/demo-0.0.1-SNAPSHOT.jar

  • 指定JDK,默认值为1.8(如果在Maven中指定了1.8,则无需更改)

查看http://docs.spring.io/spring-boot/docs/current/reference/html/cloud-deployment-heroku.html

要执行Procfile使用 heroku local


Nai*_*gun 5

我找到了错误的原因。这是构建日志的一部分:

-----> Warning: Multiple default buildpacks reported the ability to handle this app. The first buildpack in the list below will be used.
       Detected buildpacks: Node.js, Java
       See https://devcenter.heroku.com/articles/buildpacks#buildpack-detect-order
-----> Node.js app detected
-----> Creating runtime environment
Run Code Online (Sandbox Code Playgroud)

根据 Heroku构建顺序,该应用程序被视为 NodeJS 之一。所以解决方案是设置java build pack:

heroku buildpacks:set https://github.com/heroku/heroku-buildpack-java
Run Code Online (Sandbox Code Playgroud)

然后将任何更改推送到应用程序以使其重建。