3

I have a big issue. I'm trying to deploy Spring Boot + Angular 2 web app on heroku but don't know how to do it. I tried several things including:

  • Making a .war file and deploying it to heroku (source here)

  • Deploying project as standard java application (source here)

but none of these worked. The first attempt didn't work because I constatly got 404 not found, and the second one didn't work due to, I think, some jar file wasn't found in the location which was described in the Procfile. Can anyone give me a link, an example, or write a step by step instruction how to achieve this. Thank you.

3 Answers 3

5

The most simple way to do it:

  1. run ng build in angular 2 project root (if you are using angular-cli) and copy the content of dist folder to src/main/resources/static/.
  2. create Procfile (for maven):

    web: java $JAVA_OPTS -Dserver.port=$PORT -jar target/*.jar

  3. commit and push changes.

    Also, you need spring-boot-starter-web present in dependencies. Which has embedded tomcat and automatically configured to serve static content from the static folder.

Sign up to request clarification or add additional context in comments.

4 Comments

The problem here is that my dist folder doesn't get generated.
@kantagara, If you generated an angular project with angular-cli everything should work. Run: ng new project_new --ng4
@kantagara also you may find this useful.
Thank you so much for your solution. I couldn't find the exact cause why my dist folder didn't get generated, so I created brand new angular project, installed all the required dependencies and transfered all of my source files to that project. After that i run ng build and it generated the dist folder. The next problem I had was not getting any 404 not found error from spring, but I handled that with the solution described here stackoverflow.com/questions/38516667/… .
3

If you deploy your app as a standard Java application, you can combine it with the Node.js buildpack to run ng build during the Heroku build.

$ heroku buildpacks:add heroku/nodejs
$ heroku buildpacks:add heroku/java
$ git push heroku master

The Node.js buildpack will detect your package.json, install Node.js and run npm. Then the Java build can proceed as normal.

There is a guide for doing something very similar but with Grunt: Using Grunt with Java and Maven to Automate JavaScript Tasks

Comments

1

Use JHipster: https://jhipster.github.io

Once installed, run:

$ yo jhipster

Then run

$ yo jhipster:heroku

1 Comment

Thanks. But honestly this looks like way too much work for an exisiting project to get deployed. Or am I wrong?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.