Design - boot-clj/boot GitHub Wiki

Tooling to build applications that run on the JVM must be able to:

  • Resolve, fetch, and deploy Maven artifacts.
  • Isolate build component classpaths from the project classpath.
  • Manage the flow of source files to compiled artifacts on disk.
  • Provide some notion of module, the building block of the build process.
  • Provide a mechanism by which one can define new modules.
  • Provide a way to arrange modules to form a build process.

Additionally, the following characteristics are desirable:

  • Ergonomic command line interface and online help documentation.
  • Minimize or eliminate redundant or arbitrary configuration for user.
  • Powerful process-building and extension capabilities.
  • A simple and easy to understand process model.
  • Minimize or eliminate coupling between modules, and between module configurations.