The Next Generation Platform is Coming - Get Ready Now!
by heroku
GitHub Readme.md
This is the official Heroku buildpack for Scala apps.
The buildpack will detect your app as Scala if it has a project/build.properties
file and either a .sbt
or .scala
based build config (for example, a build.sbt
file). It vendors a version of sbt into your slug (if you are not using sbt-native-packager, it also includes your popluated .ivy/cache
in the slug). The .ivy2
directory will be cached between builds to allow for faster build times.
It is strongly recommended that you use sbt-native-packager with this buildpack instead of sbt-start-script. The latter is deprecated, and will result in exessively large slug sizes.
For more information about using Scala and buildpacks on Heroku, see these articles:
There are a number of example applications that demonstrate various ways of configuring a project for use on Heroku. Here are a few:
This buildpack uses sbt-extras to run sbt.
In this way, the execution of sbt can be customized either by setting
the SBT_OPTS config variable, or by creating a .sbtopts
file in the
root directory of your project. When passing options to the underlying
sbt JVM, you must prefix them with -J
. Thus, setting stack size for
the compile process would look like this:
$ heroku config:set SBT_OPTS="-J-Xss4m"
Sometimes, it might be necessary to run additional sbt tasks before a build and deployment (for example, database migrations). Ideally, the tasks should be interdependent such that these tasks run automatically as pre-requisities to compile stage
, but sometimes this might not be the case. To add any additional tasks, set the environment variable SBT_PRE_TASKS
to a list of tasks that should be executed. If the following is set:
SBT_PRE_TASKS=flyway:migrate info
Then, the following command will be run for build:
sbt flyway:migrate info compile stage
In some cases, builds need to clean artifacts before compiling. If a clean build is necessary, configure builds to perform clean by setting SBT_CLEAN=true
:
$ heroku config:set SBT_CLEAN=true
Setting config vars and restarting example-app... done, v17
SBT_CLEAN: true
All subsequent deploys will use the clean task. To remove the clean task, unset SBT_CLEAN
:
$ heroku config:unset SBT_CLEAN
Unsetting SBT_CLEAN and restarting example-app... done, v18
To make changes to this buildpack, fork it on Github. Push up changes to your fork, then create a new Heroku app to test it, or configure an existing app to use your buildpack:
# Create a new Heroku app that uses your buildpack
heroku create --buildpack <your-github-url>
# Configure an existing Heroku app to use your buildpack
heroku buildpacks:set <your-github-url>
# You can also use a git branch!
heroku buildpacks:set <your-github-url>#your-branch
Licensed under the MIT License. See LICENSE file.
Copy the snippet above into CLI.
We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.