This project is a set of orthogonal, composable, configurable Boot tasks that together describe some common patterns for building web applications with Boot.
There are 11 tasks included in this library, however there are only four that you will use regularly from the command line. Broadly, the tasks can be broken down into three different categories:
- configuration
- utility
- user
There are three configuration tasks; one task for each configuration
type. They are named after the build type they are used with:
development
, testing
and release
.
You won't typically call these tasks directly since all they do is configure the boot task environment for the type of build you wish to run. They do not actually run any build code.
In order for this to be useful, other tasks must also be specified...
Those other tasks are typically going to be the four utility tasks
build
, package
, run
, and run-tests
. These tasks encode the
basic concepts of building and testing a web application.
First there's the build
task which is responsible for creating a
task pipeline for building the application. This includes everything
like compiling code, producing assets and generally creating a
consistent fileset for running the web application.
Next there's the package
task. This task is responsible for
performing any packaging-specific source transformations, and creating
whatever code artifact you specify.
The run
task is responsible for doing everything it takes to
properly spin up and properly tear-down your application. This often
includes starting a web-server, serving files from the fileset,
ensuring a database exists and has been fully migrated.
However, and this is IMPORTANT: the run
task should not block.
That is if you were to run boot build run
, it should set up and then
immediately tear down your application. To run it once manually you
would append the built-in wait
task like so: boot build run wait
Finally, there is run-tests
which does everything needed to run the
tests.
Finally, there are four user level tasks: dev
, test
, auto-test
,
and release
. These are all convenient compositions of config and
built-in boot tasks.
The dev
task uses the development
configuration, and then sets up
a filesystem watch
pipeline that runs build
and then run
every
time a file in the fileset is changed.
The test
task uses the testing
configuration and then runs the
tests once, auto-test
is the same except that it runs the tests
continuously with watch
.
Finally, the release
task uses the production
configuration and
runs the build
task to create the fileset and then the package
task to bundle it into whatever format you've chosen for distribution.
Copyright © 2018 Geoff Shannon
Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.