Skip to content

PasBuild v1.5.0 Release - improved output and dependency tree

Choose a tag to compare

@graemeg graemeg released this 03 Mar 12:42
· 13 commits to master since this release

PasBuild v1.5.0 Release Notes

Date: 2026-03-03

Overview

PasBuild v1.5.0 builds on the multi-module foundation established in
v1.4.0, adding richer build output and a new goal for visualising
project dependencies. Reactor builds now produce Maven-style progress
and summary output, making it easy to track build status across many
modules at a glance. A new dependency-tree goal lets you inspect the
full dependency graph of any project without invoking the compiler.

New Features

Maven-Style Reactor Build Output

Multi-module reactor builds now produce structured, human-readable
output throughout the build process:

  • A Reactor Build Order section is printed at the start, listing
    all modules in the order they will be built.
  • Each module build is surrounded by a visual separator showing
    the module name and its position in the build sequence
    (e.g. [2/3]).
  • A BUILD SUCCESS or BUILD FAILURE block is printed after each
    module completes, together with elapsed time for that module.
  • A Reactor Summary section is printed at the end of the full
    build, with dot-aligned module names, per-module status and
    timing, overall BUILD SUCCESS or BUILD FAILURE, and total
    elapsed time.

Example (abbreviated):

[INFO] -------------------------------------------------------
[INFO] Reactor Build Order:
[INFO]   1. lib-core
[INFO]   2. lib-utils
[INFO]   3. myapp
[INFO] -------------------------------------------------------
[INFO] Building lib-core [1/3]
[INFO] -------------------------------------------------------
...
[INFO] BUILD SUCCESS
[INFO] Total time: 3.4 s
[INFO] -------------------------------------------------------
[INFO] Reactor Summary:
[INFO]   lib-core  ............  SUCCESS [1.1 s]
[INFO]   lib-utils ............  SUCCESS [0.9 s]
[INFO]   myapp     ............  SUCCESS [1.4 s]
[INFO] -------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] Total time: 3.4 s

dependency-tree Goal

A new 'pasbuild dependency-tree' goal prints the full dependency
graph of a project without invoking the compiler. This is useful
for auditing dependencies and understanding module relationships.

For multi-module (aggregator) projects, all modules are listed in
topological order. Each module shows its local module dependencies
and external repository dependencies. The -m flag restricts output
to a single named module and its dependencies.

For single-module projects, only the external are
shown.

Output uses tree branch characters (|- and _) with descriptive
labels for each node:

[module]       -- a local inter-module dependency
[external]     -- a dependency from the local repository
[library]      -- a library-type module
[application]  -- an application-type module
[aggregator]   -- a pom-type aggregator module

Example usage:

pasbuild dependency-tree
pasbuild dependency-tree -m myapp

Example output (multi-module project):

myapp [application]
|- lib-core [module] [library]
\_ lib-utils [module] [library]
    \_ some-lib:1.0.0 [external]