You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/11/22 14:45:00 UTC

[maven-mvnd] branch master updated (895381b -> a14a1eb)

This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git


    from 895381b  Switch to maven 4.0.0-alpha-2 (#718)
     new 2035a82  Upgrade maven-shade-plugin to 3.4.1
     new 4690bcb  Upgrade parent pom to 38
     new a14a1eb  Reformat

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 agent/pom.xml                                      |  110 +-
 .../main/java/org/mvndaemon/mvnd/agent/Agent.java  |   40 +-
 build-plugin/pom.xml                               |  164 +--
 .../org/mvndaemon/mvnd/plugin/doc/DocMojo.java     |   46 +-
 build/eclipse-formatter-config.xml                 |  281 ------
 client/pom.xml                                     |  278 +++--
 .../org/mvndaemon/mvnd/client/BuildProperties.java |   25 +-
 .../java/org/mvndaemon/mvnd/client/Client.java     |   26 +-
 .../java/org/mvndaemon/mvnd/client/Completion.java |   26 +-
 .../mvnd/client/DaemonClientConnection.java        |   39 +-
 .../org/mvndaemon/mvnd/client/DaemonConnector.java |  160 +--
 .../mvndaemon/mvnd/client/DaemonDiagnostics.java   |   67 +-
 .../mvndaemon/mvnd/client/DaemonParameters.java    |  125 ++-
 .../org/mvndaemon/mvnd/client/DefaultClient.java   |  117 ++-
 .../org/mvndaemon/mvnd/client/ExecutionResult.java |   26 +-
 .../mvnd/client/svm/ReflectionRegistration.java    |   25 +-
 .../client/svm/StaticMDCBinderSubstitution.java    |   26 +-
 .../mvnd/client/CompletionGeneratorTest.java       |   31 +-
 .../mvndaemon/mvnd/client/DaemonConnectorTest.java |   29 +-
 .../org/mvndaemon/mvnd/client/EnvironmentTest.java |   60 +-
 .../org/mvndaemon/mvnd/client/OsUtilsTest.java     |   25 +-
 common/pom.xml                                     |  340 +++----
 .../org/mvndaemon/mvnd/common/BufferCaster.java    |   26 +-
 .../org/mvndaemon/mvnd/common/BufferHelper.java    |   35 +-
 .../mvndaemon/mvnd/common/ByteChannelWrapper.java  |   25 +-
 .../mvnd/common/DaemonCompatibilitySpec.java       |   35 +-
 .../mvndaemon/mvnd/common/DaemonConnection.java    |   32 +-
 .../org/mvndaemon/mvnd/common/DaemonException.java |   26 +-
 .../mvnd/common/DaemonExpirationStatus.java        |   25 +-
 .../java/org/mvndaemon/mvnd/common/DaemonInfo.java |   75 +-
 .../org/mvndaemon/mvnd/common/DaemonRegistry.java  |   71 +-
 .../org/mvndaemon/mvnd/common/DaemonState.java     |   26 +-
 .../org/mvndaemon/mvnd/common/DaemonStopEvent.java |   33 +-
 .../org/mvndaemon/mvnd/common/Environment.java     |   73 +-
 .../mvndaemon/mvnd/common/InterpolationHelper.java |   53 +-
 .../java/org/mvndaemon/mvnd/common/IoUtils.java    |   31 +-
 .../org/mvndaemon/mvnd/common/JavaVersion.java     |   25 +-
 .../org/mvndaemon/mvnd/common/MavenDaemon.java     |   61 +-
 .../java/org/mvndaemon/mvnd/common/Message.java    |  443 ++++----
 .../java/org/mvndaemon/mvnd/common/OptionType.java |   25 +-
 .../main/java/org/mvndaemon/mvnd/common/Os.java    |   29 +-
 .../java/org/mvndaemon/mvnd/common/OsUtils.java    |   63 +-
 .../org/mvndaemon/mvnd/common/ProcessHelper.java   |   29 +-
 .../org/mvndaemon/mvnd/common/SocketFamily.java    |   88 +-
 .../org/mvndaemon/mvnd/common/SocketHelper.java    |   25 +-
 .../java/org/mvndaemon/mvnd/common/TimeUtils.java  |   46 +-
 .../mvnd/common/logging/ClientOutput.java          |   25 +-
 .../mvnd/common/logging/TerminalOutput.java        |  538 +++++-----
 .../mvndaemon/mvnd/common/DaemonRegistryTest.java  |   89 +-
 .../org/mvndaemon/mvnd/common/MessageTest.java     |   33 +-
 .../org/mvndaemon/mvnd/common/OsUtilsTest.java     |   26 +-
 .../mvndaemon/mvnd/common/SocketFamilyTest.java    |   36 +-
 .../org/mvndaemon/mvnd/common/TimeUtilsTest.java   |   33 +-
 daemon/pom.xml                                     |  194 ++--
 .../maven/classrealm/MvndClassRealmManager.java    |  106 +-
 .../java/org/apache/maven/cli/DaemonMavenCli.java  |  239 +++--
 .../org/apache/maven/cli/MvndHelpFormatter.java    |  170 ++--
 .../maven/project/CachingProjectBuilder.java       |  262 +++--
 .../apache/maven/project/SnapshotModelCache.java   |   28 +-
 .../mvndaemon/mvnd/builder/DependencyGraph.java    |  100 +-
 .../mvndaemon/mvnd/builder/ProjectComparator.java  |   55 +-
 .../mvnd/builder/ProjectExecutorService.java       |   67 +-
 .../mvndaemon/mvnd/builder/ReactorBuildQueue.java  |   29 +-
 .../mvndaemon/mvnd/builder/ReactorBuildStats.java  |   46 +-
 .../org/mvndaemon/mvnd/builder/SmartBuilder.java   |   52 +-
 .../mvndaemon/mvnd/builder/SmartBuilderImpl.java   |   54 +-
 .../main/java/org/mvndaemon/mvnd/cache/Cache.java  |   26 +-
 .../org/mvndaemon/mvnd/cache/CacheFactory.java     |   26 +-
 .../java/org/mvndaemon/mvnd/cache/CacheRecord.java |   26 +-
 .../mvnd/cache/impl/DefaultCacheFactory.java       |   26 +-
 .../mvnd/cache/impl/TimestampCacheFactory.java     |   72 +-
 .../mvnd/cache/impl/WatchServiceCacheFactory.java  |   42 +-
 .../InvalidatingExtensionRealmCache.java           |   36 +-
 .../InvalidatingPluginArtifactsCache.java          |   32 +-
 .../InvalidatingPluginDescriptorCache.java         |   33 +-
 .../invalidating/InvalidatingPluginRealmCache.java |   32 +-
 .../InvalidatingProjectArtifactsCache.java         |   66 +-
 .../InvalidatingRealmCacheEventSpy.java            |   55 +-
 .../java/org/mvndaemon/mvnd/cli/EnvHelper.java     |   37 +-
 .../mvndaemon/mvnd/daemon/ClientDispatcher.java    |  126 ++-
 .../java/org/mvndaemon/mvnd/daemon/Connection.java |   26 +-
 .../mvndaemon/mvnd/daemon/DaemonExpiration.java    |  113 ++-
 .../mvndaemon/mvnd/daemon/DaemonMemoryStatus.java  |   52 +-
 .../java/org/mvndaemon/mvnd/daemon/Server.java     |  200 ++--
 .../mvnd/interactivity/DaemonPrompter.java         |   32 +-
 .../logging/internal/MvndSlf4jConfiguration.java   |   46 +-
 .../mvnd/logging/internal/SimpleAppender.java      |   55 +-
 .../mvnd/logging/internal/Slf4jLogger.java         |    7 +-
 .../mvnd/logging/internal/Slf4jLoggerManager.java  |   16 +-
 .../mvnd/logging/smart/BuildEventListener.java     |   58 +-
 .../logging/smart/LoggingExecutionListener.java    |   47 +-
 .../mvnd/logging/smart/LoggingOutputStream.java    |   25 +-
 .../logging/smart/ProjectBuildLogAppender.java     |   41 +-
 .../mvnd/plugin/CachingPluginVersionResolver.java  |   42 +-
 .../mvnd/plugin/CliMavenPluginManager.java         |  134 ++-
 .../plugin/ValidatingConfigurationListener.java    |    7 +-
 .../syncontext/DaemonNamedLockFactorySelector.java |   36 +-
 .../mvndaemon/mvnd/timing/BuildTimeEventSpy.java   |  101 +-
 .../mvnd/transfer/DaemonMavenTransferListener.java |   25 +-
 .../mvnd/builder/AbstractSmartBuilderTest.java     |   26 +-
 .../org/mvndaemon/mvnd/builder/DagWidthTest.java   |   82 +-
 .../mvnd/builder/ProjectComparatorTest.java        |   30 +-
 .../mvnd/builder/ProjectExecutorServiceTest.java   |   36 +-
 .../mvnd/builder/ReactorBuildQueueTest.java        |   25 +-
 .../mvnd/builder/TestProjectDependencyGraph.java   |   25 +-
 .../mvnd/cache/impl/CacheFactoryTest.java          |   31 +-
 .../java/org/mvndaemon/mvnd/cli/EnvHelperTest.java |   35 +-
 .../mvnd/daemon/ClientDispatcherTest.java          |   26 +-
 .../java/org/mvndaemon/mvnd/daemon/ServerTest.java |   29 +-
 dist/pom.xml                                       |  108 +-
 helper/pom.xml                                     |   22 +-
 .../java/org/mvndaemon/mvnd/pump/AgentHelper.java  |   31 +-
 integration-tests/pom.xml                          |  322 +++---
 .../mvnd/assertj/MatchInOrderAmongOthers.java      |   30 +-
 .../mvndaemon/mvnd/assertj/TestClientOutput.java   |   35 +-
 .../mvnd/it/AttachedArtifactResolutionTest.java    |   26 +-
 .../org/mvndaemon/mvnd/it/BootstrapPluginTest.java |   32 +-
 .../org/mvndaemon/mvnd/it/CompletionNativeIT.java  |   25 +-
 .../java/org/mvndaemon/mvnd/it/CompletionTest.java |   28 +-
 .../mvndaemon/mvnd/it/ConcurrentDownloadsTest.java |   33 +-
 .../org/mvndaemon/mvnd/it/DaemonCrashTest.java     |   38 +-
 .../org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java  |   29 +-
 .../java/org/mvndaemon/mvnd/it/DeleteRepoTest.java |   29 +-
 .../test/java/org/mvndaemon/mvnd/it/DistroIT.java  |   44 +-
 .../test/java/org/mvndaemon/mvnd/it/DupGATest.java |   25 +-
 .../org/mvndaemon/mvnd/it/EnvironmentTest.java     |   46 +-
 .../java/org/mvndaemon/mvnd/it/ExecOutputTest.java |   33 +-
 .../org/mvndaemon/mvnd/it/ExtensionsNativeIT.java  |   33 +-
 .../java/org/mvndaemon/mvnd/it/ExtensionsTest.java |   29 +-
 .../java/org/mvndaemon/mvnd/it/ForkedTest.java     |   37 +-
 .../org/mvndaemon/mvnd/it/InteractiveTest.java     |   32 +-
 .../org/mvndaemon/mvnd/it/InvokerNativeIT.java     |   32 +-
 .../java/org/mvndaemon/mvnd/it/InvokerTest.java    |   29 +-
 .../org/mvndaemon/mvnd/it/JUnitPlatformTest.java   |   30 +-
 .../org/mvndaemon/mvnd/it/MavenConfNativeIT.java   |   45 +-
 .../java/org/mvndaemon/mvnd/it/MavenConfTest.java  |   29 +-
 .../org/mvndaemon/mvnd/it/MaxHeapNativeIT.java     |   65 +-
 .../java/org/mvndaemon/mvnd/it/MaxHeapTest.java    |   38 +-
 .../mvndaemon/mvnd/it/ModuleAndPluginNativeIT.java |   57 +-
 .../org/mvndaemon/mvnd/it/ModuleAndPluginTest.java |   29 +-
 .../org/mvndaemon/mvnd/it/MultiLookupTest.java     |   34 +-
 .../org/mvndaemon/mvnd/it/MultiModuleTest.java     |   70 +-
 .../java/org/mvndaemon/mvnd/it/MvndTestUtil.java   |   29 +-
 .../mvnd/it/NewManagedModuleNativeIT.java          |   28 +-
 .../mvndaemon/mvnd/it/NewManagedModuleTest.java    |   29 +-
 .../mvndaemon/mvnd/it/ParentWithPropertyTest.java  |   25 +-
 .../java/org/mvndaemon/mvnd/it/RawStreamsTest.java |   35 +-
 .../mvndaemon/mvnd/it/ResidentExtensionsTest.java  |   46 +-
 .../mvndaemon/mvnd/it/SingleModuleNativeIT.java    |   33 +-
 .../org/mvndaemon/mvnd/it/SingleModuleTest.java    |   39 +-
 .../mvndaemon/mvnd/it/SpecificFileNativeIT.java    |   62 +-
 .../java/org/mvndaemon/mvnd/it/StopStatusTest.java |   29 +-
 .../mvndaemon/mvnd/it/ThreadOptionNativeIT.java    |   25 +-
 .../org/mvndaemon/mvnd/it/ThreadOptionTest.java    |   25 +-
 .../org/mvndaemon/mvnd/it/TypeDescriptionTest.java |   25 +-
 .../mvndaemon/mvnd/it/UpgradesInBomNativeIT.java   |   40 +-
 .../org/mvndaemon/mvnd/it/UpgradesInBomTest.java   |   28 +-
 .../org/mvndaemon/mvnd/it/VersionNativeIT.java     |   29 +-
 .../java/org/mvndaemon/mvnd/it/VersionTest.java    |   26 +-
 .../org/mvndaemon/mvnd/junit/ClientFactory.java    |   25 +-
 .../org/mvndaemon/mvnd/junit/JvmTestClient.java    |   30 +-
 .../org/mvndaemon/mvnd/junit/MvndNativeTest.java   |   25 +-
 .../java/org/mvndaemon/mvnd/junit/MvndTest.java    |   25 +-
 .../mvndaemon/mvnd/junit/MvndTestExtension.java    |  131 ++-
 .../org/mvndaemon/mvnd/junit/NativeTestClient.java |   34 +-
 .../org/mvndaemon/mvnd/junit/TestParameters.java   |   45 +-
 .../org/mvndaemon/mvnd/junit/TestRegistry.java     |   36 +-
 .../java/org/mvndaemon/mvnd/junit/TestUtils.java   |   26 +-
 native/pom.xml                                     |  178 ++--
 .../java/org/mvndaemon/mvnd/nativ/CLibrary.java    |   26 +-
 .../org/mvndaemon/mvnd/nativ/MvndNativeLoader.java |   57 +-
 .../main/java/org/mvndaemon/mvnd/nativ/OSInfo.java |   35 +-
 .../org/mvndaemon/mvnd/nativ/CLibraryTest.java     |   31 +-
 .../mvndaemon/mvnd/nativ/MvndNativeLoaderTest.java |   25 +-
 pom.xml                                            | 1067 +++++++++-----------
 175 files changed, 6000 insertions(+), 5565 deletions(-)
 delete mode 100644 build/eclipse-formatter-config.xml


[maven-mvnd] 03/03: Reformat

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git

commit a14a1eb80f53d9e3b5cbf89ac9f21ab094591fd9
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Nov 22 14:05:27 2022 +0100

    Reformat
---
 agent/pom.xml                                      |  110 +--
 .../main/java/org/mvndaemon/mvnd/agent/Agent.java  |   40 +-
 build-plugin/pom.xml                               |  164 ++--
 .../org/mvndaemon/mvnd/plugin/doc/DocMojo.java     |   46 +-
 client/pom.xml                                     |  278 +++---
 .../org/mvndaemon/mvnd/client/BuildProperties.java |   25 +-
 .../java/org/mvndaemon/mvnd/client/Client.java     |   26 +-
 .../java/org/mvndaemon/mvnd/client/Completion.java |   26 +-
 .../mvnd/client/DaemonClientConnection.java        |   39 +-
 .../org/mvndaemon/mvnd/client/DaemonConnector.java |  160 ++--
 .../mvndaemon/mvnd/client/DaemonDiagnostics.java   |   67 +-
 .../mvndaemon/mvnd/client/DaemonParameters.java    |  125 ++-
 .../org/mvndaemon/mvnd/client/DefaultClient.java   |  117 ++-
 .../org/mvndaemon/mvnd/client/ExecutionResult.java |   26 +-
 .../mvnd/client/svm/ReflectionRegistration.java    |   25 +-
 .../client/svm/StaticMDCBinderSubstitution.java    |   26 +-
 .../mvnd/client/CompletionGeneratorTest.java       |   31 +-
 .../mvndaemon/mvnd/client/DaemonConnectorTest.java |   29 +-
 .../org/mvndaemon/mvnd/client/EnvironmentTest.java |   60 +-
 .../org/mvndaemon/mvnd/client/OsUtilsTest.java     |   25 +-
 common/pom.xml                                     |  340 +++----
 .../org/mvndaemon/mvnd/common/BufferCaster.java    |   26 +-
 .../org/mvndaemon/mvnd/common/BufferHelper.java    |   35 +-
 .../mvndaemon/mvnd/common/ByteChannelWrapper.java  |   25 +-
 .../mvnd/common/DaemonCompatibilitySpec.java       |   35 +-
 .../mvndaemon/mvnd/common/DaemonConnection.java    |   32 +-
 .../org/mvndaemon/mvnd/common/DaemonException.java |   26 +-
 .../mvnd/common/DaemonExpirationStatus.java        |   25 +-
 .../java/org/mvndaemon/mvnd/common/DaemonInfo.java |   75 +-
 .../org/mvndaemon/mvnd/common/DaemonRegistry.java  |   71 +-
 .../org/mvndaemon/mvnd/common/DaemonState.java     |   26 +-
 .../org/mvndaemon/mvnd/common/DaemonStopEvent.java |   33 +-
 .../org/mvndaemon/mvnd/common/Environment.java     |   73 +-
 .../mvndaemon/mvnd/common/InterpolationHelper.java |   53 +-
 .../java/org/mvndaemon/mvnd/common/IoUtils.java    |   31 +-
 .../org/mvndaemon/mvnd/common/JavaVersion.java     |   25 +-
 .../org/mvndaemon/mvnd/common/MavenDaemon.java     |   61 +-
 .../java/org/mvndaemon/mvnd/common/Message.java    |  443 +++++----
 .../java/org/mvndaemon/mvnd/common/OptionType.java |   25 +-
 .../main/java/org/mvndaemon/mvnd/common/Os.java    |   29 +-
 .../java/org/mvndaemon/mvnd/common/OsUtils.java    |   63 +-
 .../org/mvndaemon/mvnd/common/ProcessHelper.java   |   29 +-
 .../org/mvndaemon/mvnd/common/SocketFamily.java    |   88 +-
 .../org/mvndaemon/mvnd/common/SocketHelper.java    |   25 +-
 .../java/org/mvndaemon/mvnd/common/TimeUtils.java  |   46 +-
 .../mvnd/common/logging/ClientOutput.java          |   25 +-
 .../mvnd/common/logging/TerminalOutput.java        |  538 +++++------
 .../mvndaemon/mvnd/common/DaemonRegistryTest.java  |   89 +-
 .../org/mvndaemon/mvnd/common/MessageTest.java     |   33 +-
 .../org/mvndaemon/mvnd/common/OsUtilsTest.java     |   26 +-
 .../mvndaemon/mvnd/common/SocketFamilyTest.java    |   36 +-
 .../org/mvndaemon/mvnd/common/TimeUtilsTest.java   |   33 +-
 daemon/pom.xml                                     |  194 ++--
 .../maven/classrealm/MvndClassRealmManager.java    |  106 +-
 .../java/org/apache/maven/cli/DaemonMavenCli.java  |  239 ++---
 .../org/apache/maven/cli/MvndHelpFormatter.java    |  170 ++--
 .../maven/project/CachingProjectBuilder.java       |  262 +++--
 .../apache/maven/project/SnapshotModelCache.java   |   28 +-
 .../mvndaemon/mvnd/builder/DependencyGraph.java    |  100 +-
 .../mvndaemon/mvnd/builder/ProjectComparator.java  |   55 +-
 .../mvnd/builder/ProjectExecutorService.java       |   67 +-
 .../mvndaemon/mvnd/builder/ReactorBuildQueue.java  |   29 +-
 .../mvndaemon/mvnd/builder/ReactorBuildStats.java  |   46 +-
 .../org/mvndaemon/mvnd/builder/SmartBuilder.java   |   52 +-
 .../mvndaemon/mvnd/builder/SmartBuilderImpl.java   |   54 +-
 .../main/java/org/mvndaemon/mvnd/cache/Cache.java  |   26 +-
 .../org/mvndaemon/mvnd/cache/CacheFactory.java     |   26 +-
 .../java/org/mvndaemon/mvnd/cache/CacheRecord.java |   26 +-
 .../mvnd/cache/impl/DefaultCacheFactory.java       |   26 +-
 .../mvnd/cache/impl/TimestampCacheFactory.java     |   72 +-
 .../mvnd/cache/impl/WatchServiceCacheFactory.java  |   42 +-
 .../InvalidatingExtensionRealmCache.java           |   36 +-
 .../InvalidatingPluginArtifactsCache.java          |   32 +-
 .../InvalidatingPluginDescriptorCache.java         |   33 +-
 .../invalidating/InvalidatingPluginRealmCache.java |   32 +-
 .../InvalidatingProjectArtifactsCache.java         |   66 +-
 .../InvalidatingRealmCacheEventSpy.java            |   55 +-
 .../java/org/mvndaemon/mvnd/cli/EnvHelper.java     |   37 +-
 .../mvndaemon/mvnd/daemon/ClientDispatcher.java    |  126 ++-
 .../java/org/mvndaemon/mvnd/daemon/Connection.java |   26 +-
 .../mvndaemon/mvnd/daemon/DaemonExpiration.java    |  113 +--
 .../mvndaemon/mvnd/daemon/DaemonMemoryStatus.java  |   52 +-
 .../java/org/mvndaemon/mvnd/daemon/Server.java     |  200 ++--
 .../mvnd/interactivity/DaemonPrompter.java         |   32 +-
 .../logging/internal/MvndSlf4jConfiguration.java   |   46 +-
 .../mvnd/logging/internal/SimpleAppender.java      |   55 +-
 .../mvnd/logging/internal/Slf4jLogger.java         |    7 +-
 .../mvnd/logging/internal/Slf4jLoggerManager.java  |   16 +-
 .../mvnd/logging/smart/BuildEventListener.java     |   58 +-
 .../logging/smart/LoggingExecutionListener.java    |   47 +-
 .../mvnd/logging/smart/LoggingOutputStream.java    |   25 +-
 .../logging/smart/ProjectBuildLogAppender.java     |   41 +-
 .../mvnd/plugin/CachingPluginVersionResolver.java  |   42 +-
 .../mvnd/plugin/CliMavenPluginManager.java         |  134 +--
 .../plugin/ValidatingConfigurationListener.java    |    7 +-
 .../syncontext/DaemonNamedLockFactorySelector.java |   36 +-
 .../mvndaemon/mvnd/timing/BuildTimeEventSpy.java   |  101 +-
 .../mvnd/transfer/DaemonMavenTransferListener.java |   25 +-
 .../mvnd/builder/AbstractSmartBuilderTest.java     |   26 +-
 .../org/mvndaemon/mvnd/builder/DagWidthTest.java   |   82 +-
 .../mvnd/builder/ProjectComparatorTest.java        |   30 +-
 .../mvnd/builder/ProjectExecutorServiceTest.java   |   36 +-
 .../mvnd/builder/ReactorBuildQueueTest.java        |   25 +-
 .../mvnd/builder/TestProjectDependencyGraph.java   |   25 +-
 .../mvnd/cache/impl/CacheFactoryTest.java          |   31 +-
 .../java/org/mvndaemon/mvnd/cli/EnvHelperTest.java |   35 +-
 .../mvnd/daemon/ClientDispatcherTest.java          |   26 +-
 .../java/org/mvndaemon/mvnd/daemon/ServerTest.java |   29 +-
 dist/pom.xml                                       |  108 +--
 helper/pom.xml                                     |   22 +-
 .../java/org/mvndaemon/mvnd/pump/AgentHelper.java  |   31 +-
 integration-tests/pom.xml                          |  322 ++++---
 .../mvnd/assertj/MatchInOrderAmongOthers.java      |   30 +-
 .../mvndaemon/mvnd/assertj/TestClientOutput.java   |   35 +-
 .../mvnd/it/AttachedArtifactResolutionTest.java    |   26 +-
 .../org/mvndaemon/mvnd/it/BootstrapPluginTest.java |   32 +-
 .../org/mvndaemon/mvnd/it/CompletionNativeIT.java  |   25 +-
 .../java/org/mvndaemon/mvnd/it/CompletionTest.java |   28 +-
 .../mvndaemon/mvnd/it/ConcurrentDownloadsTest.java |   33 +-
 .../org/mvndaemon/mvnd/it/DaemonCrashTest.java     |   38 +-
 .../org/mvndaemon/mvnd/it/DeleteRepoNativeIT.java  |   29 +-
 .../java/org/mvndaemon/mvnd/it/DeleteRepoTest.java |   29 +-
 .../test/java/org/mvndaemon/mvnd/it/DistroIT.java  |   44 +-
 .../test/java/org/mvndaemon/mvnd/it/DupGATest.java |   25 +-
 .../org/mvndaemon/mvnd/it/EnvironmentTest.java     |   46 +-
 .../java/org/mvndaemon/mvnd/it/ExecOutputTest.java |   33 +-
 .../org/mvndaemon/mvnd/it/ExtensionsNativeIT.java  |   33 +-
 .../java/org/mvndaemon/mvnd/it/ExtensionsTest.java |   29 +-
 .../java/org/mvndaemon/mvnd/it/ForkedTest.java     |   37 +-
 .../org/mvndaemon/mvnd/it/InteractiveTest.java     |   32 +-
 .../org/mvndaemon/mvnd/it/InvokerNativeIT.java     |   32 +-
 .../java/org/mvndaemon/mvnd/it/InvokerTest.java    |   29 +-
 .../org/mvndaemon/mvnd/it/JUnitPlatformTest.java   |   30 +-
 .../org/mvndaemon/mvnd/it/MavenConfNativeIT.java   |   45 +-
 .../java/org/mvndaemon/mvnd/it/MavenConfTest.java  |   29 +-
 .../org/mvndaemon/mvnd/it/MaxHeapNativeIT.java     |   65 +-
 .../java/org/mvndaemon/mvnd/it/MaxHeapTest.java    |   38 +-
 .../mvndaemon/mvnd/it/ModuleAndPluginNativeIT.java |   57 +-
 .../org/mvndaemon/mvnd/it/ModuleAndPluginTest.java |   29 +-
 .../org/mvndaemon/mvnd/it/MultiLookupTest.java     |   34 +-
 .../org/mvndaemon/mvnd/it/MultiModuleTest.java     |   70 +-
 .../java/org/mvndaemon/mvnd/it/MvndTestUtil.java   |   29 +-
 .../mvnd/it/NewManagedModuleNativeIT.java          |   28 +-
 .../mvndaemon/mvnd/it/NewManagedModuleTest.java    |   29 +-
 .../mvndaemon/mvnd/it/ParentWithPropertyTest.java  |   25 +-
 .../java/org/mvndaemon/mvnd/it/RawStreamsTest.java |   35 +-
 .../mvndaemon/mvnd/it/ResidentExtensionsTest.java  |   46 +-
 .../mvndaemon/mvnd/it/SingleModuleNativeIT.java    |   33 +-
 .../org/mvndaemon/mvnd/it/SingleModuleTest.java    |   39 +-
 .../mvndaemon/mvnd/it/SpecificFileNativeIT.java    |   62 +-
 .../java/org/mvndaemon/mvnd/it/StopStatusTest.java |   29 +-
 .../mvndaemon/mvnd/it/ThreadOptionNativeIT.java    |   25 +-
 .../org/mvndaemon/mvnd/it/ThreadOptionTest.java    |   25 +-
 .../org/mvndaemon/mvnd/it/TypeDescriptionTest.java |   25 +-
 .../mvndaemon/mvnd/it/UpgradesInBomNativeIT.java   |   40 +-
 .../org/mvndaemon/mvnd/it/UpgradesInBomTest.java   |   28 +-
 .../org/mvndaemon/mvnd/it/VersionNativeIT.java     |   29 +-
 .../java/org/mvndaemon/mvnd/it/VersionTest.java    |   26 +-
 .../org/mvndaemon/mvnd/junit/ClientFactory.java    |   25 +-
 .../org/mvndaemon/mvnd/junit/JvmTestClient.java    |   30 +-
 .../org/mvndaemon/mvnd/junit/MvndNativeTest.java   |   25 +-
 .../java/org/mvndaemon/mvnd/junit/MvndTest.java    |   25 +-
 .../mvndaemon/mvnd/junit/MvndTestExtension.java    |  131 +--
 .../org/mvndaemon/mvnd/junit/NativeTestClient.java |   34 +-
 .../org/mvndaemon/mvnd/junit/TestParameters.java   |   45 +-
 .../org/mvndaemon/mvnd/junit/TestRegistry.java     |   36 +-
 .../java/org/mvndaemon/mvnd/junit/TestUtils.java   |   26 +-
 native/pom.xml                                     |  178 ++--
 .../java/org/mvndaemon/mvnd/nativ/CLibrary.java    |   26 +-
 .../org/mvndaemon/mvnd/nativ/MvndNativeLoader.java |   57 +-
 .../main/java/org/mvndaemon/mvnd/nativ/OSInfo.java |   35 +-
 .../org/mvndaemon/mvnd/nativ/CLibraryTest.java     |   31 +-
 .../mvndaemon/mvnd/nativ/MvndNativeLoaderTest.java |   25 +-
 pom.xml                                            | 1009 ++++++++++----------
 174 files changed, 6000 insertions(+), 5226 deletions(-)

diff --git a/agent/pom.xml b/agent/pom.xml
index e74222c..33b2828 100644
--- a/agent/pom.xml
+++ b/agent/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright 2021 the original author or authors.
@@ -15,67 +16,66 @@
     limitations under the License.
 
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.maven.daemon</groupId>
-        <artifactId>mvnd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.daemon</groupId>
+    <artifactId>mvnd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
 
-    <artifactId>mvnd-agent</artifactId>
+  <artifactId>mvnd-agent</artifactId>
 
-    <packaging>jar</packaging>
-    <name>Maven Daemon - Agent</name>
+  <packaging>jar</packaging>
+  <name>Maven Daemon - Agent</name>
 
-    <dependencies>
+  <dependencies>
 
-        <dependency>
-            <groupId>org.javassist</groupId>
-            <artifactId>javassist</artifactId>
-        </dependency>
+    <dependency>
+      <groupId>org.javassist</groupId>
+      <artifactId>javassist</artifactId>
+    </dependency>
 
-    </dependencies>
+  </dependencies>
 
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Premain-Class>org.mvndaemon.mvnd.agent.Agent</Premain-Class>
-                            <Boot-Class-Path>mvnd-helper-agent-${project.version}.jar</Boot-Class-Path>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-shade-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <phase>package</phase>
-                        <goals>
-                            <goal>shade</goal>
-                        </goals>
-                        <configuration>
-                            <filters>
-                                <filter>
-                                    <artifact>org.javassist:javassist</artifact>
-                                    <excludes>
-                                        <exclude>META-INF/MANIFEST.MF</exclude>
-                                    </excludes>
-                                </filter>
-                            </filters>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <configuration>
+          <archive>
+            <manifestEntries>
+              <Premain-Class>org.mvndaemon.mvnd.agent.Agent</Premain-Class>
+              <Boot-Class-Path>mvnd-helper-agent-${project.version}.jar</Boot-Class-Path>
+            </manifestEntries>
+          </archive>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-shade-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <phase>package</phase>
+            <configuration>
+              <filters>
+                <filter>
+                  <artifact>org.javassist:javassist</artifact>
+                  <excludes>
+                    <exclude>META-INF/MANIFEST.MF</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
 </project>
diff --git a/agent/src/main/java/org/mvndaemon/mvnd/agent/Agent.java b/agent/src/main/java/org/mvndaemon/mvnd/agent/Agent.java
index 3c33984..2109f5b 100644
--- a/agent/src/main/java/org/mvndaemon/mvnd/agent/Agent.java
+++ b/agent/src/main/java/org/mvndaemon/mvnd/agent/Agent.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.agent;
 
@@ -37,15 +40,21 @@ public class Agent {
     public static void premain(String args, Instrumentation instrumentation) throws Exception {
         instrumentation.addTransformer(new ClassFileTransformer() {
             @Override
-            public byte[] transform(ClassLoader loader, String className, Class<?> classBeingRedefined,
-                    ProtectionDomain protectionDomain, byte[] classfileBuffer) throws IllegalClassFormatException {
+            public byte[] transform(
+                    ClassLoader loader,
+                    String className,
+                    Class<?> classBeingRedefined,
+                    ProtectionDomain protectionDomain,
+                    byte[] classfileBuffer)
+                    throws IllegalClassFormatException {
                 if ("java/lang/ProcessBuilder".equals(className)) {
                     try {
                         ClassPool pool = ClassPool.getDefault();
                         CtClass clazz = pool.get("java.lang.ProcessBuilder");
                         pool.importPackage("org.mvndaemon.mvnd.pump");
-                        clazz.getDeclaredMethod("start",
-                                new CtClass[] { clazz.getClassPool().get("java.lang.ProcessBuilder$Redirect[]") })
+                        clazz.getDeclaredMethod(
+                                        "start",
+                                        new CtClass[] {clazz.getClassPool().get("java.lang.ProcessBuilder$Redirect[]")})
                                 .insertBefore(START_WITH_PIPES);
                         byte[] data = clazz.toBytecode();
                         clazz.detach();
@@ -60,5 +69,4 @@ public class Agent {
             }
         });
     }
-
 }
diff --git a/build-plugin/pom.xml b/build-plugin/pom.xml
index efb5a25..afdb47e 100644
--- a/build-plugin/pom.xml
+++ b/build-plugin/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright 2019 the original author or authors.
@@ -15,89 +16,88 @@
     limitations under the License.
 
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.maven.daemon</groupId>
-        <artifactId>mvnd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
-
-    <artifactId>mvnd-build-maven-plugin</artifactId>
-
-    <packaging>maven-plugin</packaging>
-    <name>Maven Daemon - Documentation Maven Plugin</name>
-
-    <properties>
-        <maven.compiler.target>11</maven.compiler.target>
-        <maven.compiler.source>11</maven.compiler.source>
-
-        <roaster.version>2.23.2.Final</roaster.version>
-        <maven.plugin-tools.version>3.6.0</maven.plugin-tools.version>
-        <maven-plugin-plugin.version>${maven.plugin-tools.version}</maven-plugin-plugin.version>
-    </properties>
-
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>org.apache.maven</groupId>
-                <artifactId>maven-plugin-api</artifactId>
-                <version>${maven.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.apache.maven.plugin-tools</groupId>
-                <artifactId>maven-plugin-annotations</artifactId>
-                <version>${maven.plugin-tools.version}</version>
-            </dependency>
-
-        </dependencies>
-    </dependencyManagement>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.daemon</groupId>
+    <artifactId>mvnd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>mvnd-build-maven-plugin</artifactId>
+
+  <packaging>maven-plugin</packaging>
+  <name>Maven Daemon - Documentation Maven Plugin</name>
+
+  <properties>
+    <maven.compiler.target>11</maven.compiler.target>
+    <maven.compiler.source>11</maven.compiler.source>
+
+    <roaster.version>2.23.2.Final</roaster.version>
+    <maven.plugin-tools.version>3.6.0</maven.plugin-tools.version>
+    <maven-plugin-plugin.version>${maven.plugin-tools.version}</maven-plugin-plugin.version>
+  </properties>
+
+  <dependencyManagement>
     <dependencies>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven.plugin-tools</groupId>
-            <artifactId>maven-plugin-annotations</artifactId>
-            <scope>provided</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.jboss.forge.roaster</groupId>
-            <artifactId>roaster-jdt</artifactId>
-            <version>${roaster.version}</version>
-        </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-plugin-api</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.maven.plugin-tools</groupId>
+        <artifactId>maven-plugin-annotations</artifactId>
+        <version>${maven.plugin-tools.version}</version>
+      </dependency>
 
     </dependencies>
-
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-plugin-plugin</artifactId>
-                    <version>${maven-plugin-plugin.version}</version>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-plugin-plugin</artifactId>
-                <configuration>
-                    <goalPrefix>mvnd-build</goalPrefix>
-                    <mojoDependencies>
-                        <dep>org.apache.maven:maven-plugin-api</dep>
-                    </mojoDependencies>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>
\ No newline at end of file
+  </dependencyManagement>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-plugin-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.plugin-tools</groupId>
+      <artifactId>maven-plugin-annotations</artifactId>
+      <scope>provided</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.jboss.forge.roaster</groupId>
+      <artifactId>roaster-jdt</artifactId>
+      <version>${roaster.version}</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-plugin-plugin</artifactId>
+          <version>${maven-plugin-plugin.version}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-plugin-plugin</artifactId>
+        <configuration>
+          <goalPrefix>mvnd-build</goalPrefix>
+          <mojoDependencies>
+            <dep>org.apache.maven:maven-plugin-api</dep>
+          </mojoDependencies>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+</project>
diff --git a/build-plugin/src/main/java/org/mvndaemon/mvnd/plugin/doc/DocMojo.java b/build-plugin/src/main/java/org/mvndaemon/mvnd/plugin/doc/DocMojo.java
index 46285f3..5a660b8 100644
--- a/build-plugin/src/main/java/org/mvndaemon/mvnd/plugin/doc/DocMojo.java
+++ b/build-plugin/src/main/java/org/mvndaemon/mvnd/plugin/doc/DocMojo.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.plugin.doc;
 
@@ -46,7 +49,12 @@ import org.jboss.forge.roaster.model.source.JavaEnumSource;
 /**
  * Extracts JavaDoc blocks from enum entries and stores them into a properties file.
  */
-@Mojo(name = "doc", defaultPhase = LifecyclePhase.NONE, threadSafe = true, requiresProject = true, requiresDependencyResolution = ResolutionScope.NONE)
+@Mojo(
+        name = "doc",
+        defaultPhase = LifecyclePhase.NONE,
+        threadSafe = true,
+        requiresProject = true,
+        requiresDependencyResolution = ResolutionScope.NONE)
 public class DocMojo extends AbstractMojo {
 
     /**
@@ -80,8 +88,7 @@ public class DocMojo extends AbstractMojo {
 
     static void extractEnumJavaDoc(Path basePath, String enumClassName) throws MojoFailureException {
         final String classRelPath = enumClassName.replace('.', '/');
-        final Path enumClassLocation = basePath.resolve("src/main/java")
-                .resolve(classRelPath + ".java");
+        final Path enumClassLocation = basePath.resolve("src/main/java").resolve(classRelPath + ".java");
         final Path propsPath = basePath.resolve("target/classes/" + classRelPath + ".javadoc.properties");
         try {
             Files.createDirectories(propsPath.getParent());
@@ -99,8 +106,7 @@ public class DocMojo extends AbstractMojo {
             final Properties optionsProperties = new SortedProperties();
             for (EnumConstantSource enumConst : source.getEnumConstants()) {
                 final JavaDocSource<EnumConstantSource> javaDoc = enumConst.getJavaDoc();
-                final String javadocText = javaDoc.getText()
-                        .replaceAll("&#47;", "/");
+                final String javadocText = javaDoc.getText().replaceAll("&#47;", "/");
                 optionsProperties.setProperty(enumConst.getName(), javadocText);
             }
             optionsProperties.store(Files.newOutputStream(propsPath), null);
@@ -137,14 +143,12 @@ public class DocMojo extends AbstractMojo {
         }
 
         @Override
-        public void store(Writer writer, String comments)
-                throws IOException {
+        public void store(Writer writer, String comments) throws IOException {
             super.store(new SkipFirstLineBufferedWriter(writer), null);
         }
 
         @Override
-        public void store(OutputStream out, String comments)
-                throws IOException {
+        public void store(OutputStream out, String comments) throws IOException {
             this.store(new OutputStreamWriter(out, "8859_1"), comments);
         }
 
@@ -177,8 +181,6 @@ public class DocMojo extends AbstractMojo {
                     super.write(cbuf, off, len);
                 }
             }
-
         }
-
     }
 }
diff --git a/client/pom.xml b/client/pom.xml
index 0956495..81f90dd 100644
--- a/client/pom.xml
+++ b/client/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright 2019 the original author or authors.
@@ -15,159 +16,156 @@
     limitations under the License.
 
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.maven.daemon</groupId>
-        <artifactId>mvnd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.daemon</groupId>
+    <artifactId>mvnd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
 
-    <artifactId>mvnd-client</artifactId>
+  <artifactId>mvnd-client</artifactId>
 
-    <packaging>jar</packaging>
-    <name>Maven Daemon - Client</name>
+  <packaging>jar</packaging>
+  <name>Maven Daemon - Client</name>
 
-    <properties>
-        <maven.compiler.target>11</maven.compiler.target>
-        <maven.compiler.source>11</maven.compiler.source>
-    </properties>
+  <properties>
+    <maven.compiler.target>11</maven.compiler.target>
+    <maven.compiler.source>11</maven.compiler.source>
+  </properties>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.daemon</groupId>
-            <artifactId>mvnd-common</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-embedder</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.graalvm.nativeimage</groupId>
-            <artifactId>svm</artifactId>
-            <scope>provided</scope>
-        </dependency>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.daemon</groupId>
+      <artifactId>mvnd-common</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-embedder</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.graalvm.nativeimage</groupId>
+      <artifactId>svm</artifactId>
+      <scope>provided</scope>
+    </dependency>
 
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.assertj</groupId>
+      <artifactId>assertj-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
-    <build>
-        <resources>
-            <resource>
-                <directory>${basedir}/src/main/resources</directory>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-enforcer-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>enforce-bytecode-version</id>
-                        <goals>
-                            <goal>enforce</goal>
-                        </goals>
-                        <configuration>
-                            <rules>
-                                <enforceBytecodeVersion>
-                                    <excludes>
-                                        <exclude>org.graalvm.nativeimage:svm</exclude>
-                                    </excludes>
-                                </enforceBytecodeVersion>
-                            </rules>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>buildnumber-maven-plugin</artifactId>
-                <configuration>
-                    <locale>en_US</locale>
-                </configuration>
-                <executions>
-                    <execution>
-                        <phase>validate</phase>
-                        <goals>
-                            <goal>create</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <compilerArgs>
-                        <arg>--add-exports=java.base/sun.nio.ch=ALL-UNNAMED</arg>
-                        <arg>--add-exports=java.base/jdk.internal.module=ALL-UNNAMED</arg>
-                    </compilerArgs>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <systemPropertyVariables>
-                        <project.basedir>${project.basedir}</project.basedir>
-                    </systemPropertyVariables>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+  <build>
+    <resources>
+      <resource>
+        <filtering>true</filtering>
+        <directory>${basedir}/src/main/resources</directory>
+      </resource>
+    </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>enforce-bytecode-version</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <enforceBytecodeVersion>
+                  <excludes>
+                    <exclude>org.graalvm.nativeimage:svm</exclude>
+                  </excludes>
+                </enforceBytecodeVersion>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>buildnumber-maven-plugin</artifactId>
+        <configuration>
+          <locale>en_US</locale>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>create</goal>
+            </goals>
+            <phase>validate</phase>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <configuration>
+          <compilerArgs>
+            <arg>--add-exports=java.base/sun.nio.ch=ALL-UNNAMED</arg>
+            <arg>--add-exports=java.base/jdk.internal.module=ALL-UNNAMED</arg>
+          </compilerArgs>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <systemPropertyVariables>
+            <project.basedir>${project.basedir}</project.basedir>
+          </systemPropertyVariables>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 
-    <profiles>
-        <profile>
-            <id>native</id>
+  <profiles>
+    <profile>
+      <id>native</id>
 
-            <build>
-                <plugins>
-                    <plugin>
-                        <groupId>org.graalvm.buildtools</groupId>
-                        <artifactId>native-maven-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <goals>
-                                    <goal>build</goal>
-                                </goals>
-                                <phase>package</phase>
-                            </execution>
-                        </executions>
-                        <configuration>
-                            <skip>false</skip>
-                            <mainClass>org.mvndaemon.mvnd.client.DefaultClient</mainClass>
-                            <imageName>mvnd</imageName>
-                            <buildArgs>
-                                --no-server
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.graalvm.buildtools</groupId>
+            <artifactId>native-maven-plugin</artifactId>
+            <configuration>
+              <skip>false</skip>
+              <mainClass>org.mvndaemon.mvnd.client.DefaultClient</mainClass>
+              <imageName>mvnd</imageName>
+              <buildArgs>--no-server
                                 --no-fallback
                                 --allow-incomplete-classpath
                                 -H:IncludeResources=org/mvndaemon/mvnd/.*
                                 -H:IncludeResources=mvnd-bash-completion.bash
                                 -H:-ParseRuntimeOptions
                                 -H:+AddAllCharsets
-                                -ea
-                            </buildArgs>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+                                -ea</buildArgs>
+            </configuration>
+            <executions>
+              <execution>
+                <goals>
+                  <goal>build</goal>
+                </goals>
+                <phase>package</phase>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/BuildProperties.java b/client/src/main/java/org/mvndaemon/mvnd/client/BuildProperties.java
index 8282b98..5c3aaa4 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/BuildProperties.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/BuildProperties.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2018 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/Client.java b/client/src/main/java/org/mvndaemon/mvnd/client/Client.java
index 34b79b0..8f82b4e 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/Client.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/Client.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -26,5 +29,4 @@ public interface Client {
     default ExecutionResult execute(ClientOutput output, String... args) throws InterruptedException {
         return execute(output, Arrays.asList(args));
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/Completion.java b/client/src/main/java/org/mvndaemon/mvnd/client/Completion.java
index 765e5e4..f971f82 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/Completion.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/Completion.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -37,5 +40,4 @@ public class Completion {
             throw new UncheckedIOException("Could not read " + bashCompletionPath, e);
         }
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonClientConnection.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonClientConnection.java
index 210fbbd..24e5875 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonClientConnection.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonClientConnection.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -41,7 +44,7 @@ import org.slf4j.LoggerFactory;
  */
 public class DaemonClientConnection implements Closeable {
 
-    private final static Logger LOG = LoggerFactory.getLogger(DaemonClientConnection.class);
+    private static final Logger LOG = LoggerFactory.getLogger(DaemonClientConnection.class);
 
     private final DaemonConnection connection;
     private final DaemonInfo daemon;
@@ -56,8 +59,12 @@ public class DaemonClientConnection implements Closeable {
     private final long maxKeepAliveMs;
     private final DaemonParameters parameters;
 
-    public DaemonClientConnection(DaemonConnection connection, DaemonInfo daemon,
-            StaleAddressDetector staleAddressDetector, boolean newDaemon, DaemonParameters parameters) {
+    public DaemonClientConnection(
+            DaemonConnection connection,
+            DaemonInfo daemon,
+            StaleAddressDetector staleAddressDetector,
+            boolean newDaemon,
+            DaemonParameters parameters) {
         this.connection = connection;
         this.daemon = daemon;
         this.staleAddressDetector = staleAddressDetector;
@@ -126,7 +133,8 @@ public class DaemonClientConnection implements Closeable {
                 if (!hasReceived && newDaemon) {
                     throw new ConnectException("Could not receive a message from the daemon.\n" + diag.describe(), e);
                 } else if (staleAddressDetector.maybeStaleAddress(e)) {
-                    throw new StaleAddressException("Could not receive a message from the daemon.\n" + diag.describe(), e);
+                    throw new StaleAddressException(
+                            "Could not receive a message from the daemon.\n" + diag.describe(), e);
                 }
             } finally {
                 hasReceived = true;
@@ -171,5 +179,4 @@ public class DaemonClientConnection implements Closeable {
          */
         boolean maybeStaleAddress(Exception failure);
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
index 83ef674..70d3d93 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonConnector.java
@@ -1,20 +1,26 @@
 /*
- * Copyright 2011-2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
+import static java.lang.Thread.sleep;
+import static org.mvndaemon.mvnd.common.DaemonState.Canceled;
+
 import java.io.File;
 import java.io.IOException;
 import java.net.SocketAddress;
@@ -53,9 +59,6 @@ import org.mvndaemon.mvnd.common.logging.ClientOutput;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static java.lang.Thread.sleep;
-import static org.mvndaemon.mvnd.common.DaemonState.Canceled;
-
 /**
  * File origin:
  * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/client/DefaultDaemonConnector.java
@@ -94,11 +97,11 @@ public class DaemonConnector {
             return connectNoDaemon();
         }
 
-        final DaemonCompatibilitySpec constraint = new DaemonCompatibilitySpec(
-                parameters.javaHome(), parameters.getDaemonOpts());
+        final DaemonCompatibilitySpec constraint =
+                new DaemonCompatibilitySpec(parameters.javaHome(), parameters.getDaemonOpts());
         output.accept(Message.buildStatus("Looking up daemon..."));
-        Map<Boolean, List<DaemonInfo>> idleBusy = registry.getAll().stream()
-                .collect(Collectors.groupingBy(di -> di.getState() == DaemonState.Idle));
+        Map<Boolean, List<DaemonInfo>> idleBusy =
+                registry.getAll().stream().collect(Collectors.groupingBy(di -> di.getState() == DaemonState.Idle));
         final Collection<DaemonInfo> idleDaemons = idleBusy.getOrDefault(true, Collections.emptyList());
         final Collection<DaemonInfo> busyDaemons = idleBusy.getOrDefault(false, Collections.emptyList());
 
@@ -128,20 +131,27 @@ public class DaemonConnector {
         }
         String daemon = ProcessHandle.current().pid() + "-" + System.currentTimeMillis();
         Properties properties = new Properties();
-        properties.put(Environment.JAVA_HOME.getProperty(), parameters.javaHome().toString());
+        properties.put(
+                Environment.JAVA_HOME.getProperty(), parameters.javaHome().toString());
         properties.put(Environment.USER_DIR.getProperty(), parameters.userDir().toString());
-        properties.put(Environment.USER_HOME.getProperty(), parameters.userHome().toString());
-        properties.put(Environment.MVND_HOME.getProperty(), parameters.mvndHome().toString());
+        properties.put(
+                Environment.USER_HOME.getProperty(), parameters.userHome().toString());
+        properties.put(
+                Environment.MVND_HOME.getProperty(), parameters.mvndHome().toString());
         properties.put(Environment.MVND_ID.getProperty(), daemon);
-        properties.put(Environment.MVND_DAEMON_STORAGE.getProperty(), parameters.daemonStorage().toString());
-        properties.put(Environment.MVND_REGISTRY.getProperty(), parameters.registry().toString());
+        properties.put(
+                Environment.MVND_DAEMON_STORAGE.getProperty(),
+                parameters.daemonStorage().toString());
+        properties.put(
+                Environment.MVND_REGISTRY.getProperty(), parameters.registry().toString());
         properties.putAll(parameters.getDaemonOptsMap());
         Environment.setProperties(properties);
         AtomicReference<Throwable> throwable = new AtomicReference<>();
         Thread serverThread = new Thread(() -> {
             try {
                 Class<?> clazz = getClass().getClassLoader().loadClass("org.mvndaemon.mvnd.daemon.Server");
-                try (AutoCloseable server = (AutoCloseable) clazz.getConstructor().newInstance()) {
+                try (AutoCloseable server =
+                        (AutoCloseable) clazz.getConstructor().newInstance()) {
                     ((Runnable) server).run();
                 }
             } catch (Throwable t) {
@@ -164,34 +174,37 @@ public class DaemonConnector {
         throw new RuntimeException("Unable to connect to internal daemon", throwable.get());
     }
 
-    private String handleStopEvents(String daemonId, Collection<DaemonInfo> idleDaemons, Collection<DaemonInfo> busyDaemons) {
+    private String handleStopEvents(
+            String daemonId, Collection<DaemonInfo> idleDaemons, Collection<DaemonInfo> busyDaemons) {
         final List<DaemonStopEvent> stopEvents = registry.getStopEvents();
 
         // Clean up old stop events
         long time = System.currentTimeMillis() - TimeUnit.HOURS.toMillis(1);
 
-        List<DaemonStopEvent> oldStopEvents = stopEvents.stream()
-                .filter(e -> e.getTimestamp() < time)
-                .collect(Collectors.toList());
+        List<DaemonStopEvent> oldStopEvents =
+                stopEvents.stream().filter(e -> e.getTimestamp() < time).collect(Collectors.toList());
         registry.removeStopEvents(oldStopEvents);
 
         final List<DaemonStopEvent> recentStopEvents = stopEvents.stream()
                 .filter(e -> e.getTimestamp() >= time)
-                .collect(Collectors.groupingBy(DaemonStopEvent::getDaemonId,
-                        Collectors.minBy(this::compare)))
+                .collect(Collectors.groupingBy(DaemonStopEvent::getDaemonId, Collectors.minBy(this::compare)))
                 .values()
                 .stream()
                 .map(Optional::get)
                 .collect(Collectors.toList());
         for (DaemonStopEvent stopEvent : recentStopEvents) {
-            LOGGER.debug("Previous Daemon ({}) stopped at {} {}",
-                    stopEvent.getDaemonId(), stopEvent.getTimestamp(), stopEvent.getReason());
+            LOGGER.debug(
+                    "Previous Daemon ({}) stopped at {} {}",
+                    stopEvent.getDaemonId(),
+                    stopEvent.getTimestamp(),
+                    stopEvent.getReason());
         }
 
         return generate(daemonId, busyDaemons.size(), idleDaemons.size(), recentStopEvents.size());
     }
 
-    public static String generate(final String daemonId, final int numBusy, final int numIncompatible, final int numStopped) {
+    public static String generate(
+            final String daemonId, final int numBusy, final int numIncompatible, final int numStopped) {
         final int totalUnavailableDaemons = numBusy + numIncompatible + numStopped;
         if (totalUnavailableDaemons > 0) {
             final List<String> reasons = new ArrayList<>();
@@ -223,21 +236,23 @@ public class DaemonConnector {
         return 0;
     }
 
-    private DaemonClientConnection connectToIdleDaemon(Collection<DaemonInfo> idleDaemons, DaemonCompatibilitySpec constraint) {
+    private DaemonClientConnection connectToIdleDaemon(
+            Collection<DaemonInfo> idleDaemons, DaemonCompatibilitySpec constraint) {
         final List<DaemonInfo> compatibleIdleDaemons = getCompatibleDaemons(idleDaemons, constraint);
         LOGGER.debug("Found {} idle daemons, {} compatibles", idleDaemons.size(), compatibleIdleDaemons.size());
         return findConnection(compatibleIdleDaemons);
     }
 
-    private DaemonClientConnection connectToCanceledDaemon(Collection<DaemonInfo> busyDaemons,
-            DaemonCompatibilitySpec constraint) {
+    private DaemonClientConnection connectToCanceledDaemon(
+            Collection<DaemonInfo> busyDaemons, DaemonCompatibilitySpec constraint) {
         DaemonClientConnection connection = null;
-        List<DaemonInfo> canceledBusy = busyDaemons.stream()
-                .filter(di -> di.getState() == Canceled)
-                .collect(Collectors.toList());
-        final List<DaemonInfo> compatibleCanceledDaemons = getCompatibleDaemons(
-                canceledBusy, constraint);
-        LOGGER.debug("Found {} busy daemons, {} cancelled, {} compatibles", busyDaemons.size(), canceledBusy.size(),
+        List<DaemonInfo> canceledBusy =
+                busyDaemons.stream().filter(di -> di.getState() == Canceled).collect(Collectors.toList());
+        final List<DaemonInfo> compatibleCanceledDaemons = getCompatibleDaemons(canceledBusy, constraint);
+        LOGGER.debug(
+                "Found {} busy daemons, {} cancelled, {} compatibles",
+                busyDaemons.size(),
+                canceledBusy.size(),
                 compatibleCanceledDaemons.size());
         if (!compatibleCanceledDaemons.isEmpty()) {
             LOGGER.debug("Waiting for daemons with canceled builds to become available");
@@ -261,8 +276,10 @@ public class DaemonConnector {
             if (result.isCompatible()) {
                 compatibleDaemons.add(daemon);
             } else {
-                LOGGER.debug("{} daemon {} does not match the desired criteria: "
-                        + result.getWhy(), daemon.getState(), daemon.getId());
+                LOGGER.debug(
+                        "{} daemon {} does not match the desired criteria: " + result.getWhy(),
+                        daemon.getState(),
+                        daemon.getId());
             }
         }
         return compatibleDaemons;
@@ -295,7 +312,8 @@ public class DaemonConnector {
             }
         } while (process.isAlive() && System.currentTimeMillis() - start < DEFAULT_CONNECT_TIMEOUT);
         DaemonDiagnostics diag = new DaemonDiagnostics(daemonId, parameters);
-        throw new DaemonException.ConnectException("Timeout waiting to connect to the Maven daemon.\n" + diag.describe());
+        throw new DaemonException.ConnectException(
+                "Timeout waiting to connect to the Maven daemon.\n" + diag.describe());
     }
 
     static String newId() {
@@ -364,24 +382,33 @@ public class DaemonConnector {
             args.add("-Dmaven.home=" + mvndHome.resolve("mvn"));
             args.add("-Dmaven.conf=" + mvndHome.resolve("mvn/conf"));
 
-            Environment.MVND_JAVA_HOME.addCommandLineOption(args, parameters.javaHome().toString());
-            Environment.LOGBACK_CONFIGURATION_FILE
-                    .addCommandLineOption(args, parameters.logbackConfigurationPath().toString());
+            Environment.MVND_JAVA_HOME.addCommandLineOption(
+                    args, parameters.javaHome().toString());
+            Environment.LOGBACK_CONFIGURATION_FILE.addCommandLineOption(
+                    args, parameters.logbackConfigurationPath().toString());
             Environment.MVND_ID.addCommandLineOption(args, daemonId);
-            Environment.MVND_DAEMON_STORAGE.addCommandLineOption(args, parameters.daemonStorage().toString());
-            Environment.MVND_REGISTRY.addCommandLineOption(args, parameters.registry().toString());
-            Environment.MVND_SOCKET_FAMILY.addCommandLineOption(args,
-                    parameters.socketFamily().orElseGet(
-                            () -> getJavaVersion() >= 16.0f ? SocketFamily.unix : SocketFamily.inet)
+            Environment.MVND_DAEMON_STORAGE.addCommandLineOption(
+                    args, parameters.daemonStorage().toString());
+            Environment.MVND_REGISTRY.addCommandLineOption(
+                    args, parameters.registry().toString());
+            Environment.MVND_SOCKET_FAMILY.addCommandLineOption(
+                    args,
+                    parameters
+                            .socketFamily()
+                            .orElseGet(() -> getJavaVersion() >= 16.0f ? SocketFamily.unix : SocketFamily.inet)
                             .toString());
             parameters.discriminatingCommandLineOptions(args);
             args.add(MavenDaemon.class.getName());
             command = String.join(" ", args);
 
-            LOGGER.debug("Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
-            ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(parameters.daemonOutLog(daemonId).toFile());
+            LOGGER.debug(
+                    "Starting daemon process: id = {}, workingDir = {}, daemonArgs: {}", daemonId, workingDir, command);
+            ProcessBuilder.Redirect redirect = ProcessBuilder.Redirect.appendTo(
+                    parameters.daemonOutLog(daemonId).toFile());
             ProcessBuilder processBuilder = new ProcessBuilder();
-            processBuilder.environment().put(Environment.JDK_JAVA_OPTIONS.getEnvironmentVariable(), parameters.jdkJavaOpts());
+            processBuilder
+                    .environment()
+                    .put(Environment.JDK_JAVA_OPTIONS.getEnvironmentVariable(), parameters.jdkJavaOpts());
             Process process = processBuilder
                     .directory(workingDir.toFile())
                     .command(args)
@@ -391,7 +418,8 @@ public class DaemonConnector {
             return process;
         } catch (Exception e) {
             throw new DaemonException.StartException(
-                    String.format("Error starting daemon: id = %s, workingDir = %s, daemonArgs: %s",
+                    String.format(
+                            "Error starting daemon: id = %s, workingDir = %s, daemonArgs: %s",
                             daemonId, workingDir, command),
                     e);
         }
@@ -432,14 +460,15 @@ public class DaemonConnector {
                 return connectToDaemon(daemonInfo, new CleanupOnStaleAddress(daemonInfo), newDaemon);
             } catch (DaemonException.ConnectException e) {
                 DaemonDiagnostics diag = new DaemonDiagnostics(daemon, parameters);
-                throw new DaemonException.ConnectException("Could not connect to the Maven daemon.\n" + diag.describe(), e);
+                throw new DaemonException.ConnectException(
+                        "Could not connect to the Maven daemon.\n" + diag.describe(), e);
             }
         }
         return null;
     }
 
-    private DaemonClientConnection connectToDaemon(DaemonInfo daemon,
-            DaemonClientConnection.StaleAddressDetector staleAddressDetector, boolean newDaemon)
+    private DaemonClientConnection connectToDaemon(
+            DaemonInfo daemon, DaemonClientConnection.StaleAddressDetector staleAddressDetector, boolean newDaemon)
             throws DaemonException.ConnectException {
         LOGGER.debug("Connecting to Daemon");
         try {
@@ -462,10 +491,11 @@ public class DaemonConnector {
 
         @Override
         public boolean maybeStaleAddress(Exception failure) {
-            LOGGER.debug("Removing daemon from the registry due to communication failure. Daemon information: {}", daemon);
+            LOGGER.debug(
+                    "Removing daemon from the registry due to communication failure. Daemon information: {}", daemon);
             final long timestamp = System.currentTimeMillis();
-            final DaemonStopEvent stopEvent = new DaemonStopEvent(daemon.getId(), timestamp, null,
-                    "by user or operating system");
+            final DaemonStopEvent stopEvent =
+                    new DaemonStopEvent(daemon.getId(), timestamp, null, "by user or operating system");
             registry.storeStopEvent(stopEvent);
             registry.remove(daemon.getId());
             return true;
@@ -500,7 +530,8 @@ public class DaemonConnector {
             //            socket.connect(address, CONNECT_TIMEOUT);
             //            if (socket.getLocalSocketAddress().equals(socket.getRemoteSocketAddress())) {
             //                socketChannel.close();
-            //                throw new DaemonException.ConnectException(String.format("Socket connected to itself on %s.", address));
+            //                throw new DaemonException.ConnectException(String.format("Socket connected to itself on
+            // %s.", address));
             //            }
             LOGGER.debug("Connected to address {}.", socketChannel.getRemoteAddress());
 
@@ -517,5 +548,4 @@ public class DaemonConnector {
             throw new DaemonException.ConnectException(String.format("Could not connect to server %s.", address), e);
         }
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonDiagnostics.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonDiagnostics.java
index 4c22c2c..a2135e6 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonDiagnostics.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonDiagnostics.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2009 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -32,7 +35,7 @@ import java.util.stream.Collector;
  */
 public class DaemonDiagnostics {
 
-    private final static int TAIL_SIZE = 200;
+    private static final int TAIL_SIZE = 200;
 
     private final String id;
     private final DaemonParameters parameters;
@@ -44,10 +47,7 @@ public class DaemonDiagnostics {
 
     @Override
     public String toString() {
-        return "{"
-                + "id=" + id
-                + ", parameters=" + parameters
-                + '}';
+        return "{" + "id=" + id + ", parameters=" + parameters + '}';
     }
 
     public String describe() {
@@ -62,14 +62,21 @@ public class DaemonDiagnostics {
         try {
             String tail = tail(log);
             sb.append("  ").append(name).append(": ").append(log).append("\n");
-            sb.append("----- Last  " + TAIL_SIZE + " lines from daemon ").append(name).append(" - ").append(log)
+            sb.append("----- Last  " + TAIL_SIZE + " lines from daemon ")
+                    .append(name)
+                    .append(" - ")
+                    .append(log)
                     .append(" -----\n");
             sb.append(tail);
             sb.append("----- End of the daemon ").append(name).append(" -----\n");
         } catch (NoSuchFileException e) {
             sb.append("  no ").append(name).append(" at: ").append(log).append("\n");
         } catch (IOException e) {
-            sb.append("  unable to read from the daemon ").append(name).append(": ").append(log).append(", because of: ")
+            sb.append("  unable to read from the daemon ")
+                    .append(name)
+                    .append(": ")
+                    .append(log)
+                    .append(", because of: ")
                     .append(e);
         }
     }
@@ -86,16 +93,18 @@ public class DaemonDiagnostics {
     }
 
     static <T> Collector<T, ?, List<T>> lastN(int n) {
-        return Collector.<T, Deque<T>, List<T>> of(ArrayDeque::new, (acc, t) -> {
-            if (acc.size() == n)
-                acc.pollFirst();
-            acc.add(t);
-        }, (acc1, acc2) -> {
-            while (acc2.size() < n && !acc1.isEmpty()) {
-                acc2.addFirst(acc1.pollLast());
-            }
-            return acc2;
-        }, ArrayList::new);
+        return Collector.<T, Deque<T>, List<T>>of(
+                ArrayDeque::new,
+                (acc, t) -> {
+                    if (acc.size() == n) acc.pollFirst();
+                    acc.add(t);
+                },
+                (acc1, acc2) -> {
+                    while (acc2.size() < n && !acc1.isEmpty()) {
+                        acc2.addFirst(acc1.pollLast());
+                    }
+                    return acc2;
+                },
+                ArrayList::new);
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
index 102fb82..e0fc8b9 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DaemonParameters.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -63,8 +66,8 @@ public class DaemonParameters {
     private static final String ENV_PREFIX = "env.";
 
     protected final Map<Path, Properties> mvndProperties = new ConcurrentHashMap<>();
-    protected final Function<Path, Properties> provider = path -> mvndProperties.computeIfAbsent(path,
-            p -> loadProperties(path));
+    protected final Function<Path, Properties> provider =
+            path -> mvndProperties.computeIfAbsent(path, p -> loadProperties(path));
     private final Map<String, String> properties;
 
     public DaemonParameters() {
@@ -83,9 +86,7 @@ public class DaemonParameters {
 
     public Map<String, String> getDaemonOptsMap() {
         return discriminatingValues()
-                .collect(Collectors.toMap(
-                        envValue -> envValue.envKey.getProperty(),
-                        EnvValue::asString));
+                .collect(Collectors.toMap(envValue -> envValue.envKey.getProperty(), EnvValue::asString));
     }
 
     Stream<EnvValue> discriminatingValues() {
@@ -96,8 +97,7 @@ public class DaemonParameters {
     }
 
     public void discriminatingCommandLineOptions(List<String> args) {
-        discriminatingValues()
-                .forEach(envValue -> envValue.envKey.addCommandLineOption(args, envValue.asString()));
+        discriminatingValues().forEach(envValue -> envValue.envKey.addCommandLineOption(args, envValue.asString()));
     }
 
     public Path mvndHome() {
@@ -112,7 +112,8 @@ public class DaemonParameters {
                 .orEnvironmentVariable()
                 .orFail()
                 .asPath()
-                .toAbsolutePath().normalize();
+                .toAbsolutePath()
+                .normalize();
     }
 
     private String mvndHomeFromExecutable() {
@@ -120,8 +121,8 @@ public class DaemonParameters {
         if (Environment.isNative() && cmd.isPresent()) {
             final Path mvndH = Paths.get(cmd.get()).getParent().getParent();
             if (mvndH != null) {
-                final Path mvndDaemonLib = mvndH
-                        .resolve("mvn/lib/ext/mvnd-daemon-" + BuildProperties.getInstance().getVersion() + ".jar");
+                final Path mvndDaemonLib = mvndH.resolve("mvn/lib/ext/mvnd-daemon-"
+                        + BuildProperties.getInstance().getVersion() + ".jar");
                 if (Files.exists(mvndDaemonLib)) {
                     return mvndH.toString();
                 }
@@ -138,9 +139,7 @@ public class DaemonParameters {
                 .orLocalProperty(provider, globalPropertiesPath())
                 .orSystemProperty()
                 .orEnvironmentVariable()
-                .or(new ValueSource(
-                        description -> description.append("java command"),
-                        this::javaHomeFromPath))
+                .or(new ValueSource(description -> description.append("java command"), this::javaHomeFromPath))
                 .orFail()
                 .asPath();
         try {
@@ -159,19 +158,11 @@ public class DaemonParameters {
     }
 
     public Path userDir() {
-        return value(Environment.USER_DIR)
-                .orSystemProperty()
-                .orFail()
-                .asPath()
-                .toAbsolutePath();
+        return value(Environment.USER_DIR).orSystemProperty().orFail().asPath().toAbsolutePath();
     }
 
     public Path userHome() {
-        return value(Environment.USER_HOME)
-                .orSystemProperty()
-                .orFail()
-                .asPath()
-                .toAbsolutePath();
+        return value(Environment.USER_HOME).orSystemProperty().orFail().asPath().toAbsolutePath();
     }
 
     public Path suppliedPropertiesPath() {
@@ -207,8 +198,10 @@ public class DaemonParameters {
                 .orSystemProperty()
                 .orLocalProperty(provider, globalPropertiesPath())
                 .orEnvironmentVariable()
-                .orDefault(
-                        () -> userHome().resolve(".m2/mvnd/registry/" + BuildProperties.getInstance().getVersion()).toString())
+                .orDefault(() -> userHome()
+                        .resolve(".m2/mvnd/registry/"
+                                + BuildProperties.getInstance().getVersion())
+                        .toString())
                 .asPath();
     }
 
@@ -233,7 +226,8 @@ public class DaemonParameters {
                 .orSystemProperty()
                 .orDefault(() -> findDefaultMultimoduleProjectDirectory(projectDir))
                 .asPath()
-                .toAbsolutePath().normalize();
+                .toAbsolutePath()
+                .normalize();
     }
 
     public Path logbackConfigurationPath() {
@@ -317,10 +311,7 @@ public class DaemonParameters {
      * @return if mvnd should behave as maven
      */
     public boolean serial() {
-        return value(Environment.SERIAL)
-                .orSystemProperty()
-                .orDefault()
-                .asBoolean();
+        return value(Environment.SERIAL).orSystemProperty().orDefault().asBoolean();
     }
 
     /**
@@ -333,14 +324,14 @@ public class DaemonParameters {
 
     public DaemonParameters withJdkJavaOpts(String opts, boolean before) {
         String org = this.properties.getOrDefault(Environment.JDK_JAVA_OPTIONS.getProperty(), "");
-        return derive(b -> b.put(Environment.JDK_JAVA_OPTIONS,
-                org.isEmpty() ? opts : before ? opts + " " + org : org + " " + opts));
+        return derive(b -> b.put(
+                Environment.JDK_JAVA_OPTIONS, org.isEmpty() ? opts : before ? opts + " " + org : org + " " + opts));
     }
 
     public DaemonParameters withJvmArgs(String opts, boolean before) {
         String org = this.properties.getOrDefault(Environment.MVND_JVM_ARGS.getProperty(), "");
-        return derive(b -> b.put(Environment.MVND_JVM_ARGS,
-                org.isEmpty() ? opts : before ? opts + " " + org : org + " " + opts));
+        return derive(b ->
+                b.put(Environment.MVND_JVM_ARGS, org.isEmpty() ? opts : before ? opts + " " + org : org + " " + opts));
     }
 
     protected DaemonParameters derive(Consumer<PropertiesBuilder> customizer) {
@@ -400,9 +391,11 @@ public class DaemonParameters {
     }
 
     protected EnvValue value(Environment env) {
-        return new EnvValue(env, new ValueSource(
-                description -> description.append("value: ").append(env.getProperty()),
-                () -> properties.get(env.getProperty())));
+        return new EnvValue(
+                env,
+                new ValueSource(
+                        description -> description.append("value: ").append(env.getProperty()),
+                        () -> properties.get(env.getProperty())));
     }
 
     public static EnvValue systemProperty(Environment env) {
@@ -519,7 +512,6 @@ public class DaemonParameters {
         public String toString() {
             return descriptionFunction.apply(new StringBuilder()).toString();
         }
-
     }
 
     /**
@@ -548,7 +540,8 @@ public class DaemonParameters {
         private static ValueSource systemPropertySource(Environment env) {
             String property = env.getProperty();
             if (property == null) {
-                throw new IllegalStateException("Cannot use " + Environment.class.getName() + " for getting a system property");
+                throw new IllegalStateException(
+                        "Cannot use " + Environment.class.getName() + " for getting a system property");
             }
             return new ValueSource(
                     description -> description.append("system property ").append(property),
@@ -558,9 +551,8 @@ public class DaemonParameters {
         private static ValueSource environmentVariableSource(Environment env) {
             String envVar = env.getEnvironmentVariable();
             if (envVar == null) {
-                throw new IllegalStateException(
-                        "Cannot use " + Environment.class.getName() + "." + env.name()
-                                + " for getting an environment variable");
+                throw new IllegalStateException("Cannot use " + Environment.class.getName() + "." + env.name()
+                        + " for getting an environment variable");
             }
             return new ValueSource(
                     description -> description.append("environment variable ").append(envVar),
@@ -573,10 +565,16 @@ public class DaemonParameters {
 
         public EnvValue orLocalProperty(Function<Path, Properties> provider, Path localPropertiesPath) {
             if (localPropertiesPath != null) {
-                return new EnvValue(this, envKey, new ValueSource(
-                        description -> description.append("property ").append(envKey.getProperty()).append(" in ")
-                                .append(localPropertiesPath),
-                        () -> provider.apply(localPropertiesPath).getProperty(envKey.getProperty())));
+                return new EnvValue(
+                        this,
+                        envKey,
+                        new ValueSource(
+                                description -> description
+                                        .append("property ")
+                                        .append(envKey.getProperty())
+                                        .append(" in ")
+                                        .append(localPropertiesPath),
+                                () -> provider.apply(localPropertiesPath).getProperty(envKey.getProperty())));
             } else {
                 return this;
             }
@@ -595,7 +593,9 @@ public class DaemonParameters {
         }
 
         public EnvValue orDefault(Supplier<String> defaultSupplier) {
-            return new EnvValue(this, envKey,
+            return new EnvValue(
+                    this,
+                    envKey,
                     new ValueSource(sb -> sb.append("default: ").append(defaultSupplier.get()), defaultSupplier));
         }
 
@@ -609,7 +609,9 @@ public class DaemonParameters {
             EnvValue val = this;
             final StringBuilder sb = new StringBuilder("Could not get value for ")
                     .append(Environment.class.getSimpleName())
-                    .append(".").append(envKey.name()).append(" from any of the following sources: ");
+                    .append(".")
+                    .append(envKey.name())
+                    .append(" from any of the following sources: ");
 
             /*
              * Compose the description functions to invert the order thus getting the resolution order in the
@@ -640,9 +642,7 @@ public class DaemonParameters {
                         .append(envKey.name())
                         .append("] from ");
                 valueSource.descriptionFunction.apply(sb);
-                sb.append(": [")
-                        .append(result)
-                        .append(']');
+                sb.append(": [").append(result).append(']');
                 LOG.trace(sb.toString());
             }
             return result;
@@ -690,6 +690,5 @@ public class DaemonParameters {
                 throw couldNotgetValue();
             }
         }
-
     }
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java b/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java
index 58f91db..9c4774d 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/DefaultClient.java
@@ -1,20 +1,25 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
+import static org.mvndaemon.mvnd.client.DaemonParameters.LOG_EXTENSION;
+
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.nio.file.Files;
@@ -56,8 +61,6 @@ import org.mvndaemon.mvnd.common.logging.TerminalOutput;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.mvndaemon.mvnd.client.DaemonParameters.LOG_EXTENSION;
-
 public class DefaultClient implements Client {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(DefaultClient.class);
@@ -88,7 +91,8 @@ public class DefaultClient implements Client {
                 || Environment.COMPLETION.hasCommandLineOption(args);
 
         // Color
-        Color styleColor = Color.of(Environment.MAVEN_COLOR.removeCommandLineOption(args)).orElse(Color.auto);
+        Color styleColor =
+                Color.of(Environment.MAVEN_COLOR.removeCommandLineOption(args)).orElse(Color.auto);
         if (styleColor == Color.auto) {
             /* Translate from auto to either always or never */
             /* stdout is not a terminal e.g. when stdout is redirected to a file */
@@ -114,7 +118,8 @@ public class DefaultClient implements Client {
             System.setProperty(Environment.MVND_NO_BUFERING.getProperty(), Boolean.toString(true));
         }
 
-        System.setProperty(Environment.MVND_HOME.getProperty(), parameters.mvndHome().toString());
+        System.setProperty(
+                Environment.MVND_HOME.getProperty(), parameters.mvndHome().toString());
 
         Path dir;
         if (Environment.MAVEN_FILE.hasCommandLineOption(args)) {
@@ -126,7 +131,8 @@ public class DefaultClient implements Client {
         } else {
             dir = parameters.userDir();
         }
-        System.setProperty(Environment.MAVEN_MULTIMODULE_PROJECT_DIRECTORY.getProperty(),
+        System.setProperty(
+                Environment.MAVEN_MULTIMODULE_PROJECT_DIRECTORY.getProperty(),
                 parameters.multiModuleProjectDirectory(dir).toString());
 
         // .mvn/jvm.config
@@ -158,7 +164,8 @@ public class DefaultClient implements Client {
         boolean defineIsEmpty = false;
         while (iterator.hasNext()) {
             final String arg = iterator.next();
-            String val = Environment.MAVEN_DEFINE.removeCommandLineOption(new ArrayList<>(Collections.singletonList(arg)));
+            String val =
+                    Environment.MAVEN_DEFINE.removeCommandLineOption(new ArrayList<>(Collections.singletonList(arg)));
             /* not -D or --define and pre define is empty */
             if (val == null && defineIsEmpty) {
                 defineIsEmpty = false;
@@ -187,8 +194,7 @@ public class DefaultClient implements Client {
 
     private static boolean maybeDefineCommandLineOption(String arg) {
         // if arg maybe MAVEN_DEFINE value
-        return EnumSet.allOf(Environment.class)
-                .stream()
+        return EnumSet.allOf(Environment.class).stream()
                 .filter(e -> e != Environment.MAVEN_DEFINE)
                 .noneMatch(e -> e.hasCommandLineOption(Collections.singletonList(arg)));
     }
@@ -245,15 +251,19 @@ public class DefaultClient implements Client {
         try (DaemonRegistry registry = new DaemonRegistry(parameters.registry())) {
             if (Environment.STATUS.removeCommandLineOption(args) != null) {
                 final String template = "%8s  %7s  %24s  %7s  %5s  %23s  %s";
-                output.accept(Message.out(String.format(template,
-                        "ID", "PID", "Address", "Status", "RSS", "Last activity", "Java home")));
+                output.accept(Message.out(String.format(
+                        template, "ID", "PID", "Address", "Status", "RSS", "Last activity", "Java home")));
                 for (DaemonInfo d : registry.getAll()) {
                     if (ProcessHandle.of(d.getPid()).isEmpty()) {
                         /* The process does not exist anymore - remove it from the registry */
                         registry.remove(d.getId());
                     } else {
-                        output.accept(Message.out(String.format(template,
-                                d.getId(), d.getPid(), d.getAddress(), d.getState(),
+                        output.accept(Message.out(String.format(
+                                template,
+                                d.getId(),
+                                d.getPid(),
+                                d.getAddress(),
+                                d.getState(),
                                 OsUtils.kbTohumanReadable(OsUtils.findProcessRssInKb(d.getPid())),
                                 LocalDateTime.ofInstant(
                                         Instant.ofEpochMilli(Math.max(d.getLastIdle(), d.getLastBusy())),
@@ -318,14 +328,16 @@ public class DefaultClient implements Client {
                         parameters.multiModuleProjectDirectory().toString(),
                         System.getenv()));
 
-                output.accept(Message
-                        .buildStatus("Connected to daemon " + daemon.getDaemon().getId() + ", scanning for projects..."));
+                output.accept(Message.buildStatus(
+                        "Connected to daemon " + daemon.getDaemon().getId() + ", scanning for projects..."));
 
                 // We've sent the request, so it gives us a bit of time to purge the logs
                 AtomicReference<String> purgeMessage = new AtomicReference<>();
-                Thread purgeLog = new Thread(() -> {
-                    purgeMessage.set(purgeLogs());
-                }, "Log purge");
+                Thread purgeLog = new Thread(
+                        () -> {
+                            purgeMessage.set(purgeLogs());
+                        },
+                        "Log purge");
                 purgeLog.setDaemon(true);
                 purgeLog.start();
 
@@ -335,16 +347,18 @@ public class DefaultClient implements Client {
                         output.accept(messages);
                         for (Message m : messages) {
                             switch (m.getType()) {
-                            case Message.CANCEL_BUILD:
-                                return new DefaultResult(argv,
-                                        new InterruptedException("The build was canceled"), 130);
-                            case Message.BUILD_EXCEPTION:
-                                final BuildException e = (BuildException) m;
-                                return new DefaultResult(argv,
-                                        new Exception(e.getClassName() + ": " + e.getMessage() + "\n" + e.getStackTrace()),
-                                        1);
-                            case Message.BUILD_FINISHED:
-                                return new DefaultResult(argv, null, ((BuildFinished) m).getExitCode());
+                                case Message.CANCEL_BUILD:
+                                    return new DefaultResult(
+                                            argv, new InterruptedException("The build was canceled"), 130);
+                                case Message.BUILD_EXCEPTION:
+                                    final BuildException e = (BuildException) m;
+                                    return new DefaultResult(
+                                            argv,
+                                            new Exception(e.getClassName() + ": " + e.getMessage() + "\n"
+                                                    + e.getStackTrace()),
+                                            1);
+                                case Message.BUILD_FINISHED:
+                                    return new DefaultResult(argv, null, ((BuildFinished) m).getExitCode());
                             }
                         }
                     }
@@ -364,13 +378,16 @@ public class DefaultClient implements Client {
         if (!Files.isDirectory(storage) || !TimeUtils.isPositive(purgeLogPeriod)) {
             return null;
         }
-        String date = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneId.systemDefault()).format(Instant.now());
+        String date = DateTimeFormatter.ofPattern("yyyy-MM-dd")
+                .withZone(ZoneId.systemDefault())
+                .format(Instant.now());
         Path log = storage.resolve("purge-" + date + ".log");
         List<Path> deleted = new ArrayList<>();
         List<Throwable> exceptions = new ArrayList<>();
         FileTime limit = FileTime.from(Instant.now().minus(purgeLogPeriod));
         try (Stream<Path> storagePath = Files.list(storage)) {
-            storagePath.filter(p -> p.getFileName().toString().endsWith(LOG_EXTENSION))
+            storagePath
+                    .filter(p -> p.getFileName().toString().endsWith(LOG_EXTENSION))
                     .filter(p -> !log.equals(p))
                     .filter(p -> {
                         try {
@@ -396,8 +413,8 @@ public class DefaultClient implements Client {
             return null;
         }
         String logMessage;
-        try (PrintWriter w = new PrintWriter(Files.newBufferedWriter(log,
-                StandardOpenOption.WRITE, StandardOpenOption.APPEND, StandardOpenOption.CREATE))) {
+        try (PrintWriter w = new PrintWriter(Files.newBufferedWriter(
+                log, StandardOpenOption.WRITE, StandardOpenOption.APPEND, StandardOpenOption.CREATE))) {
             w.printf("Purge executed at %s%n", Instant.now().toString());
             if (deleted.isEmpty()) {
                 w.printf("No files deleted.%n");
@@ -423,7 +440,8 @@ public class DefaultClient implements Client {
         if (exceptions.isEmpty()) {
             return String.format("Purged %d log files (%s)", deleted.size(), logMessage);
         } else {
-            return String.format("Purged %d log files with %d exceptions (%s)", deleted.size(), exceptions.size(), logMessage);
+            return String.format(
+                    "Purged %d log files with %d exceptions (%s)", deleted.size(), exceptions.size(), logMessage);
         }
     }
 
@@ -447,13 +465,17 @@ public class DefaultClient implements Client {
         @Override
         public ExecutionResult assertSuccess() {
             if (exception != null) {
-                throw new AssertionError(ExecutionResult.appendCommand(new StringBuilder("Build failed: "), args).toString(),
+                throw new AssertionError(
+                        ExecutionResult.appendCommand(new StringBuilder("Build failed: "), args)
+                                .toString(),
                         exception);
             }
             if (exitCode != 0) {
                 throw new AssertionError(
                         ExecutionResult.appendCommand(
-                                new StringBuilder("Build exited with non-zero exit code " + exitCode + ": "), args).toString(),
+                                        new StringBuilder("Build exited with non-zero exit code " + exitCode + ": "),
+                                        args)
+                                .toString(),
                         exception);
             }
             return this;
@@ -462,7 +484,8 @@ public class DefaultClient implements Client {
         @Override
         public ExecutionResult assertFailure() {
             if (exception == null && exitCode == 0) {
-                throw new AssertionError(ExecutionResult.appendCommand(new StringBuilder("Build did not fail: "), args));
+                throw new AssertionError(
+                        ExecutionResult.appendCommand(new StringBuilder("Build did not fail: "), args));
             }
             return this;
         }
@@ -476,7 +499,5 @@ public class DefaultClient implements Client {
         public boolean isSuccess() {
             return exception == null;
         }
-
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/ExecutionResult.java b/client/src/main/java/org/mvndaemon/mvnd/client/ExecutionResult.java
index 0c87f01..55106fd 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/ExecutionResult.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/ExecutionResult.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -37,5 +40,4 @@ public interface ExecutionResult {
         }
         return sb;
     }
-
 }
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java b/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java
index 97c1b57..3f46b71 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/svm/ReflectionRegistration.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client.svm;
 
diff --git a/client/src/main/java/org/mvndaemon/mvnd/client/svm/StaticMDCBinderSubstitution.java b/client/src/main/java/org/mvndaemon/mvnd/client/svm/StaticMDCBinderSubstitution.java
index 5a0fcd9..e237147 100644
--- a/client/src/main/java/org/mvndaemon/mvnd/client/svm/StaticMDCBinderSubstitution.java
+++ b/client/src/main/java/org/mvndaemon/mvnd/client/svm/StaticMDCBinderSubstitution.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client.svm;
 
@@ -28,5 +31,4 @@ final class StaticMDCBinderSubstitution {
     private static MDCAdapter bwCompatibleGetMDCAdapterFromBinder() throws NoClassDefFoundError {
         return StaticMDCBinder.SINGLETON.getMDCA();
     }
-
 }
diff --git a/client/src/test/java/org/mvndaemon/mvnd/client/CompletionGeneratorTest.java b/client/src/test/java/org/mvndaemon/mvnd/client/CompletionGeneratorTest.java
index 03a9036..1f5f4af 100644
--- a/client/src/test/java/org/mvndaemon/mvnd/client/CompletionGeneratorTest.java
+++ b/client/src/test/java/org/mvndaemon/mvnd/client/CompletionGeneratorTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
@@ -34,8 +37,8 @@ public class CompletionGeneratorTest {
     @Test
     void generate() throws IOException {
 
-        String template = IoUtils.readResource(Completion.class.getClassLoader(),
-                "completion-templates/mvnd-bash-completion.bash");
+        String template = IoUtils.readResource(
+                Completion.class.getClassLoader(), "completion-templates/mvnd-bash-completion.bash");
 
         final String shortOpts = Stream.of(Environment.values())
                 .filter(env -> !env.isInternal())
@@ -71,7 +74,5 @@ public class CompletionGeneratorTest {
 
         final byte[] bytes = template.getBytes(StandardCharsets.UTF_8);
         Files.write(baseDir.resolve("../dist/src/main/distro/bin/mvnd-bash-completion.bash"), bytes);
-
     }
-
 }
diff --git a/client/src/test/java/org/mvndaemon/mvnd/client/DaemonConnectorTest.java b/client/src/test/java/org/mvndaemon/mvnd/client/DaemonConnectorTest.java
index 11eaf55..2e28d08 100644
--- a/client/src/test/java/org/mvndaemon/mvnd/client/DaemonConnectorTest.java
+++ b/client/src/test/java/org/mvndaemon/mvnd/client/DaemonConnectorTest.java
@@ -1,25 +1,28 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
-import org.junit.jupiter.api.Test;
-
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
 
+import org.junit.jupiter.api.Test;
+
 public class DaemonConnectorTest {
 
     @Test
diff --git a/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java b/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java
index 5dca974..0d14670 100644
--- a/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java
+++ b/client/src/test/java/org/mvndaemon/mvnd/client/EnvironmentTest.java
@@ -1,20 +1,25 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -28,8 +33,6 @@ import org.mvndaemon.mvnd.client.DaemonParameters.EnvValue;
 import org.mvndaemon.mvnd.client.DaemonParameters.ValueSource;
 import org.mvndaemon.mvnd.common.Environment;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 public class EnvironmentTest {
 
     @Test
@@ -57,7 +60,9 @@ public class EnvironmentTest {
     void prop() {
         try (EnvironmentResource env = new EnvironmentResource()) {
             env.props("mvnd.home", "/maven/home/prop");
-            assertEquals("/maven/home/prop", DaemonParameters.systemProperty(Environment.MVND_HOME).asString());
+            assertEquals(
+                    "/maven/home/prop",
+                    DaemonParameters.systemProperty(Environment.MVND_HOME).asString());
         }
     }
 
@@ -65,7 +70,9 @@ public class EnvironmentTest {
     void env() {
         try (EnvironmentResource env = new EnvironmentResource()) {
             env.env("MVND_HOME", "/maven/home/env");
-            assertEquals("/maven/home/env", DaemonParameters.environmentVariable(Environment.MVND_HOME).asString());
+            assertEquals(
+                    "/maven/home/env",
+                    DaemonParameters.environmentVariable(Environment.MVND_HOME).asString());
         }
     }
 
@@ -74,9 +81,9 @@ public class EnvironmentTest {
         try (EnvironmentResource env = new EnvironmentResource()) {
             final Properties localProps = new Properties();
             localProps.put("mvnd.home", "/maven/home/local");
-            assertEquals(Paths.get("/maven/home/local"),
-                    DaemonParameters
-                            .environmentVariable(Environment.MVND_HOME)
+            assertEquals(
+                    Paths.get("/maven/home/local"),
+                    DaemonParameters.environmentVariable(Environment.MVND_HOME)
                             .orSystemProperty()
                             .orLocalProperty(path -> localProps, Paths.get("/local/properties"))
                             .orFail()
@@ -89,9 +96,9 @@ public class EnvironmentTest {
         try (EnvironmentResource env = new EnvironmentResource()) {
             env.props("mvnd.home", "/maven/home/prop");
             env.env("MVND_HOME", "/maven/home/env");
-            assertEquals("/maven/home/env",
-                    DaemonParameters
-                            .environmentVariable(Environment.MVND_HOME)
+            assertEquals(
+                    "/maven/home/env",
+                    DaemonParameters.environmentVariable(Environment.MVND_HOME)
                             .orSystemProperty()
                             .asString());
         }
@@ -101,9 +108,9 @@ public class EnvironmentTest {
     void fail() {
         try (EnvironmentResource env = new EnvironmentResource()) {
             try {
-                assertEquals("/maven/home/env",
-                        DaemonParameters
-                                .environmentVariable(Environment.MVND_HOME)
+                assertEquals(
+                        "/maven/home/env",
+                        DaemonParameters.environmentVariable(Environment.MVND_HOME)
                                 .orSystemProperty()
                                 .orFail()
                                 .asString());
@@ -124,7 +131,8 @@ public class EnvironmentTest {
     @Test
     void emptyBooleanEnvValueIsTrue() {
         final String EMPTY_STRING = "";
-        final EnvValue envVal = new EnvValue(Environment.MVND_NO_BUFERING,
+        final EnvValue envVal = new EnvValue(
+                Environment.MVND_NO_BUFERING,
                 new ValueSource(sb -> sb.append("envValueAsBoolean"), () -> EMPTY_STRING));
         assertEquals(true, envVal.asBoolean());
     }
@@ -158,7 +166,5 @@ public class EnvironmentTest {
             DaemonParameters.EnvValue.env = System.getenv();
             Environment.setProperties(System.getProperties());
         }
-
     }
-
 }
diff --git a/client/src/test/java/org/mvndaemon/mvnd/client/OsUtilsTest.java b/client/src/test/java/org/mvndaemon/mvnd/client/OsUtilsTest.java
index d32d630..c2fdf6a 100644
--- a/client/src/test/java/org/mvndaemon/mvnd/client/OsUtilsTest.java
+++ b/client/src/test/java/org/mvndaemon/mvnd/client/OsUtilsTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.client;
 
diff --git a/common/pom.xml b/common/pom.xml
index f3bef02..06cd555 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright 2019 the original author or authors.
@@ -15,184 +16,183 @@
     limitations under the License.
 
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.maven.daemon</groupId>
-        <artifactId>mvnd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.daemon</groupId>
+    <artifactId>mvnd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>mvnd-common</artifactId>
 
-    <artifactId>mvnd-common</artifactId>
+  <packaging>jar</packaging>
+  <name>Maven Daemon - Common</name>
 
-    <packaging>jar</packaging>
-    <name>Maven Daemon - Common</name>
+  <dependencies>
 
-    <dependencies>
+    <dependency>
+      <groupId>org.jline</groupId>
+      <artifactId>jline-terminal</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.jline</groupId>
+      <artifactId>jline-terminal-jansi</artifactId>
+    </dependency>
 
-        <dependency>
-            <groupId>org.jline</groupId>
-            <artifactId>jline-terminal</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.jline</groupId>
-            <artifactId>jline-terminal-jansi</artifactId>
-        </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+    </dependency>
 
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-        </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-simple</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.daemon</groupId>
+        <artifactId>mvnd-build-maven-plugin</artifactId>
+        <version>${project.version}</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>doc</goal>
+            </goals>
+            <phase>generate-resources</phase>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 
-    <build>
+  <profiles>
+    <profile>
+      <id>jdk11-15</id>
+      <activation>
+        <jdk>[11,15)</jdk>
+      </activation>
+      <build>
         <plugins>
-            <plugin>
-                <groupId>org.apache.maven.daemon</groupId>
-                <artifactId>mvnd-build-maven-plugin</artifactId>
-                <version>${project.version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>doc</goal>
-                        </goals>
-                        <phase>generate-resources</phase>
-                    </execution>
-                </executions>
-            </plugin>
+          <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>default</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs>
+                    <arg>-XDignore.symbol.file</arg>
+                  </compilerArgs>
+                </configuration>
+              </execution>
+              <execution>
+                <id>jdk11</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs>
+                    <arg>-XDignore.symbol.file</arg>
+                  </compilerArgs>
+                  <release>11</release>
+                  <multiReleaseOutput>true</multiReleaseOutput>
+                  <compileSourceRoots>
+                    <root>${project.basedir}/src/main/java11</root>
+                  </compileSourceRoots>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-jar-plugin</artifactId>
+            <configuration>
+              <archive>
+                <manifestEntries>
+                  <Multi-Release>true</Multi-Release>
+                </manifestEntries>
+              </archive>
+            </configuration>
+          </plugin>
         </plugins>
-    </build>
-
-    <profiles>
-        <profile>
-            <id>jdk11-15</id>
-            <activation>
-                <jdk>[11,15)</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>default</id>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <fork>true</fork>
-                                    <compilerArgs>
-                                        <arg>-XDignore.symbol.file</arg>
-                                    </compilerArgs>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>jdk11</id>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <fork>true</fork>
-                                    <compilerArgs>
-                                        <arg>-XDignore.symbol.file</arg>
-                                    </compilerArgs>
-                                    <release>11</release>
-                                    <multiReleaseOutput>true</multiReleaseOutput>
-                                    <compileSourceRoots>
-                                        <root>${project.basedir}/src/main/java11</root>
-                                    </compileSourceRoots>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                    <plugin>
-                        <groupId>org.apache.maven.plugins</groupId>
-                        <artifactId>maven-jar-plugin</artifactId>
-                        <configuration>
-                            <archive>
-                                <manifestEntries>
-                                    <Multi-Release>true</Multi-Release>
-                                </manifestEntries>
-                            </archive>
-                        </configuration>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-        <profile>
-            <id>jdk16+</id>
-            <activation>
-                <jdk>[16,)</jdk>
-            </activation>
-            <build>
-                <plugins>
-                    <plugin>
-                        <artifactId>maven-compiler-plugin</artifactId>
-                        <executions>
-                            <execution>
-                                <id>default</id>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <fork>true</fork>
-                                    <compilerArgs>
-                                        <arg>-XDignore.symbol.file</arg>
-                                    </compilerArgs>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>jdk11</id>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <fork>true</fork>
-                                    <compilerArgs>
-                                        <arg>-XDignore.symbol.file</arg>
-                                    </compilerArgs>
-                                    <release>11</release>
-                                    <multiReleaseOutput>true</multiReleaseOutput>
-                                    <compileSourceRoots>
-                                        <root>${project.basedir}/src/main/java11</root>
-                                    </compileSourceRoots>
-                                </configuration>
-                            </execution>
-                            <execution>
-                                <id>jdk16</id>
-                                <goals>
-                                    <goal>compile</goal>
-                                </goals>
-                                <configuration>
-                                    <fork>true</fork>
-                                    <compilerArgs>
-                                        <arg>-XDignore.symbol.file</arg>
-                                    </compilerArgs>
-                                    <release>16</release>
-                                    <multiReleaseOutput>true</multiReleaseOutput>
-                                    <compileSourceRoots>
-                                        <root>${project.basedir}/src/main/java16</root>
-                                    </compileSourceRoots>
-                                </configuration>
-                            </execution>
-                        </executions>
-                    </plugin>
-                </plugins>
-            </build>
-        </profile>
-    </profiles>
+      </build>
+    </profile>
+    <profile>
+      <id>jdk16+</id>
+      <activation>
+        <jdk>[16,)</jdk>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>default</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs>
+                    <arg>-XDignore.symbol.file</arg>
+                  </compilerArgs>
+                </configuration>
+              </execution>
+              <execution>
+                <id>jdk11</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs>
+                    <arg>-XDignore.symbol.file</arg>
+                  </compilerArgs>
+                  <release>11</release>
+                  <multiReleaseOutput>true</multiReleaseOutput>
+                  <compileSourceRoots>
+                    <root>${project.basedir}/src/main/java11</root>
+                  </compileSourceRoots>
+                </configuration>
+              </execution>
+              <execution>
+                <id>jdk16</id>
+                <goals>
+                  <goal>compile</goal>
+                </goals>
+                <configuration>
+                  <fork>true</fork>
+                  <compilerArgs>
+                    <arg>-XDignore.symbol.file</arg>
+                  </compilerArgs>
+                  <release>16</release>
+                  <multiReleaseOutput>true</multiReleaseOutput>
+                  <compileSourceRoots>
+                    <root>${project.basedir}/src/main/java16</root>
+                  </compileSourceRoots>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/BufferCaster.java b/common/src/main/java/org/mvndaemon/mvnd/common/BufferCaster.java
index e0bc9a6..38d2ff5 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/BufferCaster.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/BufferCaster.java
@@ -1,19 +1,21 @@
 /*
- * Copyright 2018 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.mvndaemon.mvnd.common;
 
 import java.nio.Buffer;
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/BufferHelper.java b/common/src/main/java/org/mvndaemon/mvnd/common/BufferHelper.java
index 31f4635..ef5acac 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/BufferHelper.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/BufferHelper.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -28,7 +31,8 @@ import java.util.function.Consumer;
  */
 public class BufferHelper {
 
-    private static boolean PRE_JAVA_9 = System.getProperty("java.specification.version", "9").startsWith("1.");
+    private static boolean PRE_JAVA_9 =
+            System.getProperty("java.specification.version", "9").startsWith("1.");
 
     /** The DirectByteBuffer.cleaner() method. */
     private static Method directByteBufferCleanerMethod;
@@ -74,7 +78,7 @@ public class BufferHelper {
                 // Ignore
             }
         } else {
-            //boolean jdkSuccess = false;
+            // boolean jdkSuccess = false;
             //    // TODO: This feature is in incubation now -- enable after it leaves incubation.
             //    // To enable this feature, need to:
             //    // -- add whatever the "jdk.incubator.foreign" module name is replaced with to <Import-Package>
@@ -94,7 +98,7 @@ public class BufferHelper {
             //    } catch (ClassNotFoundException | NoSuchMethodException | SecurityException e1) {
             //        // Fall through
             //    }
-            //if (!jdk14Success) { // In JDK9+, calling sun.misc.Cleaner.clean() gives a reflection warning on stderr,
+            // if (!jdk14Success) { // In JDK9+, calling sun.misc.Cleaner.clean() gives a reflection warning on stderr,
             // so we need to call Unsafe.theUnsafe.invokeCleaner(byteBuffer) instead, which makes
             // the same call, but does not print the reflection warning.
             try {
@@ -117,7 +121,7 @@ public class BufferHelper {
             } catch (final ReflectiveOperationException | LinkageError ex) {
                 // Ignore
             }
-            //}
+            // }
         }
     }
 
@@ -261,5 +265,4 @@ public class BufferHelper {
             return false;
         }
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/ByteChannelWrapper.java b/common/src/main/java/org/mvndaemon/mvnd/common/ByteChannelWrapper.java
index b299151..f74fc3f 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/ByteChannelWrapper.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/ByteChannelWrapper.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonCompatibilitySpec.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonCompatibilitySpec.java
index eae53be..d18e45d 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonCompatibilitySpec.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonCompatibilitySpec.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2011 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -68,8 +71,7 @@ public class DaemonCompatibilitySpec {
     }
 
     private boolean daemonOptsMatch(DaemonInfo daemon) {
-        return daemon.getOptions().containsAll(options)
-                && daemon.getOptions().size() == options.size();
+        return daemon.getOptions().containsAll(options) && daemon.getOptions().size() == options.size();
     }
 
     private boolean javaHomeMatches(DaemonInfo daemon) {
@@ -77,13 +79,14 @@ public class DaemonCompatibilitySpec {
     }
 
     StringBuilder appendFields(StringBuilder sb) {
-        return sb.append("javaHome=").append(javaHome)
-                .append(", options=").append(options);
+        return sb.append("javaHome=").append(javaHome).append(", options=").append(options);
     }
 
     @Override
     public String toString() {
-        return appendFields(new StringBuilder("DaemonCompatibilitySpec{")).append('}').toString();
+        return appendFields(new StringBuilder("DaemonCompatibilitySpec{"))
+                .append('}')
+                .toString();
     }
 
     public static class Result {
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonConnection.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonConnection.java
index 66f1d3b..ba79896 100755
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonConnection.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonConnection.java
@@ -1,19 +1,21 @@
 /*
- * Copyright 2016 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.mvndaemon.mvnd.common;
 
 import java.io.Closeable;
@@ -82,7 +84,8 @@ public class DaemonConnection implements AutoCloseable {
             throw new DaemonException.RecoverableMessageIOException(
                     String.format("Could not read message from '%s'.", remoteAddress), e);
         } catch (Throwable e) {
-            throw new DaemonException.MessageIOException(String.format("Could not read message from '%s'.", remoteAddress), e);
+            throw new DaemonException.MessageIOException(
+                    String.format("Could not read message from '%s'.", remoteAddress), e);
         }
     }
 
@@ -94,7 +97,8 @@ public class DaemonConnection implements AutoCloseable {
             if (Objects.equals(e.getMessage(), "An existing connection was forcibly closed by the remote host")) {
                 return true;
             }
-            if (Objects.equals(e.getMessage(), "An established connection was aborted by the software in your host machine")) {
+            if (Objects.equals(
+                    e.getMessage(), "An established connection was aborted by the software in your host machine")) {
                 return true;
             }
             if (Objects.equals(e.getMessage(), "Connection reset by peer")) {
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonException.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonException.java
index adf90e1..c6177e2 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonException.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonException.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -84,5 +87,4 @@ public class DaemonException extends RuntimeException {
             super(message, cause);
         }
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonExpirationStatus.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonExpirationStatus.java
index e844074..57b07d5 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonExpirationStatus.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonExpirationStatus.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2016 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonInfo.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonInfo.java
index c0f6907..3d435a9 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonInfo.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonInfo.java
@@ -1,25 +1,28 @@
 /*
- * Copyright 2011 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
-import java.util.List;
-
 import static org.mvndaemon.mvnd.common.DaemonState.Busy;
 import static org.mvndaemon.mvnd.common.DaemonState.Idle;
 
+import java.util.List;
+
 /**
  * File origin:
  * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/registry/DaemonInfo.java
@@ -40,10 +43,18 @@ public class DaemonInfo {
     private final long lastIdle;
     private final long lastBusy;
 
-    public DaemonInfo(String id, String javaHome, String mavenHome,
-            int pid, String address, byte[] token,
-            String locale, List<String> options,
-            DaemonState state, long lastIdle, long lastBusy) {
+    public DaemonInfo(
+            String id,
+            String javaHome,
+            String mavenHome,
+            int pid,
+            String address,
+            byte[] token,
+            String locale,
+            List<String> options,
+            DaemonState state,
+            long lastIdle,
+            long lastBusy) {
         this.id = id;
         this.javaHome = javaHome;
         this.mvndHome = mavenHome;
@@ -113,8 +124,7 @@ public class DaemonInfo {
             li = lastIdle;
             lb = lastBusy;
         }
-        return new DaemonInfo(id, javaHome, mvndHome, pid, address,
-                token, locale, options, state, li, lb);
+        return new DaemonInfo(id, javaHome, mvndHome, pid, address, token, locale, options, state, li, lb);
     }
 
     @Override
@@ -125,14 +135,23 @@ public class DaemonInfo {
     }
 
     public StringBuilder appendNonKeyFields(StringBuilder sb) {
-        return sb.append("javaHome=").append(javaHome)
-                .append(", options=").append(options)
-                .append(", mavenHome=").append(mvndHome)
-                .append(", pid=").append(pid)
-                .append(", address=").append(address)
-                .append(", locale=").append(locale)
-                .append(", state=").append(state)
-                .append(", lastIdle=").append(lastIdle)
-                .append(", lastBusy=").append(lastBusy);
+        return sb.append("javaHome=")
+                .append(javaHome)
+                .append(", options=")
+                .append(options)
+                .append(", mavenHome=")
+                .append(mvndHome)
+                .append(", pid=")
+                .append(pid)
+                .append(", address=")
+                .append(address)
+                .append(", locale=")
+                .append(locale)
+                .append(", state=")
+                .append(state)
+                .append(", lastIdle=")
+                .append(lastIdle)
+                .append(", lastBusy=")
+                .append(lastBusy);
     }
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonRegistry.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonRegistry.java
index c488f51..449e3f1 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonRegistry.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonRegistry.java
@@ -1,21 +1,26 @@
 /*
- * Copyright 2011 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.mvndaemon.mvnd.common;
 
+import static org.mvndaemon.mvnd.common.DaemonState.Canceled;
+import static org.mvndaemon.mvnd.common.DaemonState.Idle;
+
 import java.io.IOException;
 import java.lang.management.ManagementFactory;
 import java.nio.BufferOverflowException;
@@ -40,9 +45,6 @@ import java.util.stream.Collectors;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.mvndaemon.mvnd.common.DaemonState.Canceled;
-import static org.mvndaemon.mvnd.common.DaemonState.Idle;
-
 /**
  * Access to daemon registry files. Useful also for testing.
  *
@@ -76,8 +78,8 @@ public class DaemonRegistry implements AutoCloseable {
                     Files.createDirectories(absPath.getParent());
                 }
             }
-            channel = FileChannel.open(absPath,
-                    StandardOpenOption.CREATE, StandardOpenOption.READ, StandardOpenOption.WRITE);
+            channel = FileChannel.open(
+                    absPath, StandardOpenOption.CREATE, StandardOpenOption.READ, StandardOpenOption.WRITE);
             size = nextPowerOf2(channel.size(), MAX_LENGTH);
             buffer = channel.map(FileChannel.MapMode.READ_WRITE, 0, size);
         } catch (IOException e) {
@@ -117,15 +119,11 @@ public class DaemonRegistry implements AutoCloseable {
 
     public List<DaemonInfo> getIdle() {
         read();
-        return infosMap.values().stream()
-                .filter(di -> di.getState() == Idle)
-                .collect(Collectors.toList());
+        return infosMap.values().stream().filter(di -> di.getState() == Idle).collect(Collectors.toList());
     }
 
     public List<DaemonInfo> getNotIdle() {
-        return infosMap.values().stream()
-                .filter(di -> di.getState() != Idle)
-                .collect(Collectors.toList());
+        return infosMap.values().stream().filter(di -> di.getState() != Idle).collect(Collectors.toList());
     }
 
     public List<DaemonInfo> getCanceled() {
@@ -211,8 +209,9 @@ public class DaemonRegistry implements AutoCloseable {
                         DaemonState state = DaemonState.values()[buffer.get()];
                         long lastIdle = buffer.getLong();
                         long lastBusy = buffer.getLong();
-                        DaemonInfo di = new DaemonInfo(daemonId, javaHome, mavenHome, pid, address, token, locale,
-                                opts, state, lastIdle, lastBusy);
+                        DaemonInfo di = new DaemonInfo(
+                                daemonId, javaHome, mavenHome, pid, address, token, locale, opts, state, lastIdle,
+                                lastBusy);
                         infosMap.putIfAbsent(di.getId(), di);
                     }
                     stopEvents.clear();
@@ -251,7 +250,10 @@ public class DaemonRegistry implements AutoCloseable {
                         for (DaemonStopEvent dse : stopEvents) {
                             writeString(dse.getDaemonId());
                             buffer.putLong(dse.getTimestamp());
-                            buffer.put((byte) (dse.getStatus() == null ? -1 : dse.getStatus().ordinal()));
+                            buffer.put((byte)
+                                    (dse.getStatus() == null
+                                            ? -1
+                                            : dse.getStatus().ordinal()));
                             writeString(dse.getReason());
                         }
                     }
@@ -285,14 +287,16 @@ public class DaemonRegistry implements AutoCloseable {
                         throw new DaemonException("Could not resize registry " + registryFile, ex);
                     }
                 } catch (IOException e) {
-                    throw new DaemonException("Exception while "
-                            + (updater != null ? "updating " : "reading ") + registryFile, e);
+                    throw new DaemonException(
+                            "Exception while " + (updater != null ? "updating " : "reading ") + registryFile, e);
                 } catch (IllegalStateException | ArrayIndexOutOfBoundsException | BufferUnderflowException e) {
                     String absPath = registryFile.toAbsolutePath().normalize().toString();
-                    LOGGER.warn("Invalid daemon registry info, " +
-                            "trying to recover from this issue. " +
-                            "If you keep getting this warning, " +
-                            "try deleting the `registry.bin` file at [" + absPath + "]", e);
+                    LOGGER.warn(
+                            "Invalid daemon registry info, " + "trying to recover from this issue. "
+                                    + "If you keep getting this warning, "
+                                    + "try deleting the `registry.bin` file at ["
+                                    + absPath + "]",
+                            e);
                     this.reset();
                     return;
                 }
@@ -347,7 +351,8 @@ public class DaemonRegistry implements AutoCloseable {
             return Integer.parseInt(pid);
         } catch (NumberFormatException x) {
             int rpid = new Random().nextInt(1 << 16);
-            LOGGER.warn("Unable to determine PID from malformed VM name `" + vmname + "`, picked a random number=" + rpid);
+            LOGGER.warn(
+                    "Unable to determine PID from malformed VM name `" + vmname + "`, picked a random number=" + rpid);
             return rpid;
         }
     }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonState.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonState.java
index 808b498..5c4158c 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonState.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonState.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2012 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -20,7 +23,6 @@ package org.mvndaemon.mvnd.common;
  * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/server/api/DaemonStateControl.java
  */
 public enum DaemonState {
-
     Idle,
     Busy,
     Canceled,
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonStopEvent.java b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonStopEvent.java
index 4520130..e36e5d3 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/DaemonStopEvent.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/DaemonStopEvent.java
@@ -1,19 +1,21 @@
 /*
- * Copyright 2016 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
-
 package org.mvndaemon.mvnd.common;
 
 import java.io.Serializable;
@@ -59,10 +61,8 @@ public class DaemonStopEvent implements Serializable {
 
     @Override
     public boolean equals(Object o) {
-        if (this == o)
-            return true;
-        if (o == null || getClass() != o.getClass())
-            return false;
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
         DaemonStopEvent that = (DaemonStopEvent) o;
         return Objects.equals(daemonId, that.daemonId)
                 && timestamp == that.timestamp
@@ -84,5 +84,4 @@ public class DaemonStopEvent implements Serializable {
                 + ", reason=" + reason
                 + "}";
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
index c703059..6181dc9 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/Environment.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -214,7 +217,8 @@ public enum Environment {
      * The <code>-Xss</code> value to pass to the daemon.
      * This option takes precedence over options specified in {@link #MVND_JVM_ARGS}.
      */
-    MVND_THREAD_STACK_SIZE("mvnd.threadStackSize", null, null, OptionType.MEMORY_SIZE, Flags.DISCRIMINATING | Flags.OPTIONAL),
+    MVND_THREAD_STACK_SIZE(
+            "mvnd.threadStackSize", null, null, OptionType.MEMORY_SIZE, Flags.DISCRIMINATING | Flags.OPTIONAL),
     /**
      * Additional JVM args to pass to the daemon.
      * The content of the <code>.mvn/jvm.config</code> file will prepended (and thus with
@@ -230,13 +234,14 @@ public enum Environment {
     /**
      * The daemon will check this often whether it should exit.
      */
-    MVND_EXPIRATION_CHECK_DELAY("mvnd.expirationCheckDelay", null, "10 seconds", OptionType.DURATION, Flags.DISCRIMINATING),
+    MVND_EXPIRATION_CHECK_DELAY(
+            "mvnd.expirationCheckDelay", null, "10 seconds", OptionType.DURATION, Flags.DISCRIMINATING),
     /**
      * Period after which idle duplicate daemons will be shut down. Duplicate daemons are daemons with the same set of
      * discriminating start parameters.
      */
-    MVND_DUPLICATE_DAEMON_GRACE_PERIOD("mvnd.duplicateDaemonGracePeriod", null, "10 seconds", OptionType.DURATION,
-            Flags.DISCRIMINATING),
+    MVND_DUPLICATE_DAEMON_GRACE_PERIOD(
+            "mvnd.duplicateDaemonGracePeriod", null, "10 seconds", OptionType.DURATION, Flags.DISCRIMINATING),
     /**
      * Internal property to tell the daemon the width of the terminal
      */
@@ -289,7 +294,12 @@ public enum Environment {
     private final OptionType type;
     private final Map<String, OptionOrigin> options;
 
-    Environment(String property, String environmentVariable, Object default_, OptionType type, int flags,
+    Environment(
+            String property,
+            String environmentVariable,
+            Object default_,
+            OptionType type,
+            int flags,
             String... options) {
         if (property == null && options.length == 0) {
             throw new IllegalArgumentException(
@@ -305,7 +315,8 @@ public enum Environment {
         } else {
             final Map<String, OptionOrigin> optMap = new LinkedHashMap<>();
             for (String opt : options) {
-                OPTION_ORIGIN_SEARCH: {
+                OPTION_ORIGIN_SEARCH:
+                {
                     for (OptionOrigin oo : OptionOrigin.values()) {
                         if (opt.startsWith(oo.prefix)) {
                             optMap.put(opt.substring(oo.prefix.length()), oo);
@@ -314,7 +325,9 @@ public enum Environment {
                     }
                     throw new IllegalArgumentException(
                             "Unexpected option prefix: '" + opt + "'; Options should start with any of "
-                                    + Stream.of(OptionOrigin.values()).map(oo -> oo.prefix).collect(Collectors.joining(",")));
+                                    + Stream.of(OptionOrigin.values())
+                                            .map(oo -> oo.prefix)
+                                            .collect(Collectors.joining(",")));
                 }
             }
             this.options = Collections.unmodifiableMap(optMap);
@@ -425,7 +438,7 @@ public enum Environment {
     String getCommandLineOption(Collection<String> args, boolean remove) {
         final String[] prefixes = getPrefixes();
         String value = null;
-        for (Iterator<String> it = args.iterator(); it.hasNext();) {
+        for (Iterator<String> it = args.iterator(); it.hasNext(); ) {
             String arg = it.next();
             if (Stream.of(prefixes).anyMatch(arg::startsWith)) {
                 if (remove) {
@@ -434,8 +447,10 @@ public enum Environment {
                 if (type == OptionType.VOID) {
                     value = "";
                 } else {
-                    String opt = Stream.of(prefixes).filter(arg::startsWith)
-                            .max(Comparator.comparing(String::length)).get();
+                    String opt = Stream.of(prefixes)
+                            .filter(arg::startsWith)
+                            .max(Comparator.comparing(String::length))
+                            .get();
                     value = arg.substring(opt.length());
                     if (value.isEmpty()) {
                         if (it.hasNext()) {
@@ -458,7 +473,7 @@ public enum Environment {
     private String[] getPrefixes() {
         final String[] prefixes;
         if (options.isEmpty()) {
-            prefixes = new String[] { "-D" + property + "=" };
+            prefixes = new String[] {"-D" + property + "="};
         } else if (property != null) {
             prefixes = new String[options.size() + 1];
             options.keySet().toArray(prefixes);
@@ -493,13 +508,16 @@ public enum Environment {
         }
         return Stream.of(values)
                 .filter(env -> !env.isInternal())
-                .sorted(Comparator.<Environment, String> comparing(env -> env.property != null ? env.property : "")
-                        .thenComparing(env -> !env.options.isEmpty() ? env.options.keySet().iterator().next() : ""))
+                .sorted(Comparator.<Environment, String>comparing(env -> env.property != null ? env.property : "")
+                        .thenComparing(env -> !env.options.isEmpty()
+                                ? env.options.keySet().iterator().next()
+                                : ""))
                 .map(env -> new DocumentedEnumEntry<>(env, props.getProperty(env.name())));
     }
 
     public enum OptionOrigin {
-        mvn, mvnd;
+        mvn,
+        mvnd;
 
         private final String prefix;
 
@@ -512,7 +530,9 @@ public enum Environment {
      * The values of {@link Environment#MAVEN_COLOR} option.
      */
     public enum Color {
-        always, never, auto;
+        always,
+        never,
+        auto;
 
         public static Optional<Color> of(String color) {
             return color == null ? Optional.empty() : Optional.of(Color.valueOf(color));
@@ -544,5 +564,4 @@ public enum Environment {
         private static final int INTERNAL = 0b10;
         private static final int OPTIONAL = 0b100;
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/InterpolationHelper.java b/common/src/main/java/org/mvndaemon/mvnd/common/InterpolationHelper.java
index 7e0a7e6..138b0cb 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/InterpolationHelper.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/InterpolationHelper.java
@@ -1,18 +1,20 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -30,8 +32,7 @@ import java.util.Properties;
  */
 public class InterpolationHelper {
 
-    private InterpolationHelper() {
-    }
+    private InterpolationHelper() {}
 
     private static final char ESCAPE_CHAR = '\\';
     private static final String DELIM_START = "${";
@@ -45,7 +46,6 @@ public class InterpolationHelper {
     public interface SubstitutionCallback {
 
         String getValue(String key);
-
     }
 
     /**
@@ -57,7 +57,8 @@ public class InterpolationHelper {
      * @param defaultsToEmptyString sets an empty string if a replacement value is not found, leaves intact
      *                              otherwise
      */
-    public static void performSubstitution(Properties properties,
+    public static void performSubstitution(
+            Properties properties,
             SubstitutionCallback callback,
             boolean substituteFromConfig,
             boolean defaultsToEmptyString) {
@@ -65,9 +66,8 @@ public class InterpolationHelper {
         properties.stringPropertyNames().forEach(n -> org.put(n, properties.getProperty(n)));
         for (String name : properties.stringPropertyNames()) {
             String value = properties.getProperty(name);
-            properties.setProperty(name,
-                    substVars(value, name, null, org, callback, substituteFromConfig,
-                            defaultsToEmptyString));
+            properties.setProperty(
+                    name, substVars(value, name, null, org, callback, substituteFromConfig, defaultsToEmptyString));
         }
     }
 
@@ -97,7 +97,8 @@ public class InterpolationHelper {
      * @throws IllegalArgumentException If there was a syntax error in the
      *                                  property placeholder syntax or a recursive variable reference.
      **/
-    public static String substVars(String val,
+    public static String substVars(
+            String val,
             String currentKey,
             Map<String, String> cycleMap,
             Map<String, String> configProps,
@@ -105,11 +106,12 @@ public class InterpolationHelper {
             boolean substituteFromConfig,
             boolean defaultsToEmptyString)
             throws IllegalArgumentException {
-        return unescape(doSubstVars(val, currentKey, cycleMap, configProps, callback, substituteFromConfig,
-                defaultsToEmptyString));
+        return unescape(doSubstVars(
+                val, currentKey, cycleMap, configProps, callback, substituteFromConfig, defaultsToEmptyString));
     }
 
-    private static String doSubstVars(String val,
+    private static String doSubstVars(
+            String val,
             String currentKey,
             Map<String, String> cycleMap,
             Map<String, String> configProps,
@@ -231,8 +233,8 @@ public class InterpolationHelper {
 
         // Now perform substitution again, since there could still
         // be substitutions to make.
-        val = doSubstVars(val, currentKey, cycleMap, configProps, callback, substituteFromConfig,
-                defaultsToEmptyString);
+        val = doSubstVars(
+                val, currentKey, cycleMap, configProps, callback, substituteFromConfig, defaultsToEmptyString);
 
         cycleMap.remove(currentKey);
 
@@ -252,5 +254,4 @@ public class InterpolationHelper {
         }
         return val;
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/IoUtils.java b/common/src/main/java/org/mvndaemon/mvnd/common/IoUtils.java
index 0d7f055..0779d23 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/IoUtils.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/IoUtils.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -26,10 +29,7 @@ public class IoUtils {
         final StringBuilder result = new StringBuilder();
         final int bufSize = 1024;
         try (Reader in = new BufferedReader(
-                new InputStreamReader(
-                        cl.getResourceAsStream(resourcePath),
-                        StandardCharsets.UTF_8),
-                bufSize)) {
+                new InputStreamReader(cl.getResourceAsStream(resourcePath), StandardCharsets.UTF_8), bufSize)) {
             int len = 0;
             char[] buf = new char[bufSize];
             while ((len = in.read(buf)) >= 0) {
@@ -39,6 +39,5 @@ public class IoUtils {
             throw new RuntimeException("Could not read a class path resource: " + resourcePath, e);
         }
         return result.toString();
-
     }
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/JavaVersion.java b/common/src/main/java/org/mvndaemon/mvnd/common/JavaVersion.java
index 1854d8b..e6eb3d1 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/JavaVersion.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/JavaVersion.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/MavenDaemon.java b/common/src/main/java/org/mvndaemon/mvnd/common/MavenDaemon.java
index d94779f..cf4bb13 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/MavenDaemon.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/MavenDaemon.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -27,24 +30,23 @@ public class MavenDaemon {
     public static void main(String[] args) throws Exception {
         final Path mvndHome = Environment.MVND_HOME.asPath();
         URL[] classpath = Stream.concat(
-                /* jars */
-                Stream.of("mvn/lib/ext", "mvn/lib", "mvn/boot")
-                        .map(mvndHome::resolve)
-                        .flatMap((Path p) -> {
-                            try {
-                                return Files.list(p);
-                            } catch (java.io.IOException e) {
-                                throw new RuntimeException("Could not list " + p, e);
-                            }
-                        })
-                        .filter(p -> {
-                            final String fileName = p.getFileName().toString();
-                            return fileName.endsWith(".jar") && !fileName.startsWith("mvnd-client-");
-                        })
-                        .filter(Files::isRegularFile),
-                /* resources */
-                Stream.of(mvndHome.resolve("mvn/conf"), mvndHome.resolve("mvn/conf/logging")))
-
+                        /* jars */
+                        Stream.of("mvn/lib/ext", "mvn/lib", "mvn/boot")
+                                .map(mvndHome::resolve)
+                                .flatMap((Path p) -> {
+                                    try {
+                                        return Files.list(p);
+                                    } catch (java.io.IOException e) {
+                                        throw new RuntimeException("Could not list " + p, e);
+                                    }
+                                })
+                                .filter(p -> {
+                                    final String fileName = p.getFileName().toString();
+                                    return fileName.endsWith(".jar") && !fileName.startsWith("mvnd-client-");
+                                })
+                                .filter(Files::isRegularFile),
+                        /* resources */
+                        Stream.of(mvndHome.resolve("mvn/conf"), mvndHome.resolve("mvn/conf/logging")))
                 .map(Path::normalize)
                 .map(Path::toUri)
                 .map(uri -> {
@@ -80,5 +82,4 @@ public class MavenDaemon {
             ((Runnable) server).run();
         }
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java
index c1ffa7d..e983b32 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/Message.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/Message.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -37,6 +40,7 @@ public abstract class Message {
     public static final int PROJECT_STARTED = 4;
     /** A {@link StringMessage} bearing the {@code artifactId} of the project whose build just finished */
     public static final int PROJECT_STOPPED = 5;
+
     public static final int MOJO_STARTED = 6;
     public static final int PROJECT_LOG_MESSAGE = 7;
     public static final int BUILD_LOG_MESSAGE = 8;
@@ -71,46 +75,46 @@ public abstract class Message {
             return null;
         }
         switch (type) {
-        case BUILD_REQUEST:
-            return BuildRequest.read(input);
-        case BUILD_STARTED:
-            return BuildStarted.read(input);
-        case BUILD_FINISHED:
-            return BuildFinished.read(input);
-        case MOJO_STARTED:
-            return MojoStartedEvent.read(input);
-        case PROJECT_LOG_MESSAGE:
-        case DISPLAY:
-            return ProjectEvent.read(type, input);
-        case BUILD_EXCEPTION:
-            return BuildException.read(input);
-        case KEEP_ALIVE:
-            return BareMessage.KEEP_ALIVE_SINGLETON;
-        case STOP:
-            return BareMessage.STOP_SINGLETON;
-        case PROMPT:
-            return Prompt.read(input);
-        case PROMPT_RESPONSE:
-            return PromptResponse.read(input);
-        case PROJECT_STARTED:
-        case PROJECT_STOPPED:
-        case BUILD_STATUS:
-        case BUILD_LOG_MESSAGE:
-            return StringMessage.read(type, input);
-        case CANCEL_BUILD:
-            return BareMessage.CANCEL_BUILD_SINGLETON;
-        case TRANSFER_INITIATED:
-        case TRANSFER_STARTED:
-        case TRANSFER_PROGRESSED:
-        case TRANSFER_CORRUPTED:
-        case TRANSFER_SUCCEEDED:
-        case TRANSFER_FAILED:
-            return TransferEvent.read(type, input);
-        case EXECUTION_FAILURE:
-            return ExecutionFailureEvent.read(input);
-        case PRINT_OUT:
-        case PRINT_ERR:
-            return StringMessage.read(type, input);
+            case BUILD_REQUEST:
+                return BuildRequest.read(input);
+            case BUILD_STARTED:
+                return BuildStarted.read(input);
+            case BUILD_FINISHED:
+                return BuildFinished.read(input);
+            case MOJO_STARTED:
+                return MojoStartedEvent.read(input);
+            case PROJECT_LOG_MESSAGE:
+            case DISPLAY:
+                return ProjectEvent.read(type, input);
+            case BUILD_EXCEPTION:
+                return BuildException.read(input);
+            case KEEP_ALIVE:
+                return BareMessage.KEEP_ALIVE_SINGLETON;
+            case STOP:
+                return BareMessage.STOP_SINGLETON;
+            case PROMPT:
+                return Prompt.read(input);
+            case PROMPT_RESPONSE:
+                return PromptResponse.read(input);
+            case PROJECT_STARTED:
+            case PROJECT_STOPPED:
+            case BUILD_STATUS:
+            case BUILD_LOG_MESSAGE:
+                return StringMessage.read(type, input);
+            case CANCEL_BUILD:
+                return BareMessage.CANCEL_BUILD_SINGLETON;
+            case TRANSFER_INITIATED:
+            case TRANSFER_STARTED:
+            case TRANSFER_PROGRESSED:
+            case TRANSFER_CORRUPTED:
+            case TRANSFER_SUCCEEDED:
+            case TRANSFER_FAILED:
+                return TransferEvent.read(type, input);
+            case EXECUTION_FAILURE:
+                return ExecutionFailureEvent.read(input);
+            case PRINT_OUT:
+            case PRINT_ERR:
+                return StringMessage.read(type, input);
         }
         throw new IllegalStateException("Unexpected message type: " + type);
     }
@@ -123,46 +127,46 @@ public abstract class Message {
 
     public static int getClassOrder(Message m) {
         switch (m.getType()) {
-        case KEEP_ALIVE:
-        case BUILD_REQUEST:
-            return 0;
-        case BUILD_STARTED:
-            return 1;
-        case PROMPT:
-        case PROMPT_RESPONSE:
-        case DISPLAY:
-        case PRINT_OUT:
-        case PRINT_ERR:
-            return 2;
-        case PROJECT_STARTED:
-            return 3;
-        case MOJO_STARTED:
-            return 4;
-        case EXECUTION_FAILURE:
-            return 10;
-        case TRANSFER_INITIATED:
-        case TRANSFER_STARTED:
-            return 40;
-        case TRANSFER_PROGRESSED:
-            return 41;
-        case TRANSFER_CORRUPTED:
-        case TRANSFER_SUCCEEDED:
-        case TRANSFER_FAILED:
-            return 42;
-        case PROJECT_LOG_MESSAGE:
-            return 50;
-        case BUILD_LOG_MESSAGE:
-            return 51;
-        case PROJECT_STOPPED:
-            return 95;
-        case BUILD_FINISHED:
-            return 96;
-        case BUILD_EXCEPTION:
-            return 97;
-        case STOP:
-            return 99;
-        default:
-            throw new IllegalStateException("Unexpected message type " + m.getType() + ": " + m);
+            case KEEP_ALIVE:
+            case BUILD_REQUEST:
+                return 0;
+            case BUILD_STARTED:
+                return 1;
+            case PROMPT:
+            case PROMPT_RESPONSE:
+            case DISPLAY:
+            case PRINT_OUT:
+            case PRINT_ERR:
+                return 2;
+            case PROJECT_STARTED:
+                return 3;
+            case MOJO_STARTED:
+                return 4;
+            case EXECUTION_FAILURE:
+                return 10;
+            case TRANSFER_INITIATED:
+            case TRANSFER_STARTED:
+                return 40;
+            case TRANSFER_PROGRESSED:
+                return 41;
+            case TRANSFER_CORRUPTED:
+            case TRANSFER_SUCCEEDED:
+            case TRANSFER_FAILED:
+                return 42;
+            case PROJECT_LOG_MESSAGE:
+                return 50;
+            case BUILD_LOG_MESSAGE:
+                return 51;
+            case PROJECT_STOPPED:
+                return 95;
+            case BUILD_FINISHED:
+                return 96;
+            case BUILD_EXCEPTION:
+                return 97;
+            case STOP:
+                return 99;
+            default:
+                throw new IllegalStateException("Unexpected message type " + m.getType() + ": " + m);
         }
     }
 
@@ -352,12 +356,11 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "BuildRequest{" +
-                    "args=" + args +
-                    ", workingDir='" + workingDir + '\'' +
-                    ", projectDir='" + projectDir + '\'' +
-                    ", env='" + env + '\'' +
-                    '}';
+            return "BuildRequest{" + "args="
+                    + args + ", workingDir='"
+                    + workingDir + '\'' + ", projectDir='"
+                    + projectDir + '\'' + ", env='"
+                    + env + '\'' + '}';
         }
 
         @Override
@@ -442,11 +445,10 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "BuildException{" +
-                    "message='" + message + '\'' +
-                    ", className='" + className + '\'' +
-                    ", stackTrace='" + stackTrace + '\'' +
-                    '}';
+            return "BuildException{" + "message='"
+                    + message + '\'' + ", className='"
+                    + className + '\'' + ", stackTrace='"
+                    + stackTrace + '\'' + '}';
         }
 
         @Override
@@ -484,18 +486,15 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return mnemonic() + "{" +
-                    "projectId='" + projectId + '\'' +
-                    ", message='" + message + '\'' +
-                    '}';
+            return mnemonic() + "{" + "projectId='" + projectId + '\'' + ", message='" + message + '\'' + '}';
         }
 
         private String mnemonic() {
             switch (type) {
-            case PROJECT_LOG_MESSAGE:
-                return "ProjectLogMessage";
-            default:
-                throw new IllegalStateException("Unexpected type " + type);
+                case PROJECT_LOG_MESSAGE:
+                    return "ProjectLogMessage";
+                default:
+                    throw new IllegalStateException("Unexpected type " + type);
             }
         }
 
@@ -525,8 +524,13 @@ public abstract class Message {
             return new MojoStartedEvent(artifactId, pluginGroupId, pluginArtifactId, pluginVersion, mojo, executionId);
         }
 
-        public MojoStartedEvent(String artifactId, String pluginGroupId, String pluginArtifactId,
-                String pluginVersion, String mojo, String executionId) {
+        public MojoStartedEvent(
+                String artifactId,
+                String pluginGroupId,
+                String pluginArtifactId,
+                String pluginVersion,
+                String mojo,
+                String executionId) {
             super(Message.MOJO_STARTED);
             this.artifactId = Objects.requireNonNull(artifactId, "artifactId cannot be null");
             this.pluginGroupId = Objects.requireNonNull(pluginGroupId, "pluginGroupId cannot be null");
@@ -562,14 +566,13 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "MojoStarted{" +
-                    "artifactId='" + artifactId + '\'' +
-                    ", pluginGroupId='" + pluginGroupId + '\'' +
-                    ", pluginArtifactId='" + pluginArtifactId + '\'' +
-                    ", pluginVersion='" + pluginVersion + '\'' +
-                    ", mojo='" + mojo + '\'' +
-                    ", executionId='" + executionId + '\'' +
-                    '}';
+            return "MojoStarted{" + "artifactId='"
+                    + artifactId + '\'' + ", pluginGroupId='"
+                    + pluginGroupId + '\'' + ", pluginArtifactId='"
+                    + pluginArtifactId + '\'' + ", pluginVersion='"
+                    + pluginVersion + '\'' + ", mojo='"
+                    + mojo + '\'' + ", executionId='"
+                    + executionId + '\'' + '}';
         }
 
         @Override
@@ -625,9 +628,9 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "BuildStarted{" +
-                    "projectId='" + projectId + "', projectCount=" + projectCount +
-                    ", maxThreads=" + maxThreads + ", artifactIdDisplayLength=" + artifactIdDisplayLength + "}";
+            return "BuildStarted{" + "projectId='"
+                    + projectId + "', projectCount=" + projectCount + ", maxThreads="
+                    + maxThreads + ", artifactIdDisplayLength=" + artifactIdDisplayLength + "}";
         }
 
         @Override
@@ -638,7 +641,6 @@ public abstract class Message {
             output.writeInt(maxThreads);
             output.writeInt(artifactIdDisplayLength);
         }
-
     }
 
     public static class BareMessage extends Message {
@@ -654,19 +656,18 @@ public abstract class Message {
         @Override
         public String toString() {
             switch (type) {
-            case KEEP_ALIVE:
-                return "KeepAlive";
-            case BUILD_FINISHED:
-                return "BuildStopped";
-            case STOP:
-                return "Stop";
-            case CANCEL_BUILD:
-                return "BuildCanceled";
-            default:
-                throw new IllegalStateException("Unexpected type " + type);
+                case KEEP_ALIVE:
+                    return "KeepAlive";
+                case BUILD_FINISHED:
+                    return "BuildStopped";
+                case STOP:
+                    return "Stop";
+                case CANCEL_BUILD:
+                    return "BuildCanceled";
+                default:
+                    throw new IllegalStateException("Unexpected type " + type);
             }
         }
-
     }
 
     public static class StringMessage extends Message {
@@ -700,27 +701,26 @@ public abstract class Message {
 
         private String mnemonic() {
             switch (type) {
-            case PROJECT_STARTED:
-                return "ProjectStarted";
-            case PROJECT_STOPPED:
-                return "ProjectStopped";
-            case BUILD_STATUS:
-                return "BuildStatus";
-            case KEYBOARD_INPUT:
-                return "KeyboardInput";
-            case BUILD_LOG_MESSAGE:
-                return "BuildLogMessage";
-            case DISPLAY:
-                return "Display";
-            case PRINT_OUT:
-                return "PrintOut";
-            case PRINT_ERR:
-                return "PrintErr";
-            default:
-                throw new IllegalStateException("Unexpected type " + type);
+                case PROJECT_STARTED:
+                    return "ProjectStarted";
+                case PROJECT_STOPPED:
+                    return "ProjectStopped";
+                case BUILD_STATUS:
+                    return "BuildStatus";
+                case KEYBOARD_INPUT:
+                    return "KeyboardInput";
+                case BUILD_LOG_MESSAGE:
+                    return "BuildLogMessage";
+                case DISPLAY:
+                    return "Display";
+                case PRINT_OUT:
+                    return "PrintOut";
+                case PRINT_ERR:
+                    return "PrintErr";
+                default:
+                    throw new IllegalStateException("Unexpected type " + type);
             }
         }
-
     }
 
     public static class Prompt extends Message {
@@ -764,12 +764,11 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "Prompt{" +
-                    "projectId='" + projectId + '\'' +
-                    ", uid='" + uid + '\'' +
-                    ", message='" + message + '\'' +
-                    ", password=" + password +
-                    '}';
+            return "Prompt{" + "projectId='"
+                    + projectId + '\'' + ", uid='"
+                    + uid + '\'' + ", message='"
+                    + message + '\'' + ", password="
+                    + password + '}';
         }
 
         @Override
@@ -784,7 +783,6 @@ public abstract class Message {
         public PromptResponse response(String message) {
             return new PromptResponse(projectId, uid, message);
         }
-
     }
 
     public static class PromptResponse extends Message {
@@ -821,11 +819,10 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "PromptResponse{" +
-                    "projectId='" + projectId + '\'' +
-                    ", uid='" + uid + '\'' +
-                    ", message='" + message + '\'' +
-                    '}';
+            return "PromptResponse{" + "projectId='"
+                    + projectId + '\'' + ", uid='"
+                    + uid + '\'' + ", message='"
+                    + message + '\'' + '}';
         }
 
         @Override
@@ -864,11 +861,10 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return "ExecutionFailure{" +
-                    "projectId='" + projectId + '\'' +
-                    ", halted=" + halted +
-                    ", exception='" + exception + '\'' +
-                    '}';
+            return "ExecutionFailure{" + "projectId='"
+                    + projectId + '\'' + ", halted="
+                    + halted + ", exception='"
+                    + exception + '\'' + '}';
         }
 
         @Override
@@ -909,9 +905,15 @@ public abstract class Message {
         final long transferredBytes;
         final String exception;
 
-        private TransferEvent(int type, String projectId, int requestType,
-                String repositoryId, String repositoryUrl,
-                String resourceName, long contentLength, long transferredBytes,
+        private TransferEvent(
+                int type,
+                String projectId,
+                int requestType,
+                String repositoryId,
+                String repositoryUrl,
+                String resourceName,
+                long contentLength,
+                long transferredBytes,
                 String exception) {
             super(type);
             this.projectId = projectId;
@@ -958,34 +960,33 @@ public abstract class Message {
 
         @Override
         public String toString() {
-            return mnemonic() + "{" +
-                    "projectId=" + projectId +
-                    ", requestType=" + requestType +
-                    ", repositoryId='" + repositoryId + '\'' +
-                    ", repositoryUrl='" + repositoryUrl + '\'' +
-                    ", resourceName='" + resourceName + '\'' +
-                    ", contentLength=" + contentLength +
-                    ", transferredBytes=" + transferredBytes +
-                    ", exception='" + exception + '\'' +
-                    '}';
+            return mnemonic() + "{" + "projectId="
+                    + projectId + ", requestType="
+                    + requestType + ", repositoryId='"
+                    + repositoryId + '\'' + ", repositoryUrl='"
+                    + repositoryUrl + '\'' + ", resourceName='"
+                    + resourceName + '\'' + ", contentLength="
+                    + contentLength + ", transferredBytes="
+                    + transferredBytes + ", exception='"
+                    + exception + '\'' + '}';
         }
 
         private String mnemonic() {
             switch (type) {
-            case TRANSFER_INITIATED:
-                return "TransferInitiated";
-            case TRANSFER_STARTED:
-                return "TransferStarted";
-            case TRANSFER_PROGRESSED:
-                return "TransferProgressed";
-            case TRANSFER_CORRUPTED:
-                return "TransferCorrupted";
-            case TRANSFER_SUCCEEDED:
-                return "TransferSucceeded";
-            case TRANSFER_FAILED:
-                return "TransferFailed";
-            default:
-                throw new IllegalStateException("Unexpected type " + type);
+                case TRANSFER_INITIATED:
+                    return "TransferInitiated";
+                case TRANSFER_STARTED:
+                    return "TransferStarted";
+                case TRANSFER_PROGRESSED:
+                    return "TransferProgressed";
+                case TRANSFER_CORRUPTED:
+                    return "TransferCorrupted";
+                case TRANSFER_SUCCEEDED:
+                    return "TransferSucceeded";
+                case TRANSFER_FAILED:
+                    return "TransferFailed";
+                default:
+                    throw new IllegalStateException("Unexpected type " + type);
             }
         }
 
@@ -1011,8 +1012,16 @@ public abstract class Message {
             long contentLength = input.readLong();
             long transferredBytes = input.readLong();
             String exception = readUTF(input);
-            return new TransferEvent(type, projectId, request, repositoryId, repositoryUrl, resourceName,
-                    contentLength, transferredBytes, exception);
+            return new TransferEvent(
+                    type,
+                    projectId,
+                    request,
+                    repositoryId,
+                    repositoryUrl,
+                    resourceName,
+                    contentLength,
+                    transferredBytes,
+                    exception);
         }
     }
 
@@ -1060,8 +1069,13 @@ public abstract class Message {
         return new ExecutionFailureEvent(projectId, halted, exception);
     }
 
-    public static Message mojoStarted(String artifactId, String pluginGroupId, String pluginArtifactId,
-            String pluginVersion, String mojo, String executionId) {
+    public static Message mojoStarted(
+            String artifactId,
+            String pluginGroupId,
+            String pluginArtifactId,
+            String pluginVersion,
+            String mojo,
+            String executionId) {
         return new MojoStartedEvent(artifactId, pluginGroupId, pluginArtifactId, pluginVersion, mojo, executionId);
     }
 
@@ -1069,12 +1083,25 @@ public abstract class Message {
         return new ProjectEvent(Message.DISPLAY, projectId, message);
     }
 
-    public static TransferEvent transfer(String projectId, int transferEventType, int requestType,
-            String repositoryId, String repositoryUrl,
-            String resourceName, long contentLength, long transferredBytes,
+    public static TransferEvent transfer(
+            String projectId,
+            int transferEventType,
+            int requestType,
+            String repositoryId,
+            String repositoryUrl,
+            String resourceName,
+            long contentLength,
+            long transferredBytes,
             String exception) {
-        return new TransferEvent(transferEventType, projectId, requestType,
-                repositoryId, repositoryUrl, resourceName, contentLength, transferredBytes, exception);
+        return new TransferEvent(
+                transferEventType,
+                projectId,
+                requestType,
+                repositoryId,
+                repositoryUrl,
+                resourceName,
+                contentLength,
+                transferredBytes,
+                exception);
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java b/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java
index cbf49ec..9f73fde 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/OptionType.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/Os.java b/common/src/main/java/org/mvndaemon/mvnd/common/Os.java
index 6870163..cef74ff 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/Os.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/Os.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -22,6 +25,7 @@ public enum Os {
     MAC(true),
     WINDOWS(false) {
         private boolean cygwin;
+
         {
             String pwd = System.getenv("PWD");
             cygwin = pwd != null && pwd.startsWith("/");
@@ -38,10 +42,10 @@ public enum Os {
         public boolean isUnixLike() {
             throw new UnsupportedOperationException("Cannot tell isUnixLike() for an " + UNKNOWN.name() + " OS");
         }
-
     };
 
     private static final Os CURRENT;
+
     static {
         final String osName = System.getProperty("os.name").toLowerCase(Locale.ROOT);
         if (osName.startsWith("osx") || osName.startsWith("mac os x")) {
@@ -72,5 +76,4 @@ public enum Os {
     public boolean isCygwin() {
         return false;
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/OsUtils.java b/common/src/main/java/org/mvndaemon/mvnd/common/OsUtils.java
index fd4170e..eb0569d 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/OsUtils.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/OsUtils.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -35,9 +38,7 @@ public class OsUtils {
     private static final long KB = 1024;
     private static final String UNITS = "Bkmgt";
 
-    private OsUtils() {
-
-    }
+    private OsUtils() {}
 
     public static String bytesTohumanReadable(long bytes) {
         int unit = 0;
@@ -46,7 +47,10 @@ public class OsUtils {
             unit++;
         }
         String kbString = String.valueOf(bytes);
-        return new StringBuilder(kbString.length() + 1).append(kbString).append(UNITS.charAt(unit)).toString();
+        return new StringBuilder(kbString.length() + 1)
+                .append(kbString)
+                .append(UNITS.charAt(unit))
+                .toString();
     }
 
     public static String kbTohumanReadable(long kb) {
@@ -56,22 +60,26 @@ public class OsUtils {
             unit++;
         }
         String kbString = String.valueOf(kb);
-        return new StringBuilder(kbString.length() + 1).append(kbString).append(UNITS.charAt(unit)).toString();
+        return new StringBuilder(kbString.length() + 1)
+                .append(kbString)
+                .append(UNITS.charAt(unit))
+                .toString();
     }
 
     public static long findProcessRssInKb(long pid) {
         final Os os = Os.current();
         if (os.isUnixLike()) {
-            String[] cmd = { "ps", "-o", "rss=", "-p", String.valueOf(pid) };
+            String[] cmd = {"ps", "-o", "rss=", "-p", String.valueOf(pid)};
             final List<String> output = new ArrayList<String>(1);
             exec(cmd, output);
             if (output.size() == 1) {
                 try {
                     return Long.parseLong(output.get(0).trim());
                 } catch (NumberFormatException e) {
-                    LOGGER.warn("Could not parse the output of " + Stream.of(cmd).collect(Collectors.joining(" "))
-                            + " as a long:\n"
-                            + output.stream().collect(Collectors.joining("\n")));
+                    LOGGER.warn(
+                            "Could not parse the output of " + Stream.of(cmd).collect(Collectors.joining(" "))
+                                    + " as a long:\n"
+                                    + output.stream().collect(Collectors.joining("\n")));
                 }
             } else {
                 LOGGER.warn("Unexpected output of " + Stream.of(cmd).collect(Collectors.joining(" ")) + ":\n"
@@ -79,15 +87,17 @@ public class OsUtils {
             }
             return -1;
         } else if (os == Os.WINDOWS) {
-            String[] cmd = { "wmic", "process", "where", "processid=" + pid, "get", "WorkingSetSize" };
+            String[] cmd = {"wmic", "process", "where", "processid=" + pid, "get", "WorkingSetSize"};
             final List<String> output = new ArrayList<String>(1);
             exec(cmd, output);
-            final List<String> nonEmptyLines = output.stream().filter(l -> !l.isEmpty()).collect(Collectors.toList());
+            final List<String> nonEmptyLines =
+                    output.stream().filter(l -> !l.isEmpty()).collect(Collectors.toList());
             if (nonEmptyLines.size() >= 2) {
                 try {
                     return Long.parseLong(nonEmptyLines.get(1).trim()) / KB;
                 } catch (NumberFormatException e) {
-                    LOGGER.warn("Could not parse the second line of " + Stream.of(cmd).collect(Collectors.joining(" "))
+                    LOGGER.warn("Could not parse the second line of "
+                            + Stream.of(cmd).collect(Collectors.joining(" "))
                             + " output as a long:\n"
                             + nonEmptyLines.stream().collect(Collectors.joining("\n")));
                 }
@@ -102,11 +112,11 @@ public class OsUtils {
     }
 
     public static String findJavaHomeFromPath() {
-        String[] cmd = { "java", "-XshowSettings:properties", "-version" };
+        String[] cmd = {"java", "-XshowSettings:properties", "-version"};
         final List<String> output = new ArrayList<String>(1);
         exec(cmd, output);
-        List<String> javaHomeLines = output.stream().filter(l -> l.contains(" java.home = "))
-                .collect(Collectors.toList());
+        List<String> javaHomeLines =
+                output.stream().filter(l -> l.contains(" java.home = ")).collect(Collectors.toList());
         if (javaHomeLines.size() == 1) {
             return javaHomeLines.get(0).trim().replaceFirst("java.home = ", "");
         }
@@ -210,6 +220,5 @@ public class OsUtils {
             final int exitCode = timeouted ? TIMEOUT_EXIT_CODE : process.exitValue();
             return exitCode;
         }
-
     }
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/ProcessHelper.java b/common/src/main/java/org/mvndaemon/mvnd/common/ProcessHelper.java
index 17acbdb..97bbd7f 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/ProcessHelper.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/ProcessHelper.java
@@ -1,23 +1,24 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
 public class ProcessHelper {
 
-    public static void killChildrenProcesses() {
-    }
-
+    public static void killChildrenProcesses() {}
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/SocketFamily.java b/common/src/main/java/org/mvndaemon/mvnd/common/SocketFamily.java
index 1a8cb9e..243244d 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/SocketFamily.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/SocketFamily.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -32,23 +35,23 @@ public enum SocketFamily {
 
     public SocketChannel openSocket() throws IOException {
         switch (this) {
-        case inet:
-            return SocketChannel.open();
-        case unix:
-            return SocketHelper.openUnixSocket();
-        default:
-            throw new IllegalStateException();
+            case inet:
+                return SocketChannel.open();
+            case unix:
+                return SocketHelper.openUnixSocket();
+            default:
+                throw new IllegalStateException();
         }
     }
 
     public ServerSocketChannel openServerSocket() throws IOException {
         switch (this) {
-        case inet:
-            return ServerSocketChannel.open().bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
-        case unix:
-            return SocketHelper.openUnixServerSocket();
-        default:
-            throw new IllegalStateException();
+            case inet:
+                return ServerSocketChannel.open().bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), 0), 0);
+            case unix:
+                return SocketHelper.openUnixServerSocket();
+            default:
+                throw new IllegalStateException();
         }
     }
 
@@ -105,26 +108,26 @@ public enum SocketFamily {
 
     public static String toString(SocketAddress address) {
         switch (familyOf(address)) {
-        case inet:
-            InetSocketAddress isa = (InetSocketAddress) address;
-            String host = isa.getHostString();
-            InetAddress addr = isa.getAddress();
-            int port = isa.getPort();
-            String formatted;
-            if (addr == null) {
-                formatted = host + "/<unresolved>";
-            } else {
-                formatted = addr.toString();
-                if (addr instanceof Inet6Address) {
-                    int i = formatted.lastIndexOf("/");
-                    formatted = formatted.substring(0, i + 1) + "[" + formatted.substring(i + 1) + "]";
+            case inet:
+                InetSocketAddress isa = (InetSocketAddress) address;
+                String host = isa.getHostString();
+                InetAddress addr = isa.getAddress();
+                int port = isa.getPort();
+                String formatted;
+                if (addr == null) {
+                    formatted = host + "/<unresolved>";
+                } else {
+                    formatted = addr.toString();
+                    if (addr instanceof Inet6Address) {
+                        int i = formatted.lastIndexOf("/");
+                        formatted = formatted.substring(0, i + 1) + "[" + formatted.substring(i + 1) + "]";
+                    }
                 }
-            }
-            return "inet:" + formatted + ":" + port;
-        case unix:
-            return "unix:" + address;
-        default:
-            throw new IllegalArgumentException("Unsupported socket address: '" + address + "'");
+                return "inet:" + formatted + ":" + port;
+            case unix:
+                return "unix:" + address;
+            default:
+                throw new IllegalArgumentException("Unsupported socket address: '" + address + "'");
         }
     }
 
@@ -137,5 +140,4 @@ public enum SocketFamily {
             throw new IllegalArgumentException("Unsupported socket address '" + address + "'");
         }
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/SocketHelper.java b/common/src/main/java/org/mvndaemon/mvnd/common/SocketHelper.java
index 765777b..96b1dbb 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/SocketHelper.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/SocketHelper.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/TimeUtils.java b/common/src/main/java/org/mvndaemon/mvnd/common/TimeUtils.java
index d5abefd..8d676ae 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/TimeUtils.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/TimeUtils.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -32,19 +35,17 @@ public final class TimeUtils {
     public static final long SECONDS_MILLIS = TimeUnit.SECONDS.toMillis(ONE_UNIT);
 
     private static final Pattern DURATION_PATTERN = Pattern.compile(
-            "(?<n>-?\\d+)" +
-                    "|" +
-                    "(" +
-                    "((?<d>\\d+)\\s*d(ay(s)?)?)?" + "\\s*" +
-                    "((?<h>\\d+)\\s*h(our(s)?)?)?" + "\\s*" +
-                    "((?<m>\\d+)\\s*m(in(ute(s)?)?)?)?" + "\\s*" +
-                    "((?<s>\\d+(\\.\\d+)?)\\s*s(ec(ond(s)?)?)?)?" + "\\s*" +
-                    "((?<l>\\d+(\\.\\d+)?)\\s*m(illi)?s(ec(ond)?(s)?)?)?" +
-                    ")",
+            "(?<n>-?\\d+)" + "|"
+                    + "("
+                    + "((?<d>\\d+)\\s*d(ay(s)?)?)?"
+                    + "\\s*" + "((?<h>\\d+)\\s*h(our(s)?)?)?"
+                    + "\\s*" + "((?<m>\\d+)\\s*m(in(ute(s)?)?)?)?"
+                    + "\\s*" + "((?<s>\\d+(\\.\\d+)?)\\s*s(ec(ond(s)?)?)?)?"
+                    + "\\s*" + "((?<l>\\d+(\\.\\d+)?)\\s*m(illi)?s(ec(ond)?(s)?)?)?"
+                    + ")",
             Pattern.CASE_INSENSITIVE);
 
-    private TimeUtils() {
-    }
+    private TimeUtils() {}
 
     public static boolean isPositive(Duration dur) {
         return dur.getSeconds() > 0 || dur.getNano() != 0;
@@ -117,5 +118,4 @@ public final class TimeUtils {
                     + (l != null ? TimeUnit.MILLISECONDS.toMillis(Long.parseLong(l)) : 0);
         }
     }
-
 }
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/logging/ClientOutput.java b/common/src/main/java/org/mvndaemon/mvnd/common/logging/ClientOutput.java
index 9d55552..0d1425a 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/logging/ClientOutput.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/logging/ClientOutput.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common.logging;
 
diff --git a/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java b/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java
index e5feec2..d5393cb 100644
--- a/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java
+++ b/common/src/main/java/org/mvndaemon/mvnd/common/logging/TerminalOutput.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common.logging;
 
@@ -122,10 +125,12 @@ public class TerminalOutput implements ClientOutput {
     private int totalProjects;
     /** String format for formatting the number of projects done with padding based on {@link #totalProjects} */
     private String projectsDoneFomat;
+
     private int maxThreads;
     private String artifactIdFormat;
     /** String format for formatting the actual/hidden/max thread counts */
     private String threadsFormat;
+
     private int linesPerProject = 0;
     private int doneProjects = 0;
     private String buildStatus;
@@ -164,8 +169,8 @@ public class TerminalOutput implements ClientOutput {
                 mainThread.interrupt();
             }
         };
-        this.previousIntHandler = terminal.handle(Terminal.Signal.INT,
-                sig -> daemonDispatch.accept(Message.BareMessage.CANCEL_BUILD_SINGLETON));
+        this.previousIntHandler = terminal.handle(
+                Terminal.Signal.INT, sig -> daemonDispatch.accept(Message.BareMessage.CANCEL_BUILD_SINGLETON));
         this.display = new Display(terminal, false);
         this.log = logFile == null ? new MessageCollector() : new FileLog(logFile);
         if (!dumb) {
@@ -214,228 +219,230 @@ public class TerminalOutput implements ClientOutput {
 
     private boolean doAccept(Message entry) {
         switch (entry.getType()) {
-        case Message.BUILD_STARTED: {
-            BuildStarted bs = (BuildStarted) entry;
-            this.name = bs.getProjectId();
-            this.totalProjects = bs.getProjectCount();
-            final int totalProjectsDigits = (int) (Math.log10(totalProjects) + 1);
-            this.projectsDoneFomat = "%" + totalProjectsDigits + "d";
-            this.maxThreads = bs.getMaxThreads();
-            this.artifactIdFormat = "%-" + bs.getArtifactIdDisplayLength() + "s ";
-            final int maxThreadsDigits = (int) (Math.log10(maxThreads) + 1);
-            this.threadsFormat = "%" + (maxThreadsDigits * 3 + 2) + "s";
-            if (maxThreads <= 1 || totalProjects <= 1) {
-                this.noBuffering = true;
-                display.update(Collections.emptyList(), 0);
-                applyNoBuffering();
-            }
-            break;
-        }
-        case Message.CANCEL_BUILD: {
-            projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
-            clearDisplay();
-            try {
-                log.close();
-            } catch (IOException e1) {
-                throw new RuntimeException(e1);
-            }
-            final AttributedStyle s = new AttributedStyle().bold().foreground(AttributedStyle.RED);
-            new AttributedString("The build was canceled", s).println(terminal);
-            terminal.flush();
-            return false;
-        }
-        case Message.BUILD_EXCEPTION: {
-            final BuildException e = (BuildException) entry;
-            final String msg;
-            if ("org.apache.commons.cli.UnrecognizedOptionException".equals(e.getClassName())) {
-                msg = "Unable to parse command line options: " + e.getMessage();
-            } else {
-                msg = e.getClassName() + ": " + e.getMessage();
+            case Message.BUILD_STARTED: {
+                BuildStarted bs = (BuildStarted) entry;
+                this.name = bs.getProjectId();
+                this.totalProjects = bs.getProjectCount();
+                final int totalProjectsDigits = (int) (Math.log10(totalProjects) + 1);
+                this.projectsDoneFomat = "%" + totalProjectsDigits + "d";
+                this.maxThreads = bs.getMaxThreads();
+                this.artifactIdFormat = "%-" + bs.getArtifactIdDisplayLength() + "s ";
+                final int maxThreadsDigits = (int) (Math.log10(maxThreads) + 1);
+                this.threadsFormat = "%" + (maxThreadsDigits * 3 + 2) + "s";
+                if (maxThreads <= 1 || totalProjects <= 1) {
+                    this.noBuffering = true;
+                    display.update(Collections.emptyList(), 0);
+                    applyNoBuffering();
+                }
+                break;
             }
-            projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
-            clearDisplay();
-            try {
-                log.close();
-            } catch (IOException e1) {
-                throw new RuntimeException(e1);
+            case Message.CANCEL_BUILD: {
+                projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
+                clearDisplay();
+                try {
+                    log.close();
+                } catch (IOException e1) {
+                    throw new RuntimeException(e1);
+                }
+                final AttributedStyle s = new AttributedStyle().bold().foreground(AttributedStyle.RED);
+                new AttributedString("The build was canceled", s).println(terminal);
+                terminal.flush();
+                return false;
             }
-            final AttributedStyle s = new AttributedStyle().bold().foreground(AttributedStyle.RED);
-            new AttributedString(msg, s).println(terminal);
-            terminal.flush();
-            return false;
-        }
-        case Message.PROJECT_STARTED: {
-            StringMessage be = (StringMessage) entry;
-            final String artifactId = be.getMessage();
-            projects.put(artifactId, new Project(artifactId));
-            break;
-        }
-        case Message.MOJO_STARTED: {
-            final MojoStartedEvent execution = (MojoStartedEvent) entry;
-            final Project prj = projects.computeIfAbsent(execution.getArtifactId(), Project::new);
-            prj.runningExecution = execution;
-            break;
-        }
-        case Message.PROJECT_STOPPED: {
-            StringMessage be = (StringMessage) entry;
-            final String artifactId = be.getMessage();
-            Project prj = projects.remove(artifactId);
-            if (prj != null) {
-                prj.log.forEach(log);
-            }
-            doneProjects++;
-            displayDone();
-            break;
-        }
-        case Message.BUILD_STATUS: {
-            this.buildStatus = ((StringMessage) entry).getMessage();
-            break;
-        }
-        case Message.BUILD_FINISHED: {
-            projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
-            clearDisplay();
-            try {
-                log.close();
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            } finally {
+            case Message.BUILD_EXCEPTION: {
+                final BuildException e = (BuildException) entry;
+                final String msg;
+                if ("org.apache.commons.cli.UnrecognizedOptionException".equals(e.getClassName())) {
+                    msg = "Unable to parse command line options: " + e.getMessage();
+                } else {
+                    msg = e.getClassName() + ": " + e.getMessage();
+                }
+                projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
+                clearDisplay();
+                try {
+                    log.close();
+                } catch (IOException e1) {
+                    throw new RuntimeException(e1);
+                }
+                final AttributedStyle s = new AttributedStyle().bold().foreground(AttributedStyle.RED);
+                new AttributedString(msg, s).println(terminal);
                 terminal.flush();
+                return false;
             }
-            return false;
-        }
-        case Message.KEEP_ALIVE: {
-            break;
-        }
-        case Message.DISPLAY: {
-            Message.StringMessage d = (Message.StringMessage) entry;
-            clearDisplay();
-            terminal.writer().printf("%s%n", d.getMessage());
-            break;
-        }
-        case Message.PRINT_OUT: {
-            Message.StringMessage d = (Message.StringMessage) entry;
-            clearDisplay();
-            System.out.printf("%s%n", d.getMessage());
-            break;
-        }
-        case Message.PRINT_ERR: {
-            Message.StringMessage d = (Message.StringMessage) entry;
-            clearDisplay();
-            System.err.printf("%s%n", d.getMessage());
-            break;
-        }
-        case Message.PROMPT: {
-            Message.Prompt prompt = (Message.Prompt) entry;
-            if (dumb) {
-                terminal.writer().println("");
+            case Message.PROJECT_STARTED: {
+                StringMessage be = (StringMessage) entry;
+                final String artifactId = be.getMessage();
+                projects.put(artifactId, new Project(artifactId));
                 break;
             }
-            readInput.writeLock().lock();
-            try {
+            case Message.MOJO_STARTED: {
+                final MojoStartedEvent execution = (MojoStartedEvent) entry;
+                final Project prj = projects.computeIfAbsent(execution.getArtifactId(), Project::new);
+                prj.runningExecution = execution;
+                break;
+            }
+            case Message.PROJECT_STOPPED: {
+                StringMessage be = (StringMessage) entry;
+                final String artifactId = be.getMessage();
+                Project prj = projects.remove(artifactId);
+                if (prj != null) {
+                    prj.log.forEach(log);
+                }
+                doneProjects++;
+                displayDone();
+                break;
+            }
+            case Message.BUILD_STATUS: {
+                this.buildStatus = ((StringMessage) entry).getMessage();
+                break;
+            }
+            case Message.BUILD_FINISHED: {
+                projects.values().stream().flatMap(p -> p.log.stream()).forEach(log);
                 clearDisplay();
-                terminal.writer().printf("[%s] %s", prompt.getProjectId(), prompt.getMessage());
-                terminal.flush();
-                StringBuilder sb = new StringBuilder();
-                while (true) {
-                    int c = terminal.reader().read();
-                    if (c < 0) {
-                        break;
-                    } else if (c == '\n' || c == '\r') {
-                        terminal.writer().println();
-                        daemonDispatch.accept(prompt.response(sb.toString()));
-                        break;
-                    } else if (c == 127) {
-                        if (sb.length() > 0) {
-                            sb.setLength(sb.length() - 1);
-                            terminal.writer().write("\b \b");
+                try {
+                    log.close();
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                } finally {
+                    terminal.flush();
+                }
+                return false;
+            }
+            case Message.KEEP_ALIVE: {
+                break;
+            }
+            case Message.DISPLAY: {
+                Message.StringMessage d = (Message.StringMessage) entry;
+                clearDisplay();
+                terminal.writer().printf("%s%n", d.getMessage());
+                break;
+            }
+            case Message.PRINT_OUT: {
+                Message.StringMessage d = (Message.StringMessage) entry;
+                clearDisplay();
+                System.out.printf("%s%n", d.getMessage());
+                break;
+            }
+            case Message.PRINT_ERR: {
+                Message.StringMessage d = (Message.StringMessage) entry;
+                clearDisplay();
+                System.err.printf("%s%n", d.getMessage());
+                break;
+            }
+            case Message.PROMPT: {
+                Message.Prompt prompt = (Message.Prompt) entry;
+                if (dumb) {
+                    terminal.writer().println("");
+                    break;
+                }
+                readInput.writeLock().lock();
+                try {
+                    clearDisplay();
+                    terminal.writer().printf("[%s] %s", prompt.getProjectId(), prompt.getMessage());
+                    terminal.flush();
+                    StringBuilder sb = new StringBuilder();
+                    while (true) {
+                        int c = terminal.reader().read();
+                        if (c < 0) {
+                            break;
+                        } else if (c == '\n' || c == '\r') {
+                            terminal.writer().println();
+                            daemonDispatch.accept(prompt.response(sb.toString()));
+                            break;
+                        } else if (c == 127) {
+                            if (sb.length() > 0) {
+                                sb.setLength(sb.length() - 1);
+                                terminal.writer().write("\b \b");
+                                terminal.writer().flush();
+                            }
+                        } else {
+                            terminal.writer().print((char) c);
                             terminal.writer().flush();
+                            sb.append((char) c);
                         }
-                    } else {
-                        terminal.writer().print((char) c);
-                        terminal.writer().flush();
-                        sb.append((char) c);
                     }
+                } catch (IOException e) {
+                    throw new RuntimeException(e);
+                } finally {
+                    readInput.writeLock().unlock();
                 }
-            } catch (IOException e) {
-                throw new RuntimeException(e);
-            } finally {
-                readInput.writeLock().unlock();
-            }
-            break;
-        }
-        case Message.BUILD_LOG_MESSAGE: {
-            StringMessage sm = (StringMessage) entry;
-            log.accept(sm.getMessage());
-            break;
-        }
-        case Message.PROJECT_LOG_MESSAGE: {
-            final ProjectEvent bm = (ProjectEvent) entry;
-            final Project prj = projects.get(bm.getProjectId());
-            if (prj == null) {
-                log.accept(bm.getMessage());
-            } else if (noBuffering || dumb) {
-                String msg;
-                if (maxThreads > 1) {
-                    msg = String.format("[%s] %s", bm.getProjectId(), bm.getMessage());
-                } else {
-                    msg = bm.getMessage();
-                }
-                log.accept(msg);
-            } else {
-                prj.log.add(bm.getMessage());
-            }
-            break;
-        }
-        case Message.KEYBOARD_INPUT: {
-            char keyStroke = ((StringMessage) entry).getMessage().charAt(0);
-            switch (keyStroke) {
-            case KEY_PLUS:
-                linesPerProject = Math.min(10, linesPerProject + 1);
                 break;
-            case KEY_MINUS:
-                linesPerProject = Math.max(0, linesPerProject - 1);
+            }
+            case Message.BUILD_LOG_MESSAGE: {
+                StringMessage sm = (StringMessage) entry;
+                log.accept(sm.getMessage());
                 break;
-            case KEY_CTRL_B:
-                noBuffering = !noBuffering;
-                if (noBuffering) {
-                    applyNoBuffering();
+            }
+            case Message.PROJECT_LOG_MESSAGE: {
+                final ProjectEvent bm = (ProjectEvent) entry;
+                final Project prj = projects.get(bm.getProjectId());
+                if (prj == null) {
+                    log.accept(bm.getMessage());
+                } else if (noBuffering || dumb) {
+                    String msg;
+                    if (maxThreads > 1) {
+                        msg = String.format("[%s] %s", bm.getProjectId(), bm.getMessage());
+                    } else {
+                        msg = bm.getMessage();
+                    }
+                    log.accept(msg);
                 } else {
-                    clearDisplay();
+                    prj.log.add(bm.getMessage());
                 }
                 break;
-            case KEY_CTRL_L:
-                clearDisplay();
+            }
+            case Message.KEYBOARD_INPUT: {
+                char keyStroke = ((StringMessage) entry).getMessage().charAt(0);
+                switch (keyStroke) {
+                    case KEY_PLUS:
+                        linesPerProject = Math.min(10, linesPerProject + 1);
+                        break;
+                    case KEY_MINUS:
+                        linesPerProject = Math.max(0, linesPerProject - 1);
+                        break;
+                    case KEY_CTRL_B:
+                        noBuffering = !noBuffering;
+                        if (noBuffering) {
+                            applyNoBuffering();
+                        } else {
+                            clearDisplay();
+                        }
+                        break;
+                    case KEY_CTRL_L:
+                        clearDisplay();
+                        break;
+                    case KEY_CTRL_M:
+                        displayDone = !displayDone;
+                        displayDone();
+                        break;
+                }
                 break;
-            case KEY_CTRL_M:
-                displayDone = !displayDone;
-                displayDone();
+            }
+            case Message.TRANSFER_INITIATED:
+            case Message.TRANSFER_STARTED:
+            case Message.TRANSFER_PROGRESSED: {
+                final TransferEvent te = (TransferEvent) entry;
+                transfers
+                        .computeIfAbsent(orEmpty(te.getProjectId()), p -> new LinkedHashMap<>())
+                        .put(te.getResourceName(), te);
                 break;
             }
-            break;
-        }
-        case Message.TRANSFER_INITIATED:
-        case Message.TRANSFER_STARTED:
-        case Message.TRANSFER_PROGRESSED: {
-            final TransferEvent te = (TransferEvent) entry;
-            transfers.computeIfAbsent(orEmpty(te.getProjectId()), p -> new LinkedHashMap<>())
-                    .put(te.getResourceName(), te);
-            break;
-        }
-        case Message.TRANSFER_CORRUPTED:
-        case Message.TRANSFER_SUCCEEDED:
-        case Message.TRANSFER_FAILED: {
-            final TransferEvent te = (TransferEvent) entry;
-            transfers.computeIfAbsent(orEmpty(te.getProjectId()), p -> new LinkedHashMap<>())
-                    .remove(te.getResourceName());
-            break;
-        }
-        case Message.EXECUTION_FAILURE: {
-            final ExecutionFailureEvent efe = (ExecutionFailureEvent) entry;
-            failures.add(efe);
-            break;
-        }
-        default:
-            throw new IllegalStateException("Unexpected message " + entry);
+            case Message.TRANSFER_CORRUPTED:
+            case Message.TRANSFER_SUCCEEDED:
+            case Message.TRANSFER_FAILED: {
+                final TransferEvent te = (TransferEvent) entry;
+                transfers
+                        .computeIfAbsent(orEmpty(te.getProjectId()), p -> new LinkedHashMap<>())
+                        .remove(te.getResourceName());
+                break;
+            }
+            case Message.EXECUTION_FAILURE: {
+                final ExecutionFailureEvent efe = (ExecutionFailureEvent) entry;
+                failures.add(efe);
+                break;
+            }
+            default:
+                throw new IllegalStateException("Unexpected message " + entry);
         }
 
         return true;
@@ -455,7 +462,11 @@ public class TerminalOutput implements ClientOutput {
         StringBuilder sb = new StringBuilder();
         sb.append("Terminal: ").append(terminal != null ? terminal.getClass().getName() : null);
         if (terminal instanceof AbstractPosixTerminal) {
-            sb.append(" with pty ").append(((AbstractPosixTerminal) terminal).getPty().getClass().getName());
+            sb.append(" with pty ")
+                    .append(((AbstractPosixTerminal) terminal)
+                            .getPty()
+                            .getClass()
+                            .getName());
         }
         this.accept(Message.log(sb.toString()));
     }
@@ -589,9 +600,8 @@ public class TerminalOutput implements ClientOutput {
                 }
             }
         }
-        List<AttributedString> trimmed = lines.stream()
-                .map(s -> s.columnSubSequence(0, cols))
-                .collect(Collectors.toList());
+        List<AttributedString> trimmed =
+                lines.stream().map(s -> s.columnSubSequence(0, cols)).collect(Collectors.toList());
         display.update(trimmed, -1);
     }
 
@@ -612,14 +622,15 @@ public class TerminalOutput implements ClientOutput {
             String exception = efe.getException();
             if (exception != null) {
                 if (exception.startsWith("org.apache.maven.lifecycle.LifecycleExecutionException: ")) {
-                    exception = exception
-                            .substring("org.apache.maven.lifecycle.LifecycleExecutionException: ".length());
+                    exception =
+                            exception.substring("org.apache.maven.lifecycle.LifecycleExecutionException: ".length());
                 }
                 asb.append(": ").append(exception);
             }
         } else {
             asb.append(String.valueOf(failures.size())).append(" projects failed: ");
-            asb.append(failures.stream().map(ExecutionFailureEvent::getProjectId).collect(Collectors.joining(", ")));
+            asb.append(
+                    failures.stream().map(ExecutionFailureEvent::getProjectId).collect(Collectors.joining(", ")));
         }
         AttributedString as = asb.toAttributedString();
         if (as.columnLength() >= getTerminalWidth() - 1) {
@@ -633,7 +644,8 @@ public class TerminalOutput implements ClientOutput {
     }
 
     private AttributedString formatTransfers(String projectId) {
-        Collection<TransferEvent> transfers = this.transfers.getOrDefault(projectId, Collections.emptyMap()).values();
+        Collection<TransferEvent> transfers =
+                this.transfers.getOrDefault(projectId, Collections.emptyMap()).values();
         if (transfers.isEmpty()) {
             return null;
         }
@@ -675,7 +687,8 @@ public class TerminalOutput implements ClientOutput {
             String artifactIdVersion = artifactId + "-" + version;
             StringBuilder sb = new StringBuilder();
             if (p[p.length - 1].charAt(artifactIdVersion.length()) == '-') {
-                classifier = p[p.length - 1].substring(artifactIdVersion.length() + 1, p[p.length - 1].lastIndexOf('.'));
+                classifier =
+                        p[p.length - 1].substring(artifactIdVersion.length() + 1, p[p.length - 1].lastIndexOf('.'));
             } else {
                 classifier = null;
             }
@@ -711,30 +724,27 @@ public class TerminalOutput implements ClientOutput {
                 asb.style(AttributedStyle.DEFAULT);
 
                 /* Daemon ID */
-                asb
-                        .append("  daemon: ")
+                asb.append("  daemon: ")
                         .style(AttributedStyle.BOLD)
                         .append(daemonId)
                         .style(AttributedStyle.DEFAULT);
 
                 /* Threads */
-                asb
-                        .append("  threads used/hidden/max: ")
+                asb.append("  threads used/hidden/max: ")
                         .style(AttributedStyle.BOLD)
-                        .append(
-                                String.format(
-                                        threadsFormat,
-                                        new StringBuilder(threadsFormat.length())
-                                                .append(projectsCount)
-                                                .append('/')
-                                                .append(Math.max(0, projectsCount - dispLines))
-                                                .append('/')
-                                                .append(maxThreads).toString()))
+                        .append(String.format(
+                                threadsFormat,
+                                new StringBuilder(threadsFormat.length())
+                                        .append(projectsCount)
+                                        .append('/')
+                                        .append(Math.max(0, projectsCount - dispLines))
+                                        .append('/')
+                                        .append(maxThreads)
+                                        .toString()))
                         .style(AttributedStyle.DEFAULT);
 
                 /* Progress */
-                asb
-                        .append("  progress: ")
+                asb.append("  progress: ")
                         .style(AttributedStyle.BOLD)
                         .append(String.format(projectsDoneFomat, doneProjects))
                         .append('/')
@@ -745,16 +755,12 @@ public class TerminalOutput implements ClientOutput {
                         .style(AttributedStyle.DEFAULT);
 
             } else if (buildStatus != null) {
-                asb
-                        .style(AttributedStyle.BOLD)
-                        .append(buildStatus)
-                        .style(AttributedStyle.DEFAULT);
+                asb.style(AttributedStyle.BOLD).append(buildStatus).style(AttributedStyle.DEFAULT);
             }
 
             /* Time */
             long sec = (System.currentTimeMillis() - this.start) / 1000;
-            asb
-                    .append("  time: ")
+            asb.append("  time: ")
                     .style(AttributedStyle.BOLD)
                     .append(String.format("%02d:%02d", sec / 60, sec % 60))
                     .style(AttributedStyle.DEFAULT);
@@ -768,20 +774,15 @@ public class TerminalOutput implements ClientOutput {
         final AttributedStringBuilder asb = new AttributedStringBuilder();
         AttributedString transfer = formatTransfers(prj.id);
         if (transfer != null) {
-            asb
-                    .append(':')
+            asb.append(':')
                     .style(CYAN_FOREGROUND)
                     .append(String.format(artifactIdFormat, prj.id))
                     .style(AttributedStyle.DEFAULT)
                     .append(transfer);
         } else if (execution == null) {
-            asb
-                    .append(':')
-                    .style(CYAN_FOREGROUND)
-                    .append(prj.id);
+            asb.append(':').style(CYAN_FOREGROUND).append(prj.id);
         } else {
-            asb
-                    .append(':')
+            asb.append(':')
                     .style(CYAN_FOREGROUND)
                     .append(String.format(artifactIdFormat, prj.id))
                     .style(GREEN_FOREGROUND)
@@ -802,18 +803,21 @@ public class TerminalOutput implements ClientOutput {
     }
 
     private static <T> Collector<T, ?, List<T>> lastN(int n) {
-        return Collector.<T, Deque<T>, List<T>> of(ArrayDeque::new, (acc, t) -> {
-            if (n > 0) {
-                if (acc.size() == n)
-                    acc.pollFirst();
-                acc.add(t);
-            }
-        }, (acc1, acc2) -> {
-            while (acc2.size() < n && !acc1.isEmpty()) {
-                acc2.addFirst(acc1.pollLast());
-            }
-            return acc2;
-        }, ArrayList::new);
+        return Collector.<T, Deque<T>, List<T>>of(
+                ArrayDeque::new,
+                (acc, t) -> {
+                    if (n > 0) {
+                        if (acc.size() == n) acc.pollFirst();
+                        acc.add(t);
+                    }
+                },
+                (acc1, acc2) -> {
+                    while (acc2.size() < n && !acc1.isEmpty()) {
+                        acc2.addFirst(acc1.pollLast());
+                    }
+                    return acc2;
+                },
+                ArrayList::new);
     }
 
     private static AttributedString concat(String s1, AttributedString s2) {
@@ -868,7 +872,6 @@ public class TerminalOutput implements ClientOutput {
         public void close() throws IOException {
             out.close();
         }
-
     }
 
     /**
@@ -896,6 +899,5 @@ public class TerminalOutput implements ClientOutput {
         public void close() {
             flush();
         }
-
     }
 }
diff --git a/common/src/test/java/org/mvndaemon/mvnd/common/DaemonRegistryTest.java b/common/src/test/java/org/mvndaemon/mvnd/common/DaemonRegistryTest.java
index 0af8162..4f50732 100644
--- a/common/src/test/java/org/mvndaemon/mvnd/common/DaemonRegistryTest.java
+++ b/common/src/test/java/org/mvndaemon/mvnd/common/DaemonRegistryTest.java
@@ -1,20 +1,27 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -29,10 +36,6 @@ import java.util.Random;
 import java.util.UUID;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
 public class DaemonRegistryTest {
 
     @Test
@@ -47,10 +50,18 @@ public class DaemonRegistryTest {
 
             byte[] token = new byte[16];
             new Random().nextBytes(token);
-            reg1.store(new DaemonInfo("12345678", "/java/home/",
-                    "/data/reg/", 0x12345678, "inet:/127.0.0.1:7502", token,
-                    Locale.getDefault().toLanguageTag(), Arrays.asList("-Xmx"),
-                    DaemonState.Idle, System.currentTimeMillis(), System.currentTimeMillis()));
+            reg1.store(new DaemonInfo(
+                    "12345678",
+                    "/java/home/",
+                    "/data/reg/",
+                    0x12345678,
+                    "inet:/127.0.0.1:7502",
+                    token,
+                    Locale.getDefault().toLanguageTag(),
+                    Arrays.asList("-Xmx"),
+                    DaemonState.Idle,
+                    System.currentTimeMillis(),
+                    System.currentTimeMillis()));
 
             assertNotNull(reg1.getAll());
             assertEquals(1, reg1.getAll().size());
@@ -69,10 +80,18 @@ public class DaemonRegistryTest {
             for (int i = 0; i < nbDaemons; i++) {
                 byte[] token = new byte[16];
                 random.nextBytes(token);
-                reg.store(new DaemonInfo(UUID.randomUUID().toString(), "/java/home/",
-                        "/data/reg/", random.nextInt(), "inet:/127.0.0.1:7502", token,
-                        Locale.getDefault().toLanguageTag(), Collections.singletonList("-Xmx"),
-                        DaemonState.Idle, System.currentTimeMillis(), System.currentTimeMillis()));
+                reg.store(new DaemonInfo(
+                        UUID.randomUUID().toString(),
+                        "/java/home/",
+                        "/data/reg/",
+                        random.nextInt(),
+                        "inet:/127.0.0.1:7502",
+                        token,
+                        Locale.getDefault().toLanguageTag(),
+                        Collections.singletonList("-Xmx"),
+                        DaemonState.Idle,
+                        System.currentTimeMillis(),
+                        System.currentTimeMillis()));
             }
         }
 
@@ -94,7 +113,6 @@ public class DaemonRegistryTest {
         try (DaemonRegistry reg = new DaemonRegistry(temp)) {
             assertEquals(nbDaemons / 2, reg.getAll().size());
         }
-
     }
 
     @Test
@@ -105,20 +123,26 @@ public class DaemonRegistryTest {
             // first store daemon
             byte[] token = new byte[16];
             new Random().nextBytes(token);
-            reg1.store(new DaemonInfo("12345678", "/java/home/",
-                    "/data/reg/", 0x12345678, "inet:/127.0.0.1:7502", token,
-                    Locale.getDefault().toLanguageTag(), Arrays.asList("-Xmx"),
-                    DaemonState.Idle, System.currentTimeMillis(), System.currentTimeMillis()));
+            reg1.store(new DaemonInfo(
+                    "12345678",
+                    "/java/home/",
+                    "/data/reg/",
+                    0x12345678,
+                    "inet:/127.0.0.1:7502",
+                    token,
+                    Locale.getDefault().toLanguageTag(),
+                    Arrays.asList("-Xmx"),
+                    DaemonState.Idle,
+                    System.currentTimeMillis(),
+                    System.currentTimeMillis()));
             assertEquals(1, reg1.getAll().size());
             // store an invalid event to trigger recovery
             StringBuilder sb = new StringBuilder(1024);
             for (int i = 0; i < 1024; i++) {
                 sb.append('…');
             }
-            reg1.storeStopEvent(new DaemonStopEvent("11111",
-                    System.currentTimeMillis(),
-                    DaemonExpirationStatus.QUIET_EXPIRE,
-                    sb.toString()));
+            reg1.storeStopEvent(new DaemonStopEvent(
+                    "11111", System.currentTimeMillis(), DaemonExpirationStatus.QUIET_EXPIRE, sb.toString()));
             assertEquals(1, reg1.doGetDaemonStopEvents().size());
             // check if registry is reset
             assertEquals(0, reg1.getAll().size());
@@ -143,5 +167,4 @@ public class DaemonRegistryTest {
             }
         }
     }
-
 }
diff --git a/common/src/test/java/org/mvndaemon/mvnd/common/MessageTest.java b/common/src/test/java/org/mvndaemon/mvnd/common/MessageTest.java
index 65f5e3e..7d6fdb6 100644
--- a/common/src/test/java/org/mvndaemon/mvnd/common/MessageTest.java
+++ b/common/src/test/java/org/mvndaemon/mvnd/common/MessageTest.java
@@ -1,20 +1,27 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
 import java.io.DataInputStream;
@@ -22,10 +29,6 @@ import java.io.DataOutputStream;
 import java.io.IOException;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertNull;
-import static org.junit.jupiter.api.Assertions.assertTrue;
-
 public class MessageTest {
 
     @Test
diff --git a/common/src/test/java/org/mvndaemon/mvnd/common/OsUtilsTest.java b/common/src/test/java/org/mvndaemon/mvnd/common/OsUtilsTest.java
index 3d176af..41cb71b 100644
--- a/common/src/test/java/org/mvndaemon/mvnd/common/OsUtilsTest.java
+++ b/common/src/test/java/org/mvndaemon/mvnd/common/OsUtilsTest.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
@@ -28,5 +31,4 @@ public class OsUtilsTest {
         Assertions.assertEquals("1g", OsUtils.kbTohumanReadable(1024 * 1024));
         Assertions.assertEquals("1t", OsUtils.kbTohumanReadable(1024 * 1024 * 1024));
     }
-
 }
diff --git a/common/src/test/java/org/mvndaemon/mvnd/common/SocketFamilyTest.java b/common/src/test/java/org/mvndaemon/mvnd/common/SocketFamilyTest.java
index e8fc1fd..e6f9fa2 100644
--- a/common/src/test/java/org/mvndaemon/mvnd/common/SocketFamilyTest.java
+++ b/common/src/test/java/org/mvndaemon/mvnd/common/SocketFamilyTest.java
@@ -1,20 +1,25 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
@@ -24,14 +29,12 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.condition.EnabledForJreRange;
 import org.junit.jupiter.api.condition.JRE;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 public class SocketFamilyTest {
 
     @Test
     void testInetNullHost() throws UnknownHostException {
-        InetSocketAddress i4a = new InetSocketAddress(
-                InetAddress.getByAddress(null, new byte[] { (byte) 192, (byte) 168, 0, 1 }), 8080);
+        InetSocketAddress i4a =
+                new InetSocketAddress(InetAddress.getByAddress(null, new byte[] {(byte) 192, (byte) 168, 0, 1}), 8080);
 
         assertEquals("inet:/192.168.0.1:8080", SocketFamily.toString(i4a));
         assertEquals(i4a, SocketFamily.fromString("inet:/192.168.0.1:8080"));
@@ -40,7 +43,7 @@ public class SocketFamilyTest {
     @Test
     void testInetDummyHost() throws UnknownHostException {
         InetSocketAddress i4a = new InetSocketAddress(
-                InetAddress.getByAddress("dummy.org", new byte[] { (byte) 192, (byte) 168, 0, 1 }), 8080);
+                InetAddress.getByAddress("dummy.org", new byte[] {(byte) 192, (byte) 168, 0, 1}), 8080);
 
         assertEquals("inet:dummy.org/192.168.0.1:8080", SocketFamily.toString(i4a));
         assertEquals(i4a, SocketFamily.fromString("inet:dummy.org/192.168.0.1:8080"));
@@ -70,5 +73,4 @@ public class SocketFamilyTest {
         assertEquals(SocketFamily.unix, SocketFamily.familyOf(address));
         assertEquals("unix:/tmp/foo-0123456.socket", SocketFamily.toString(address));
     }
-
 }
diff --git a/common/src/test/java/org/mvndaemon/mvnd/common/TimeUtilsTest.java b/common/src/test/java/org/mvndaemon/mvnd/common/TimeUtilsTest.java
index 26e3f83..6c9a083 100644
--- a/common/src/test/java/org/mvndaemon/mvnd/common/TimeUtilsTest.java
+++ b/common/src/test/java/org/mvndaemon/mvnd/common/TimeUtilsTest.java
@@ -1,25 +1,28 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.common;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 import java.time.Duration;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.jupiter.api.Assertions.assertEquals;
-
 public class TimeUtilsTest {
 
     @Test
@@ -33,8 +36,8 @@ public class TimeUtilsTest {
         assertEquals("5m10s300ms", TimeUtils.printDuration(310300));
         assertEquals("5s500ms", TimeUtils.printDuration(5500));
         assertEquals("1h50m", TimeUtils.printDuration(6600000));
-        assertEquals("2d3h4m", TimeUtils.printDuration(Duration.parse("P2DT3H4M").toMillis()));
+        assertEquals(
+                "2d3h4m", TimeUtils.printDuration(Duration.parse("P2DT3H4M").toMillis()));
         assertEquals("2d4m", TimeUtils.printDuration(Duration.parse("P2DT4M").toMillis()));
     }
-
 }
diff --git a/daemon/pom.xml b/daemon/pom.xml
index 447eba1..9ba4dc0 100644
--- a/daemon/pom.xml
+++ b/daemon/pom.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
 <!--
 
     Copyright 2019 the original author or authors.
@@ -15,113 +16,110 @@
     limitations under the License.
 
 -->
-<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
 
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.apache.maven.daemon</groupId>
-        <artifactId>mvnd</artifactId>
-        <version>1.0.0-SNAPSHOT</version>
-    </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <parent>
+    <groupId>org.apache.maven.daemon</groupId>
+    <artifactId>mvnd</artifactId>
+    <version>1.0.0-SNAPSHOT</version>
+  </parent>
 
-    <artifactId>mvnd-daemon</artifactId>
+  <artifactId>mvnd-daemon</artifactId>
 
-    <packaging>jar</packaging>
-    <name>Maven Daemon</name>
+  <packaging>jar</packaging>
+  <name>Maven Daemon</name>
 
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.maven.daemon</groupId>
-            <artifactId>mvnd-common</artifactId>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-simple</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven.daemon</groupId>
-            <artifactId>mvnd-native</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-embedder</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.plexus</groupId>
-            <artifactId>plexus-interactivity-api</artifactId>
-            <version>1.0</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>junit</groupId>
-                    <artifactId>junit</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.daemon</groupId>
+      <artifactId>mvnd-common</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.slf4j</groupId>
+          <artifactId>slf4j-simple</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven.daemon</groupId>
+      <artifactId>mvnd-native</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-embedder</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-interactivity-api</artifactId>
+      <version>1.0</version>
+      <exclusions>
+        <exclusion>
+          <groupId>junit</groupId>
+          <artifactId>junit</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
 
-        <!-- Logging -->
-        <dependency>
-            <groupId>ch.qos.logback</groupId>
-            <artifactId>logback-classic</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>log4j-over-slf4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jcl-over-slf4j</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>jul-to-slf4j</artifactId>
-        </dependency>
+    <!-- Logging -->
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>log4j-over-slf4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jcl-over-slf4j</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>jul-to-slf4j</artifactId>
+    </dependency>
 
-        <dependency>
-            <groupId>org.jline</groupId>
-            <artifactId>jline-terminal</artifactId>
-        </dependency>
+    <dependency>
+      <groupId>org.jline</groupId>
+      <artifactId>jline-terminal</artifactId>
+    </dependency>
 
-        <dependency>
-            <groupId>org.eclipse.sisu</groupId>
-            <artifactId>org.eclipse.sisu.inject</artifactId>
-            <version>${sisu.version}</version>
-            <scope>compile</scope>
-        </dependency>
+    <dependency>
+      <groupId>org.eclipse.sisu</groupId>
+      <artifactId>org.eclipse.sisu.inject</artifactId>
+      <version>${sisu.version}</version>
+      <scope>compile</scope>
+    </dependency>
 
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
 
-    <build>
-        <resources>
-            <resource>
-                <directory>${basedir}/src/main/resources</directory>
-                <filtering>true</filtering>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-                <configuration>
-                    <redirectTestOutputToFile>true</redirectTestOutputToFile>
-                    <forkCount>1</forkCount>
-                    <reuseForks>true</reuseForks>
-                    <argLine>
-                        --add-opens java.base/java.io=ALL-UNNAMED
+  <build>
+    <resources>
+      <resource>
+        <filtering>true</filtering>
+        <directory>${basedir}/src/main/resources</directory>
+      </resource>
+    </resources>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <redirectTestOutputToFile>true</redirectTestOutputToFile>
+          <forkCount>1</forkCount>
+          <reuseForks>true</reuseForks>
+          <argLine>--add-opens java.base/java.io=ALL-UNNAMED
                         --add-opens java.base/java.lang=ALL-UNNAMED
                         --add-opens java.base/java.util=ALL-UNNAMED
-                        --add-opens java.base/sun.nio.fs=ALL-UNNAMED
-                    </argLine>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
+                        --add-opens java.base/sun.nio.fs=ALL-UNNAMED</argLine>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 
-</project>
\ No newline at end of file
+</project>
diff --git a/daemon/src/main/java/org/apache/maven/classrealm/MvndClassRealmManager.java b/daemon/src/main/java/org/apache/maven/classrealm/MvndClassRealmManager.java
index cddc007..90e03d1 100644
--- a/daemon/src/main/java/org/apache/maven/classrealm/MvndClassRealmManager.java
+++ b/daemon/src/main/java/org/apache/maven/classrealm/MvndClassRealmManager.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.maven.classrealm;
 
@@ -55,8 +58,7 @@ import org.eclipse.sisu.Priority;
 @Named
 @Singleton
 @Priority(10)
-public class MvndClassRealmManager
-        implements ClassRealmManager {
+public class MvndClassRealmManager implements ClassRealmManager {
     public static final String API_REALMID = "maven.api";
 
     /**
@@ -87,8 +89,11 @@ public class MvndClassRealmManager
     private final Set<String> providedArtifacts;
 
     @Inject
-    public MvndClassRealmManager(Logger logger, PlexusContainer container,
-            List<ClassRealmManagerDelegate> delegates, CoreExportsProvider exports) {
+    public MvndClassRealmManager(
+            Logger logger,
+            PlexusContainer container,
+            List<ClassRealmManagerDelegate> delegates,
+            CoreExportsProvider exports) {
         this.logger = logger;
         this.world = ((MutablePlexusContainer) container).getClassWorld();
         this.containerRealm = container.getContainerRealm();
@@ -96,9 +101,13 @@ public class MvndClassRealmManager
 
         Map<String, ClassLoader> foreignImports = exports.get().getExportedPackages();
 
-        this.mavenApiRealm = createRealm(API_REALMID, ClassRealmRequest.RealmType.Core, null /* parent */,
+        this.mavenApiRealm = createRealm(
+                API_REALMID,
+                ClassRealmRequest.RealmType.Core,
+                null /* parent */,
                 null /* parentImports */,
-                foreignImports, null /* artifacts */ );
+                foreignImports,
+                null /* artifacts */);
 
         this.providedArtifacts = exports.get().getExportedArtifacts();
     }
@@ -141,9 +150,13 @@ public class MvndClassRealmManager
      *                        missing file) will automatically be excluded from the realm.
      * @return                The created class realm, never {@code null}.
      */
-    private ClassRealm createRealm(String baseRealmId, ClassRealmRequest.RealmType type, ClassLoader parent,
+    private ClassRealm createRealm(
+            String baseRealmId,
+            ClassRealmRequest.RealmType type,
+            ClassLoader parent,
             List<String> parentImports,
-            Map<String, ClassLoader> foreignImports, List<Artifact> artifacts) {
+            Map<String, ClassLoader> foreignImports,
+            List<Artifact> artifacts) {
         Set<String> artifactIds = new LinkedHashSet<>();
 
         List<ClassRealmConstituent> constituents = new ArrayList<>();
@@ -215,25 +228,34 @@ public class MvndClassRealmManager
 
         ClassLoader parent = PARENT_CLASSLOADER;
 
-        Map<String, ClassLoader> foreignImports = Collections.<String, ClassLoader> singletonMap("", getMavenApiRealm());
+        Map<String, ClassLoader> foreignImports = Collections.<String, ClassLoader>singletonMap("", getMavenApiRealm());
 
-        return createRealm(getKey(plugin, true), ClassRealmRequest.RealmType.Extension, parent, null, foreignImports,
-                artifacts);
+        return createRealm(
+                getKey(plugin, true), ClassRealmRequest.RealmType.Extension, parent, null, foreignImports, artifacts);
     }
 
     private boolean isProvidedArtifact(Artifact artifact) {
         return providedArtifacts.contains(artifact.getGroupId() + ":" + artifact.getArtifactId());
     }
 
-    public ClassRealm createPluginRealm(Plugin plugin, ClassLoader parent, List<String> parentImports,
-            Map<String, ClassLoader> foreignImports, List<Artifact> artifacts) {
+    public ClassRealm createPluginRealm(
+            Plugin plugin,
+            ClassLoader parent,
+            List<String> parentImports,
+            Map<String, ClassLoader> foreignImports,
+            List<Artifact> artifacts) {
         Objects.requireNonNull(plugin, "plugin cannot be null");
 
         if (parent == null) {
             parent = PARENT_CLASSLOADER;
         }
 
-        return createRealm(getKey(plugin, false), ClassRealmRequest.RealmType.Plugin, parent, parentImports, foreignImports,
+        return createRealm(
+                getKey(plugin, false),
+                ClassRealmRequest.RealmType.Plugin,
+                parent,
+                parentImports,
+                foreignImports,
                 artifacts);
     }
 
@@ -244,33 +266,48 @@ public class MvndClassRealmManager
     }
 
     private static String getId(Artifact artifact) {
-        return getId(artifact.getGroupId(), artifact.getArtifactId(), artifact.getExtension(),
-                artifact.getClassifier(), artifact.getBaseVersion());
+        return getId(
+                artifact.getGroupId(),
+                artifact.getArtifactId(),
+                artifact.getExtension(),
+                artifact.getClassifier(),
+                artifact.getBaseVersion());
     }
 
     private static String getId(ClassRealmConstituent constituent) {
-        return getId(constituent.getGroupId(), constituent.getArtifactId(), constituent.getType(),
-                constituent.getClassifier(), constituent.getVersion());
+        return getId(
+                constituent.getGroupId(),
+                constituent.getArtifactId(),
+                constituent.getType(),
+                constituent.getClassifier(),
+                constituent.getVersion());
     }
 
     private static String getId(String gid, String aid, String type, String cls, String ver) {
         return gid + ':' + aid + ':' + type + (StringUtils.isNotEmpty(cls) ? ':' + cls : "") + ':' + ver;
     }
 
-    private void callDelegates(ClassRealm classRealm, ClassRealmRequest.RealmType type, ClassLoader parent,
+    private void callDelegates(
+            ClassRealm classRealm,
+            ClassRealmRequest.RealmType type,
+            ClassLoader parent,
             List<String> parentImports,
-            Map<String, ClassLoader> foreignImports, List<ClassRealmConstituent> constituents) {
+            Map<String, ClassLoader> foreignImports,
+            List<ClassRealmConstituent> constituents) {
         List<ClassRealmManagerDelegate> delegates = new ArrayList<>(this.delegates);
 
         if (!delegates.isEmpty()) {
-            ClassRealmRequest request = new DefaultClassRealmRequest(type, parent, parentImports, foreignImports, constituents);
+            ClassRealmRequest request =
+                    new DefaultClassRealmRequest(type, parent, parentImports, foreignImports, constituents);
 
             for (ClassRealmManagerDelegate delegate : delegates) {
                 try {
                     delegate.setupRealm(classRealm, request);
                 } catch (Exception e) {
-                    logger.error(delegate.getClass().getName() + " failed to setup class realm " + classRealm + ": "
-                            + e.getMessage(), e);
+                    logger.error(
+                            delegate.getClass().getName() + " failed to setup class realm " + classRealm + ": "
+                                    + e.getMessage(),
+                            e);
                 }
             }
         }
@@ -343,5 +380,4 @@ public class MvndClassRealmManager
         }
         return String.valueOf(classLoader);
     }
-
 }
diff --git a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCli.java b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
index e088316..c4fc9e2 100644
--- a/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
+++ b/daemon/src/main/java/org/apache/maven/cli/DaemonMavenCli.java
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *  http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -18,6 +18,9 @@
  */
 package org.apache.maven.cli;
 
+import static java.util.Comparator.comparing;
+import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
+
 import com.google.inject.AbstractModule;
 import java.io.File;
 import java.io.FileNotFoundException;
@@ -110,9 +113,6 @@ import org.slf4j.LoggerFactory;
 import org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher;
 import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
 
-import static java.util.Comparator.comparing;
-import static org.apache.maven.shared.utils.logging.MessageUtils.buffer;
-
 /**
  * File origin:
  * https://github.com/apache/maven/blob/maven-3.6.2/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -130,7 +130,8 @@ public class DaemonMavenCli {
 
     public static final File DEFAULT_USER_TOOLCHAINS_FILE = new File(USER_MAVEN_CONFIGURATION_HOME, "toolchains.xml");
 
-    public static final File DEFAULT_GLOBAL_TOOLCHAINS_FILE = new File(System.getProperty("maven.conf"), "toolchains.xml");
+    public static final File DEFAULT_GLOBAL_TOOLCHAINS_FILE =
+            new File(System.getProperty("maven.conf"), "toolchains.xml");
 
     private static final String EXT_CLASS_PATH = "maven.ext.class.path";
 
@@ -193,14 +194,15 @@ public class DaemonMavenCli {
         toolchainsBuilder = container.lookup(ToolchainsBuilder.class);
         dispatcher = (DefaultSecDispatcher) container.lookup(SecDispatcher.class, "maven");
         executionListener = container.lookup(LoggingExecutionListener.class);
-
     }
 
-    public int main(List<String> arguments,
+    public int main(
+            List<String> arguments,
             String workingDirectory,
             String projectDirectory,
             Map<String, String> clientEnv,
-            BuildEventListener buildEventListener) throws Exception {
+            BuildEventListener buildEventListener)
+            throws Exception {
         this.buildEventListener = buildEventListener;
         try {
             CliRequest req = new CliRequest(null, null);
@@ -241,8 +243,7 @@ public class DaemonMavenCli {
         }
     }
 
-    void initialize(CliRequest cliRequest)
-            throws ExitException {
+    void initialize(CliRequest cliRequest) throws ExitException {
         cliRequest.classWorld = classWorld;
 
         if (cliRequest.workingDirectory == null) {
@@ -250,15 +251,13 @@ public class DaemonMavenCli {
         }
 
         if (cliRequest.multiModuleProjectDirectory == null) {
-            buildEventListener.log(String.format(
-                    "-D%s system property is not set.", MULTIMODULE_PROJECT_DIRECTORY));
+            buildEventListener.log(String.format("-D%s system property is not set.", MULTIMODULE_PROJECT_DIRECTORY));
             throw new ExitException(1);
         }
         System.setProperty("maven.multiModuleProjectDirectory", cliRequest.multiModuleProjectDirectory.toString());
     }
 
-    void cli(CliRequest cliRequest)
-            throws Exception {
+    void cli(CliRequest cliRequest) throws Exception {
         CLIManager cliManager = newCLIManager();
 
         List<String> args = new ArrayList<>();
@@ -307,10 +306,15 @@ public class DaemonMavenCli {
 
     private CLIManager newCLIManager() {
         CLIManager cliManager = new CLIManager();
-        cliManager.options.addOption(Option.builder(RESUME).longOpt("resume").desc("Resume reactor from " +
-                "the last failed project, using the resume.properties file in the build directory").build());
-        cliManager.options.addOption(Option.builder().longOpt(RAW_STREAMS).desc("Do not decorate output and " +
-                "error streams").build());
+        cliManager.options.addOption(Option.builder(RESUME)
+                .longOpt("resume")
+                .desc("Resume reactor from "
+                        + "the last failed project, using the resume.properties file in the build directory")
+                .build());
+        cliManager.options.addOption(Option.builder()
+                .longOpt(RAW_STREAMS)
+                .desc("Do not decorate output and " + "error streams")
+                .build());
         return cliManager;
     }
 
@@ -378,8 +382,8 @@ public class DaemonMavenCli {
         }
 
         // Workaround for https://github.com/apache/maven-mvnd/issues/39
-        final ch.qos.logback.classic.Logger mvndLogger = (ch.qos.logback.classic.Logger) slf4jLoggerFactory
-                .getLogger("org.mvndaemon.mvnd");
+        final ch.qos.logback.classic.Logger mvndLogger =
+                (ch.qos.logback.classic.Logger) slf4jLoggerFactory.getLogger("org.mvndaemon.mvnd");
         mvndLogger.setLevel(ch.qos.logback.classic.Level.toLevel(System.getProperty("mvnd.log.level"), null));
 
         // LOG STREAMS
@@ -398,8 +402,10 @@ public class DaemonMavenCli {
                 //
             }
         } else if (!cliRequest.commandLine.hasOption(RAW_STREAMS)) {
-            ch.qos.logback.classic.Logger stdout = (ch.qos.logback.classic.Logger) slf4jLoggerFactory.getLogger("stdout");
-            ch.qos.logback.classic.Logger stderr = (ch.qos.logback.classic.Logger) slf4jLoggerFactory.getLogger("stderr");
+            ch.qos.logback.classic.Logger stdout =
+                    (ch.qos.logback.classic.Logger) slf4jLoggerFactory.getLogger("stdout");
+            ch.qos.logback.classic.Logger stderr =
+                    (ch.qos.logback.classic.Logger) slf4jLoggerFactory.getLogger("stderr");
             stdout.setLevel(ch.qos.logback.classic.Level.INFO);
             stderr.setLevel(ch.qos.logback.classic.Level.INFO);
             System.setOut(new LoggingOutputStream(s -> stdout.info("[stdout] " + s)).printStream());
@@ -447,8 +453,8 @@ public class DaemonMavenCli {
         }
     }
 
-    //Needed to make this method package visible to make writing a unit test possible
-    //Maybe it's better to move some of those methods to separate class (SoC).
+    // Needed to make this method package visible to make writing a unit test possible
+    // Maybe it's better to move some of those methods to separate class (SoC).
     void properties(CliRequest cliRequest) {
         populateProperties(cliRequest.commandLine, cliRequest.systemProperties, cliRequest.userProperties);
     }
@@ -463,22 +469,21 @@ public class DaemonMavenCli {
         eventSpyDispatcher.init(() -> data);
     }
 
-    DefaultPlexusContainer container()
-            throws Exception {
+    DefaultPlexusContainer container() throws Exception {
         ClassRealm coreRealm = classWorld.getClassRealm("plexus.core");
         if (coreRealm == null) {
             coreRealm = classWorld.getRealms().iterator().next();
         }
 
-        List<File> extClassPath = Stream
-                .of(Environment.MVND_EXT_CLASSPATH.asString().split(","))
+        List<File> extClassPath = Stream.of(
+                        Environment.MVND_EXT_CLASSPATH.asString().split(","))
                 .map(File::new)
                 .collect(Collectors.toList());
 
         CoreExtensionEntry coreEntry = CoreExtensionEntry.discoverFrom(coreRealm);
 
-        List<CoreExtension> extensions = Stream
-                .of(Environment.MVND_CORE_EXTENSIONS.asString().split(";"))
+        List<CoreExtension> extensions = Stream.of(
+                        Environment.MVND_CORE_EXTENSIONS.asString().split(";"))
                 .filter(s -> s != null && !s.isEmpty())
                 .map(s -> {
                     String[] parts = s.split(":");
@@ -489,13 +494,17 @@ public class DaemonMavenCli {
                     return ce;
                 })
                 .collect(Collectors.toList());
-        List<CoreExtensionEntry> extensionsEntries = loadCoreExtensions(extensions, coreRealm,
-                coreEntry.getExportedArtifacts());
+        List<CoreExtensionEntry> extensionsEntries =
+                loadCoreExtensions(extensions, coreRealm, coreEntry.getExportedArtifacts());
         ClassRealm containerRealm = setupContainerRealm(classWorld, coreRealm, extClassPath, extensionsEntries);
 
-        ContainerConfiguration cc = new DefaultContainerConfiguration().setClassWorld(classWorld)
-                .setRealm(containerRealm).setClassPathScanning(PlexusConstants.SCANNING_INDEX).setAutoWiring(true)
-                .setJSR250Lifecycle(true).setName("maven");
+        ContainerConfiguration cc = new DefaultContainerConfiguration()
+                .setClassWorld(classWorld)
+                .setRealm(containerRealm)
+                .setClassPathScanning(PlexusConstants.SCANNING_INDEX)
+                .setAutoWiring(true)
+                .setJSR250Lifecycle(true)
+                .setName("maven");
 
         Set<String> exportedArtifacts = new HashSet<>(coreEntry.getExportedArtifacts());
         Set<String> exportedPackages = new HashSet<>(coreEntry.getExportedPackages());
@@ -530,14 +539,16 @@ public class DaemonMavenCli {
         container.setLoggerManager(plexusLoggerManager);
 
         for (CoreExtensionEntry extension : extensionsEntries) {
-            container.discoverComponents(extension.getClassRealm(), new SessionScopeModule(container),
+            container.discoverComponents(
+                    extension.getClassRealm(),
+                    new SessionScopeModule(container),
                     new MojoExecutionScopeModule(container));
         }
         return container;
     }
 
-    private List<CoreExtensionEntry> loadCoreExtensions(List<CoreExtension> extensions, ClassRealm containerRealm,
-            Set<String> providedArtifacts) {
+    private List<CoreExtensionEntry> loadCoreExtensions(
+            List<CoreExtension> extensions, ClassRealm containerRealm, Set<String> providedArtifacts) {
         try {
             if (extensions.isEmpty()) {
                 return Collections.emptyList();
@@ -565,19 +576,24 @@ public class DaemonMavenCli {
                 container.getLoggerManager().setThresholds(cliRequest.request.getLoggingLevel());
                 Thread.currentThread().setContextClassLoader(container.getContainerRealm());
                 executionRequestPopulator = container.lookup(MavenExecutionRequestPopulator.class);
-                final Map<String, ConfigurationProcessor> configurationProcessors = container
-                        .lookupMap(ConfigurationProcessor.class);
+                final Map<String, ConfigurationProcessor> configurationProcessors =
+                        container.lookupMap(ConfigurationProcessor.class);
                 final EventSpyDispatcher eventSpyDispatcher = container.lookup(EventSpyDispatcher.class);
                 properties(cliRequest);
                 configure(cliRequest, eventSpyDispatcher, configurationProcessors);
                 LoggingExecutionListener executionListener = container.lookup(LoggingExecutionListener.class);
-                populateRequest(cliRequest, cliRequest.request, eventSpyDispatcher,
-                        container.lookup(ModelProcessor.class), createTransferListener(cliRequest), buildEventListener,
+                populateRequest(
+                        cliRequest,
+                        cliRequest.request,
+                        eventSpyDispatcher,
+                        container.lookup(ModelProcessor.class),
+                        createTransferListener(cliRequest),
+                        buildEventListener,
                         executionListener);
                 executionRequestPopulator.populateDefaults(cliRequest.request);
                 BootstrapCoreExtensionManager resolver = container.lookup(BootstrapCoreExtensionManager.class);
-                return Collections
-                        .unmodifiableList(resolver.loadCoreExtensions(cliRequest.request, providedArtifacts, extensions));
+                return Collections.unmodifiableList(
+                        resolver.loadCoreExtensions(cliRequest.request, providedArtifacts, extensions));
             } finally {
                 executionRequestPopulator = null;
                 container.dispose();
@@ -591,8 +607,9 @@ public class DaemonMavenCli {
         return Collections.emptyList();
     }
 
-    private ClassRealm setupContainerRealm(ClassWorld classWorld, ClassRealm coreRealm, List<File> extClassPath,
-            List<CoreExtensionEntry> extensions) throws Exception {
+    private ClassRealm setupContainerRealm(
+            ClassWorld classWorld, ClassRealm coreRealm, List<File> extClassPath, List<CoreExtensionEntry> extensions)
+            throws Exception {
         if (!extClassPath.isEmpty() || !extensions.isEmpty()) {
             ClassRealm extRealm = classWorld.newRealm("maven.ext", null);
             extRealm.setParentRealm(coreRealm);
@@ -647,8 +664,7 @@ public class DaemonMavenCli {
     //
     // This should probably be a separate tool and not be baked into Maven.
     //
-    private void encryption(CliRequest cliRequest)
-            throws Exception {
+    private void encryption(CliRequest cliRequest) throws Exception {
         if (cliRequest.commandLine.hasOption(CLIManager.ENCRYPT_MASTER_PASSWORD)) {
             throw new UnsupportedOperationException("Unsupported option: " + CLIManager.ENCRYPT_MASTER_PASSWORD);
         } else if (cliRequest.commandLine.hasOption(CLIManager.ENCRYPT_PASSWORD)) {
@@ -656,10 +672,9 @@ public class DaemonMavenCli {
         }
     }
 
-    private void repository(CliRequest cliRequest)
-            throws Exception {
-        if (cliRequest.commandLine.hasOption(CLIManager.LEGACY_LOCAL_REPOSITORY) || Boolean.getBoolean(
-                "maven.legacyLocalRepo")) {
+    private void repository(CliRequest cliRequest) throws Exception {
+        if (cliRequest.commandLine.hasOption(CLIManager.LEGACY_LOCAL_REPOSITORY)
+                || Boolean.getBoolean("maven.legacyLocalRepo")) {
             cliRequest.request.setUseLegacyLocalRepository(true);
         }
     }
@@ -668,8 +683,7 @@ public class DaemonMavenCli {
         EnvHelper.environment(workingDir, clientEnv);
     }
 
-    private int execute(CliRequest cliRequest)
-            throws MavenExecutionRequestPopulationException {
+    private int execute(CliRequest cliRequest) throws MavenExecutionRequestPopulationException {
         commands(cliRequest);
 
         MavenExecutionRequest request = executionRequestPopulator.populateDefaults(cliRequest.request);
@@ -677,7 +691,8 @@ public class DaemonMavenCli {
         eventSpyDispatcher.onEvent(request);
 
         slf4jLogger.info(buffer().a("Processing build on daemon ")
-                .strong(Environment.MVND_ID.asString()).toString());
+                .strong(Environment.MVND_ID.asString())
+                .toString());
 
         MavenExecutionResult result = maven.execute(request);
 
@@ -706,12 +721,13 @@ public class DaemonMavenCli {
             slf4jLogger.error("");
 
             if (!cliRequest.showErrors) {
-                slf4jLogger.error("To see the full stack trace of the errors, re-run Maven with the {} switch.",
+                slf4jLogger.error(
+                        "To see the full stack trace of the errors, re-run Maven with the {} switch.",
                         buffer().strong("-e"));
             }
             if (!slf4jLogger.isDebugEnabled()) {
-                slf4jLogger.error("Re-run Maven using the {} switch to enable full debug logging.",
-                        buffer().strong("-X"));
+                slf4jLogger.error(
+                        "Re-run Maven using the {} switch to enable full debug logging.", buffer().strong("-X"));
             }
 
             if (!references.isEmpty()) {
@@ -776,16 +792,16 @@ public class DaemonMavenCli {
      */
     private String getResumeFromSelector(List<MavenProject> mavenProjects, MavenProject failedProject) {
         for (MavenProject buildProject : mavenProjects) {
-            if (failedProject.getArtifactId().equals(buildProject.getArtifactId()) && !failedProject.equals(
-                    buildProject)) {
+            if (failedProject.getArtifactId().equals(buildProject.getArtifactId())
+                    && !failedProject.equals(buildProject)) {
                 return failedProject.getGroupId() + ":" + failedProject.getArtifactId();
             }
         }
         return ":" + failedProject.getArtifactId();
     }
 
-    private void logSummary(ExceptionSummary summary, Map<String, String> references, String indent,
-            boolean showErrors) {
+    private void logSummary(
+            ExceptionSummary summary, Map<String, String> references, String indent, boolean showErrors) {
         String referenceKey = "";
 
         if (StringUtils.isNotEmpty(summary.getReference())) {
@@ -827,8 +843,7 @@ public class DaemonMavenCli {
             // effective line, with indent and reset if end is colored
             line = indent + line + ("".equals(nextColor) ? "" : ANSI_RESET);
 
-            if ((i == lines.length - 1) && (showErrors
-                    || (summary.getException() instanceof InternalErrorException))) {
+            if ((i == lines.length - 1) && (showErrors || (summary.getException() instanceof InternalErrorException))) {
                 slf4jLogger.error(line, summary.getException());
             } else {
                 slf4jLogger.error(line);
@@ -891,14 +906,15 @@ public class DaemonMavenCli {
             //
             // There are too many ConfigurationProcessors so we don't know which one to run so report the error.
             //
-            StringBuilder sb = new StringBuilder(
-                    String.format("\nThere can only be one user supplied ConfigurationProcessor, there are %s:\n\n",
-                            userSuppliedConfigurationProcessorCount));
+            StringBuilder sb = new StringBuilder(String.format(
+                    "\nThere can only be one user supplied ConfigurationProcessor, there are %s:\n\n",
+                    userSuppliedConfigurationProcessorCount));
             for (Entry<String, ConfigurationProcessor> entry : configurationProcessors.entrySet()) {
                 String hint = entry.getKey();
                 if (!hint.equals(SettingsXmlConfigurationProcessor.HINT)) {
                     ConfigurationProcessor configurationProcessor = entry.getValue();
-                    sb.append(String.format("%s\n", configurationProcessor.getClass().getName()));
+                    sb.append(String.format(
+                            "%s\n", configurationProcessor.getClass().getName()));
                 }
             }
             sb.append("\n");
@@ -906,8 +922,7 @@ public class DaemonMavenCli {
         }
     }
 
-    void toolchains(CliRequest cliRequest)
-            throws Exception {
+    void toolchains(CliRequest cliRequest) throws Exception {
         File userToolchainsFile;
 
         if (cliRequest.commandLine.hasOption(CLIManager.ALTERNATE_USER_TOOLCHAINS)) {
@@ -925,7 +940,8 @@ public class DaemonMavenCli {
         File globalToolchainsFile;
 
         if (cliRequest.commandLine.hasOption(CLIManager.ALTERNATE_GLOBAL_TOOLCHAINS)) {
-            globalToolchainsFile = new File(cliRequest.commandLine.getOptionValue(CLIManager.ALTERNATE_GLOBAL_TOOLCHAINS));
+            globalToolchainsFile =
+                    new File(cliRequest.commandLine.getOptionValue(CLIManager.ALTERNATE_GLOBAL_TOOLCHAINS));
             globalToolchainsFile = resolveFile(globalToolchainsFile, cliRequest.workingDirectory);
 
             if (!globalToolchainsFile.isFile()) {
@@ -949,17 +965,18 @@ public class DaemonMavenCli {
 
         eventSpyDispatcher.onEvent(toolchainsRequest);
 
-        slf4jLogger.debug("Reading global toolchains from {}",
+        slf4jLogger.debug(
+                "Reading global toolchains from {}",
                 getLocation(toolchainsRequest.getGlobalToolchainsSource(), globalToolchainsFile));
-        slf4jLogger.debug("Reading user toolchains from {}",
+        slf4jLogger.debug(
+                "Reading user toolchains from {}",
                 getLocation(toolchainsRequest.getUserToolchainsSource(), userToolchainsFile));
 
         ToolchainsBuildingResult toolchainsResult = toolchainsBuilder.build(toolchainsRequest);
 
         eventSpyDispatcher.onEvent(toolchainsResult);
 
-        executionRequestPopulator.populateFromToolchains(cliRequest.request,
-                toolchainsResult.getEffectiveToolchains());
+        executionRequestPopulator.populateFromToolchains(cliRequest.request, toolchainsResult.getEffectiveToolchains());
 
         if (!toolchainsResult.getProblems().isEmpty() && slf4jLogger.isWarnEnabled()) {
             slf4jLogger.warn("");
@@ -981,8 +998,14 @@ public class DaemonMavenCli {
     }
 
     private void populateRequest(CliRequest cliRequest) {
-        populateRequest(cliRequest, cliRequest.request, eventSpyDispatcher, modelProcessor,
-                createTransferListener(cliRequest), buildEventListener, executionListener);
+        populateRequest(
+                cliRequest,
+                cliRequest.request,
+                eventSpyDispatcher,
+                modelProcessor,
+                createTransferListener(cliRequest),
+                buildEventListener,
+                executionListener);
     }
 
     private void populateRequest(
@@ -1017,9 +1040,7 @@ public class DaemonMavenCli {
         request.setExecutionListener(executionListener);
 
         ExecutionEventLogger executionEventLogger = new ExecutionEventLogger();
-        executionListener.init(
-                eventSpyDispatcher.chainListener(executionEventLogger),
-                buildEventListener);
+        executionListener.init(eventSpyDispatcher.chainListener(executionEventLogger), buildEventListener);
 
         if ((request.getPom() != null) && (request.getPom().getParentFile() != null)) {
             request.setBaseDirectory(request.getPom().getParentFile());
@@ -1072,7 +1093,10 @@ public class DaemonMavenCli {
         return request.getSystemProperties().getProperty(MavenCli.LOCAL_REPO_PROPERTY);
     }
 
-    private File determinePom(ModelProcessor modelProcessor, final CommandLine commandLine, final String workingDirectory,
+    private File determinePom(
+            ModelProcessor modelProcessor,
+            final CommandLine commandLine,
+            final String workingDirectory,
             final File baseDirectory) {
         String alternatePomFile = null;
         if (commandLine.hasOption(CLIManager.ALTERNATE_POM_FILE)) {
@@ -1199,37 +1223,32 @@ public class DaemonMavenCli {
         }
     }
 
-    private void disableOnPresentOption(final CommandLine commandLine,
-            final String option,
-            final Consumer<Boolean> setting) {
+    private void disableOnPresentOption(
+            final CommandLine commandLine, final String option, final Consumer<Boolean> setting) {
         if (commandLine.hasOption(option)) {
             setting.accept(false);
         }
     }
 
-    private void disableOnPresentOption(final CommandLine commandLine,
-            final char option,
-            final Consumer<Boolean> setting) {
+    private void disableOnPresentOption(
+            final CommandLine commandLine, final char option, final Consumer<Boolean> setting) {
         disableOnPresentOption(commandLine, String.valueOf(option), setting);
     }
 
-    private void enableOnPresentOption(final CommandLine commandLine,
-            final String option,
-            final Consumer<Boolean> setting) {
+    private void enableOnPresentOption(
+            final CommandLine commandLine, final String option, final Consumer<Boolean> setting) {
         if (commandLine.hasOption(option)) {
             setting.accept(true);
         }
     }
 
-    private void enableOnPresentOption(final CommandLine commandLine,
-            final char option,
-            final Consumer<Boolean> setting) {
+    private void enableOnPresentOption(
+            final CommandLine commandLine, final char option, final Consumer<Boolean> setting) {
         enableOnPresentOption(commandLine, String.valueOf(option), setting);
     }
 
-    private void enableOnAbsentOption(final CommandLine commandLine,
-            final char option,
-            final Consumer<Boolean> setting) {
+    private void enableOnAbsentOption(
+            final CommandLine commandLine, final char option, final Consumer<Boolean> setting) {
         if (!commandLine.hasOption(option)) {
             setting.accept(true);
         }
@@ -1256,22 +1275,22 @@ public class DaemonMavenCli {
             return threads == 0 ? 1 : threads;
         } else {
             if (!NumberUtils.isParsable(threadConfiguration)) {
-                throw new IllegalArgumentException("Invalid threads value: '" + threadConfiguration
-                        + "'. Supported are int values.");
+                throw new IllegalArgumentException(
+                        "Invalid threads value: '" + threadConfiguration + "'. Supported are int values.");
             }
 
             try {
                 int threads = Integer.parseInt(threadConfiguration);
 
                 if (threads <= 0) {
-                    throw new IllegalArgumentException("Invalid threads value: '" + threadConfiguration
-                            + "'. Value must be positive.");
+                    throw new IllegalArgumentException(
+                            "Invalid threads value: '" + threadConfiguration + "'. Value must be positive.");
                 }
 
                 return threads;
             } catch (NumberFormatException e) {
-                throw new IllegalArgumentException("Invalid threads value: '" + threadConfiguration
-                        + "'. Supported are integer values.");
+                throw new IllegalArgumentException(
+                        "Invalid threads value: '" + threadConfiguration + "'. Supported are integer values.");
             }
         }
     }
@@ -1302,10 +1321,9 @@ public class DaemonMavenCli {
         // are most dominant.
         // ----------------------------------------------------------------------
 
-        final Properties userSpecifiedProperties = commandLine.getOptionProperties(
-                String.valueOf(CLIManager.SET_SYSTEM_PROPERTY));
-        userSpecifiedProperties.forEach(
-                (prop, value) -> setCliProperty((String) prop, (String) value, userProperties));
+        final Properties userSpecifiedProperties =
+                commandLine.getOptionProperties(String.valueOf(CLIManager.SET_SYSTEM_PROPERTY));
+        userSpecifiedProperties.forEach((prop, value) -> setCliProperty((String) prop, (String) value, userProperties));
 
         SystemProperties.addSystemProperties(systemProperties);
 
@@ -1327,7 +1345,8 @@ public class DaemonMavenCli {
         if (props != null) {
             boolean caseSensitive = Os.current() == Os.WINDOWS;
             for (Map.Entry<String, String> entry : System.getenv().entrySet()) {
-                String key = "env." + (caseSensitive ? entry.getKey() : entry.getKey().toUpperCase(Locale.ENGLISH));
+                String key = "env."
+                        + (caseSensitive ? entry.getKey() : entry.getKey().toUpperCase(Locale.ENGLISH));
                 props.setProperty(key, entry.getValue());
             }
         }
@@ -1344,8 +1363,7 @@ public class DaemonMavenCli {
         System.setProperty(name, value);
     }
 
-    static class ExitException
-            extends Exception {
+    static class ExitException extends Exception {
         static final long serialVersionUID = 1L;
         int exitCode;
 
@@ -1380,8 +1398,7 @@ public class DaemonMavenCli {
         return new Slf4jMavenTransferListener();
     }
 
-    protected ModelProcessor createModelProcessor(PlexusContainer container)
-            throws ComponentLookupException {
+    protected ModelProcessor createModelProcessor(PlexusContainer container) throws ComponentLookupException {
         return container.lookup(ModelProcessor.class);
     }
 }
diff --git a/daemon/src/main/java/org/apache/maven/cli/MvndHelpFormatter.java b/daemon/src/main/java/org/apache/maven/cli/MvndHelpFormatter.java
index 62594d4..68ce2ef 100644
--- a/daemon/src/main/java/org/apache/maven/cli/MvndHelpFormatter.java
+++ b/daemon/src/main/java/org/apache/maven/cli/MvndHelpFormatter.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.maven.cli;
 
@@ -54,8 +57,16 @@ public class MvndHelpFormatter {
             out.println();
             PrintWriter pw = new PrintWriter(out);
             HelpFormatter formatter = new HelpFormatter();
-            formatter.printHelp(pw, terminalWidth, "mvnd [options] [<goal(s)>] [<phase(s)>]", "\nOptions:", cliManager.options,
-                    1, 3, "\n", false);
+            formatter.printHelp(
+                    pw,
+                    terminalWidth,
+                    "mvnd [options] [<goal(s)>] [<phase(s)>]",
+                    "\nOptions:",
+                    cliManager.options,
+                    1,
+                    3,
+                    "\n",
+                    false);
             pw.flush();
         } catch (UnsupportedEncodingException e) {
             throw new RuntimeException(e);
@@ -65,78 +76,66 @@ public class MvndHelpFormatter {
         final String indent = m.find() ? m.group() : "                                        ";
 
         final String lineSeparator = System.lineSeparator();
-        final StringBuilder help = new StringBuilder(mvnHelp)
-                .append(lineSeparator)
-                .append("mvnd specific options:");
-
-        Environment.documentedEntries()
-                .forEach(entry -> {
-                    final Environment env = entry.getEntry();
-                    help.append(lineSeparator);
-                    int indentPos = help.length() + indent.length();
-                    int lineEnd = help.length() + terminalWidth;
-                    spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
-                    final String property = env.getProperty();
-                    if (property != null) {
-                        help
-                                .append("-D")
-                                .append(property);
-                        if (env.getType() != OptionType.VOID) {
-                            help
-                                    .append("=<")
-                                    .append(env.getType().name().toLowerCase(Locale.ROOT))
-                                    .append('>');
-
-                        }
-                    }
+        final StringBuilder help =
+                new StringBuilder(mvnHelp).append(lineSeparator).append("mvnd specific options:");
+
+        Environment.documentedEntries().forEach(entry -> {
+            final Environment env = entry.getEntry();
+            help.append(lineSeparator);
+            int indentPos = help.length() + indent.length();
+            int lineEnd = help.length() + terminalWidth;
+            spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
+            final String property = env.getProperty();
+            if (property != null) {
+                help.append("-D").append(property);
+                if (env.getType() != OptionType.VOID) {
+                    help.append("=<")
+                            .append(env.getType().name().toLowerCase(Locale.ROOT))
+                            .append('>');
+                }
+            }
 
-                    final Set<String> opts = env.getOptions();
-                    if (!opts.isEmpty()) {
-                        if (property != null) {
-                            help.append(';');
-                        }
-                        boolean first = true;
-                        for (String opt : opts) {
-                            if (first) {
-                                first = false;
-                            } else {
-                                help.append(',');
-                            }
-                            help.append(opt);
-                        }
-                        if (env.getType() != OptionType.VOID) {
-                            help
-                                    .append(" <")
-                                    .append(env.getType().name().toLowerCase(Locale.ROOT))
-                                    .append('>');
-                        }
+            final Set<String> opts = env.getOptions();
+            if (!opts.isEmpty()) {
+                if (property != null) {
+                    help.append(';');
+                }
+                boolean first = true;
+                for (String opt : opts) {
+                    if (first) {
+                        first = false;
+                    } else {
+                        help.append(',');
                     }
-                    help.append(' ');
-
-                    spaces(help, indentPos - help.length());
-                    wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
+                    help.append(opt);
+                }
+                if (env.getType() != OptionType.VOID) {
+                    help.append(" <")
+                            .append(env.getType().name().toLowerCase(Locale.ROOT))
+                            .append('>');
+                }
+            }
+            help.append(' ');
 
-                    indentedLine(help, terminalWidth, "Default", env.getDefault(), indent);
-                    indentedLine(help, terminalWidth, "Env. variable", env.getEnvironmentVariable(), indent);
+            spaces(help, indentPos - help.length());
+            wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
 
-                });
+            indentedLine(help, terminalWidth, "Default", env.getDefault(), indent);
+            indentedLine(help, terminalWidth, "Env. variable", env.getEnvironmentVariable(), indent);
+        });
 
-        help
-                .append(lineSeparator)
-                .append(lineSeparator)
-                .append("mvnd value types:");
+        help.append(lineSeparator).append(lineSeparator).append("mvnd value types:");
 
-        OptionType.documentedEntries()
-                .forEach(entry -> {
-                    final OptionType type = entry.getEntry();
-                    help.append(lineSeparator);
-                    int indentPos = help.length() + indent.length();
-                    int lineEnd = help.length() + terminalWidth;
-                    spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
-                    help.append(type.name().toLowerCase(Locale.ROOT));
-                    spaces(help, indentPos - help.length());
-                    wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
-                });
+        OptionType.documentedEntries().forEach(entry -> {
+            final OptionType type = entry.getEntry();
+            help.append(lineSeparator);
+            int indentPos = help.length() + indent.length();
+            int lineEnd = help.length() + terminalWidth;
+            spaces(help, HelpFormatter.DEFAULT_LEFT_PAD);
+            help.append(type.name().toLowerCase(Locale.ROOT));
+            spaces(help, indentPos - help.length());
+            wrap(help, toPlainText(entry.getJavaDoc()), terminalWidth, lineEnd, indent);
+        });
 
         return help.toString();
     }
@@ -151,13 +150,12 @@ public class MvndHelpFormatter {
         return terminalWidth;
     }
 
-    private static void indentedLine(StringBuilder stringBuilder, int terminalWidth, String key, String value, String indent) {
+    private static void indentedLine(
+            StringBuilder stringBuilder, int terminalWidth, String key, String value, String indent) {
         int lineEnd;
         if (value != null) {
             lineEnd = stringBuilder.length() + terminalWidth;
-            stringBuilder
-                    .append(System.lineSeparator())
-                    .append(indent);
+            stringBuilder.append(System.lineSeparator()).append(indent);
             wrap(stringBuilder, key + ": " + value, terminalWidth, lineEnd, indent);
         }
     }
@@ -187,10 +185,7 @@ public class MvndHelpFormatter {
 
                 } else {
                     nextLineEnd = stringBuilder.length() + lineLength;
-                    stringBuilder
-                            .append(System.lineSeparator())
-                            .append(indent)
-                            .append(token);
+                    stringBuilder.append(System.lineSeparator()).append(indent).append(token);
                 }
                 lastWs = null;
             }
@@ -210,5 +205,4 @@ public class MvndHelpFormatter {
         }
         return stringBuilder;
     }
-
 }
diff --git a/daemon/src/main/java/org/apache/maven/project/CachingProjectBuilder.java b/daemon/src/main/java/org/apache/maven/project/CachingProjectBuilder.java
index 0dfe755..6dc067b 100644
--- a/daemon/src/main/java/org/apache/maven/project/CachingProjectBuilder.java
+++ b/daemon/src/main/java/org/apache/maven/project/CachingProjectBuilder.java
@@ -7,7 +7,7 @@
  * "License"); you may not use this file except in compliance
  * with the License.  You may obtain a copy of the License at
  *
- *  http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
  * Unless required by applicable law or agreed to in writing,
  * software distributed under the License is distributed on an
@@ -90,8 +90,7 @@ import org.eclipse.sisu.Priority;
 @Named
 @Singleton
 @Priority(10)
-public class CachingProjectBuilder
-        implements ProjectBuilder {
+public class CachingProjectBuilder implements ProjectBuilder {
 
     @Inject
     private Logger logger;
@@ -124,17 +123,14 @@ public class CachingProjectBuilder
     // ----------------------------------------------------------------------
 
     @Override
-    public ProjectBuildingResult build(File pomFile, ProjectBuildingRequest request)
-            throws ProjectBuildingException {
-        return build(pomFile, new FileModelSource(pomFile),
-                new InternalConfig(request, null, null));
+    public ProjectBuildingResult build(File pomFile, ProjectBuildingRequest request) throws ProjectBuildingException {
+        return build(pomFile, new FileModelSource(pomFile), new InternalConfig(request, null, null));
     }
 
     @Override
     public ProjectBuildingResult build(ModelSource modelSource, ProjectBuildingRequest request)
             throws ProjectBuildingException {
-        return build(null, modelSource,
-                new InternalConfig(request, null, null));
+        return build(null, modelSource, new InternalConfig(request, null, null));
     }
 
     private ProjectBuildingResult build(File pomFile, ModelSource modelSource, InternalConfig config)
@@ -155,8 +151,8 @@ public class CachingProjectBuilder
                 project = new MavenProject();
                 project.setFile(pomFile);
 
-                DefaultModelBuildingListener listener = new DefaultModelBuildingListener(project, projectBuildingHelper,
-                        projectBuildingRequest);
+                DefaultModelBuildingListener listener =
+                        new DefaultModelBuildingListener(project, projectBuildingHelper, projectBuildingRequest);
                 request.setModelBuildingListener(listener);
 
                 request.setPomFile(pomFile);
@@ -177,8 +173,7 @@ public class CachingProjectBuilder
 
                 modelProblems = result.getProblems();
 
-                initProject(project, Collections.emptyMap(), true,
-                        result, new HashMap<>(), projectBuildingRequest);
+                initProject(project, Collections.emptyMap(), true, result, new HashMap<>(), projectBuildingRequest);
             } else if (projectBuildingRequest.isResolveDependencies()) {
                 projectBuildingHelper.selectProjectRealm(project);
             }
@@ -215,8 +210,11 @@ public class CachingProjectBuilder
 
         Set<Artifact> artifacts = new LinkedHashSet<>();
         if (resolutionResult.getDependencyGraph() != null) {
-            RepositoryUtils.toArtifacts(artifacts, resolutionResult.getDependencyGraph().getChildren(),
-                    Collections.singletonList(project.getArtifact().getId()), null);
+            RepositoryUtils.toArtifacts(
+                    artifacts,
+                    resolutionResult.getDependencyGraph().getChildren(),
+                    Collections.singletonList(project.getArtifact().getId()),
+                    null);
 
             // Maven 2.x quirk: an artifact always points at the local repo, regardless whether resolved or not
             LocalRepositoryManager lrm = session.getLocalRepositoryManager();
@@ -243,9 +241,14 @@ public class CachingProjectBuilder
 
         RequestTrace trace = RequestTrace.newChild(null, configuration).newChild(request);
 
-        ModelResolver resolver = new ProjectModelResolver(config.session, trace, repoSystem, repositoryManager,
+        ModelResolver resolver = new ProjectModelResolver(
+                config.session,
+                trace,
+                repoSystem,
+                repositoryManager,
                 config.repositories,
-                configuration.getRepositoryMerging(), config.modelPool);
+                configuration.getRepositoryMerging(),
+                config.modelPool);
 
         request.setValidationLevel(configuration.getValidationLevel());
         request.setProcessPlugins(configuration.isProcessPlugins());
@@ -293,8 +296,8 @@ public class CachingProjectBuilder
             if (e.getResults().get(0).isMissing() && allowStubModel) {
                 return build(null, createStubModelSource(artifact), config);
             }
-            throw new ProjectBuildingException(artifact.getId(),
-                    "Error resolving project artifact: " + e.getMessage(), e);
+            throw new ProjectBuildingException(
+                    artifact.getId(), "Error resolving project artifact: " + e.getMessage(), e);
         }
 
         File pomFile = pomArtifact.getFile();
@@ -308,8 +311,10 @@ public class CachingProjectBuilder
         if (localProject) {
             return build(pomFile, new FileModelSource(pomFile), config);
         } else {
-            return build(null, new ArtifactModelSource(pomFile, artifact.getGroupId(), artifact.getArtifactId(),
-                    artifact.getVersion()),
+            return build(
+                    null,
+                    new ArtifactModelSource(
+                            pomFile, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion()),
                     config);
         }
     }
@@ -344,22 +349,38 @@ public class CachingProjectBuilder
         Map<File, MavenProject> projectIndex = new HashMap<>(256);
 
         // phase 1: get file Models from the reactor.
-        boolean noErrors = build(results, interimResults, projectIndex, pomFiles, new LinkedHashSet<>(), true, recursive,
-                config, poolBuilder);
+        boolean noErrors = build(
+                results,
+                interimResults,
+                projectIndex,
+                pomFiles,
+                new LinkedHashSet<>(),
+                true,
+                recursive,
+                config,
+                poolBuilder);
 
         ClassLoader oldContextClassLoader = Thread.currentThread().getContextClassLoader();
 
         try {
             // Phase 2: get effective models from the reactor
-            noErrors = build(results, new ArrayList<>(), projectIndex, interimResults, request,
-                    new HashMap<>(), config.session) && noErrors;
+            noErrors = build(
+                            results,
+                            new ArrayList<>(),
+                            projectIndex,
+                            interimResults,
+                            request,
+                            new HashMap<>(),
+                            config.session)
+                    && noErrors;
         } finally {
             Thread.currentThread().setContextClassLoader(oldContextClassLoader);
         }
 
         if (Features.buildConsumer(request.getUserProperties()).isActive()) {
-            request.getRepositorySession().getData().set(TransformerContext.KEY,
-                    config.transformerContextBuilder.build());
+            request.getRepositorySession()
+                    .getData()
+                    .set(TransformerContext.KEY, config.transformerContextBuilder.build());
         }
 
         if (!noErrors) {
@@ -370,16 +391,30 @@ public class CachingProjectBuilder
     }
 
     @SuppressWarnings("checkstyle:parameternumber")
-    private boolean build(List<ProjectBuildingResult> results, List<InterimResult> interimResults,
-            Map<File, MavenProject> projectIndex, List<File> pomFiles, Set<File> aggregatorFiles,
-            boolean root, boolean recursive, InternalConfig config,
+    private boolean build(
+            List<ProjectBuildingResult> results,
+            List<InterimResult> interimResults,
+            Map<File, MavenProject> projectIndex,
+            List<File> pomFiles,
+            Set<File> aggregatorFiles,
+            boolean root,
+            boolean recursive,
+            InternalConfig config,
             ReactorModelPool.Builder poolBuilder) {
         boolean noErrors = true;
 
         for (File pomFile : pomFiles) {
             aggregatorFiles.add(pomFile);
 
-            if (!build(results, interimResults, projectIndex, pomFile, aggregatorFiles, root, recursive, config,
+            if (!build(
+                    results,
+                    interimResults,
+                    projectIndex,
+                    pomFile,
+                    aggregatorFiles,
+                    root,
+                    recursive,
+                    config,
                     poolBuilder)) {
                 noErrors = false;
             }
@@ -391,9 +426,15 @@ public class CachingProjectBuilder
     }
 
     @SuppressWarnings("checkstyle:parameternumber")
-    private boolean build(List<ProjectBuildingResult> results, List<InterimResult> interimResults,
-            Map<File, MavenProject> projectIndex, File pomFile, Set<File> aggregatorFiles,
-            boolean isRoot, boolean recursive, InternalConfig config,
+    private boolean build(
+            List<ProjectBuildingResult> results,
+            List<InterimResult> interimResults,
+            Map<File, MavenProject> projectIndex,
+            File pomFile,
+            Set<File> aggregatorFiles,
+            boolean isRoot,
+            boolean recursive,
+            InternalConfig config,
             ReactorModelPool.Builder poolBuilder) {
         boolean noErrors = true;
 
@@ -405,8 +446,8 @@ public class CachingProjectBuilder
                 .setTwoPhaseBuilding(true)
                 .setLocationTracking(true);
 
-        DefaultModelBuildingListener listener = new DefaultModelBuildingListener(project, projectBuildingHelper,
-                config.request);
+        DefaultModelBuildingListener listener =
+                new DefaultModelBuildingListener(project, projectBuildingHelper, config.request);
         request.setModelBuildingListener(listener);
 
         ModelBuildingResult result;
@@ -448,9 +489,14 @@ public class CachingProjectBuilder
                 }
 
                 if (!moduleFile.isFile()) {
-                    ModelProblem problem = new DefaultModelProblem("Child module " + moduleFile + " of " + pomFile
-                            + " does not exist", ModelProblem.Severity.ERROR, ModelProblem.Version.BASE, model, -1,
-                            -1, null);
+                    ModelProblem problem = new DefaultModelProblem(
+                            "Child module " + moduleFile + " of " + pomFile + " does not exist",
+                            ModelProblem.Severity.ERROR,
+                            ModelProblem.Version.BASE,
+                            model,
+                            -1,
+                            -1,
+                            null);
                     result.getProblems().add(problem);
 
                     noErrors = false;
@@ -476,9 +522,14 @@ public class CachingProjectBuilder
                     }
                     buffer.append(moduleFile);
 
-                    ModelProblem problem = new DefaultModelProblem("Child module " + moduleFile + " of " + pomFile
-                            + " forms aggregation cycle " + buffer, ModelProblem.Severity.ERROR,
-                            ModelProblem.Version.BASE, model, -1, -1, null);
+                    ModelProblem problem = new DefaultModelProblem(
+                            "Child module " + moduleFile + " of " + pomFile + " forms aggregation cycle " + buffer,
+                            ModelProblem.Severity.ERROR,
+                            ModelProblem.Version.BASE,
+                            model,
+                            -1,
+                            -1,
+                            null);
                     result.getProblems().add(problem);
 
                     noErrors = false;
@@ -491,8 +542,16 @@ public class CachingProjectBuilder
 
             interimResult.modules = new ArrayList<>();
 
-            if (!build(results, interimResult.modules, projectIndex, moduleFiles, aggregatorFiles, false,
-                    recursive, config, poolBuilder)) {
+            if (!build(
+                    results,
+                    interimResult.modules,
+                    projectIndex,
+                    moduleFiles,
+                    aggregatorFiles,
+                    false,
+                    recursive,
+                    config,
+                    poolBuilder)) {
                 noErrors = false;
             }
         }
@@ -516,20 +575,27 @@ public class CachingProjectBuilder
 
         List<InterimResult> modules = Collections.emptyList();
 
-        InterimResult(File pomFile, ModelBuildingRequest request, ModelBuildingResult result,
-                DefaultModelBuildingListener listener, boolean root) {
+        InterimResult(
+                File pomFile,
+                ModelBuildingRequest request,
+                ModelBuildingResult result,
+                DefaultModelBuildingListener listener,
+                boolean root) {
             this.pomFile = pomFile;
             this.request = request;
             this.result = result;
             this.listener = listener;
             this.root = root;
         }
-
     }
 
-    private boolean build(List<ProjectBuildingResult> results, List<MavenProject> projects,
-            Map<File, MavenProject> projectIndex, List<InterimResult> interimResults,
-            ProjectBuildingRequest request, Map<File, Boolean> profilesXmls,
+    private boolean build(
+            List<ProjectBuildingResult> results,
+            List<MavenProject> projects,
+            Map<File, MavenProject> projectIndex,
+            List<InterimResult> interimResults,
+            ProjectBuildingRequest request,
+            Map<File, Boolean> profilesXmls,
             RepositorySystemSession session) {
         boolean noErrors = true;
 
@@ -542,8 +608,15 @@ public class CachingProjectBuilder
                 try {
                     initProject(project, projectIndex, true, result, profilesXmls, request);
                 } catch (InvalidArtifactRTException iarte) {
-                    result.getProblems().add(new DefaultModelProblem(null, ModelProblem.Severity.ERROR, null,
-                            result.getEffectiveModel(), -1, -1, iarte));
+                    result.getProblems()
+                            .add(new DefaultModelProblem(
+                                    null,
+                                    ModelProblem.Severity.ERROR,
+                                    null,
+                                    result.getEffectiveModel(),
+                                    -1,
+                                    -1,
+                                    iarte));
                 }
 
                 List<MavenProject> modules = new ArrayList<>();
@@ -580,9 +653,13 @@ public class CachingProjectBuilder
     }
 
     @SuppressWarnings("checkstyle:methodlength")
-    private void initProject(MavenProject project, Map<File, MavenProject> projects,
-            boolean buildParentIfNotExisting, ModelBuildingResult result,
-            Map<File, Boolean> profilesXmls, ProjectBuildingRequest projectBuildingRequest) {
+    private void initProject(
+            MavenProject project,
+            Map<File, MavenProject> projects,
+            boolean buildParentIfNotExisting,
+            ModelBuildingResult result,
+            Map<File, Boolean> profilesXmls,
+            ProjectBuildingRequest projectBuildingRequest) {
         Model model = result.getEffectiveModel();
 
         project.setModel(model);
@@ -590,9 +667,8 @@ public class CachingProjectBuilder
 
         initParent(project, projects, buildParentIfNotExisting, result, projectBuildingRequest);
 
-        Artifact projectArtifact = repositorySystem.createArtifact(project.getGroupId(), project.getArtifactId(),
-                project.getVersion(), null,
-                project.getPackaging());
+        Artifact projectArtifact = repositorySystem.createArtifact(
+                project.getGroupId(), project.getArtifactId(), project.getVersion(), null, project.getPackaging());
         project.setArtifact(projectArtifact);
 
         if (project.getFile() != null && buildParentIfNotExisting) // only set those on 2nd phase, ignore on 1st pass
@@ -658,8 +734,8 @@ public class CachingProjectBuilder
                     version = ext.getVersion();
                 }
 
-                Artifact artifact = repositorySystem.createArtifact(ext.getGroupId(), ext.getArtifactId(), version, null,
-                        "jar");
+                Artifact artifact =
+                        repositorySystem.createArtifact(ext.getGroupId(), ext.getArtifactId(), version, null, "jar");
 
                 if (artifact != null) {
                     extensionArtifacts.add(artifact);
@@ -672,7 +748,8 @@ public class CachingProjectBuilder
         Map<String, Artifact> map = null;
         if (repositorySystem != null) {
             final DependencyManagement dependencyManagement = project.getDependencyManagement();
-            if ((dependencyManagement != null) && ((dependencyManagement.getDependencies()) != null)
+            if ((dependencyManagement != null)
+                    && ((dependencyManagement.getDependencies()) != null)
                     && (dependencyManagement.getDependencies().size() > 0)) {
                 map = new AbstractMap<String, Artifact>() {
                     HashMap<String, Artifact> delegate;
@@ -735,15 +812,14 @@ public class CachingProjectBuilder
                 DeploymentRepository r = project.getDistributionManagement().getRepository();
                 if (!StringUtils.isEmpty(r.getId()) && !StringUtils.isEmpty(r.getUrl())) {
                     ArtifactRepository repo = MavenRepositorySystem.buildArtifactRepository(r);
-                    repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(),
-                            Arrays.asList(repo));
-                    repositorySystem.injectAuthentication(projectBuildingRequest.getRepositorySession(),
-                            Arrays.asList(repo));
+                    repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(), Arrays.asList(repo));
+                    repositorySystem.injectAuthentication(
+                            projectBuildingRequest.getRepositorySession(), Arrays.asList(repo));
                     project.setReleaseArtifactRepository(repo);
                 }
             } catch (InvalidRepositoryException e) {
-                throw new IllegalStateException("Failed to create release distribution repository for "
-                        + project.getId(), e);
+                throw new IllegalStateException(
+                        "Failed to create release distribution repository for " + project.getId(), e);
             }
         }
 
@@ -754,32 +830,35 @@ public class CachingProjectBuilder
                 DeploymentRepository r = project.getDistributionManagement().getSnapshotRepository();
                 if (!StringUtils.isEmpty(r.getId()) && !StringUtils.isEmpty(r.getUrl())) {
                     ArtifactRepository repo = MavenRepositorySystem.buildArtifactRepository(r);
-                    repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(),
-                            Arrays.asList(repo));
-                    repositorySystem.injectAuthentication(projectBuildingRequest.getRepositorySession(),
-                            Arrays.asList(repo));
+                    repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(), Arrays.asList(repo));
+                    repositorySystem.injectAuthentication(
+                            projectBuildingRequest.getRepositorySession(), Arrays.asList(repo));
                     project.setSnapshotArtifactRepository(repo);
                 }
             } catch (InvalidRepositoryException e) {
-                throw new IllegalStateException("Failed to create snapshot distribution repository for "
-                        + project.getId(), e);
+                throw new IllegalStateException(
+                        "Failed to create snapshot distribution repository for " + project.getId(), e);
             }
         }
     }
 
-    private void initParent(MavenProject project, Map<File, MavenProject> projects, boolean buildParentIfNotExisting,
-            ModelBuildingResult result, ProjectBuildingRequest projectBuildingRequest) {
-        Model parentModel = result.getModelIds().size() > 1 && !result.getModelIds().get(1).isEmpty()
-                ? result.getRawModel(result.getModelIds().get(1))
-                : null;
+    private void initParent(
+            MavenProject project,
+            Map<File, MavenProject> projects,
+            boolean buildParentIfNotExisting,
+            ModelBuildingResult result,
+            ProjectBuildingRequest projectBuildingRequest) {
+        Model parentModel =
+                result.getModelIds().size() > 1 && !result.getModelIds().get(1).isEmpty()
+                        ? result.getRawModel(result.getModelIds().get(1))
+                        : null;
 
         if (parentModel != null) {
             final String parentGroupId = inheritedGroupId(result, 1);
             final String parentVersion = inheritedVersion(result, 1);
 
-            project.setParentArtifact(repositorySystem.createProjectArtifact(parentGroupId,
-                    parentModel.getArtifactId(),
-                    parentVersion));
+            project.setParentArtifact(
+                    repositorySystem.createProjectArtifact(parentGroupId, parentModel.getArtifactId(), parentVersion));
 
             // org.apache.maven.its.mng4834:parent:0.1
             String parentModelId = result.getModelIds().get(1);
@@ -835,10 +914,7 @@ public class CachingProjectBuilder
 
         if (!modelId.isEmpty()) {
             final Model model = result.getRawModel(modelId);
-            groupId = model.getGroupId() != null
-                    ? model.getGroupId()
-                    : inheritedGroupId(result, modelIndex + 1);
-
+            groupId = model.getGroupId() != null ? model.getGroupId() : inheritedGroupId(result, modelIndex + 1);
         }
 
         return groupId;
@@ -850,10 +926,7 @@ public class CachingProjectBuilder
 
         if (!modelId.isEmpty()) {
             final Model model = result.getRawModel(modelId);
-            version = model.getVersion() != null
-                    ? model.getVersion()
-                    : inheritedVersion(result, modelIndex + 1);
-
+            version = model.getVersion() != null ? model.getVersion() : inheritedVersion(result, modelIndex + 1);
         }
 
         return version;
@@ -874,18 +947,17 @@ public class CachingProjectBuilder
 
         private final TransformerContextBuilder transformerContextBuilder;
 
-        InternalConfig(ProjectBuildingRequest request, ReactorModelPool modelPool,
+        InternalConfig(
+                ProjectBuildingRequest request,
+                ReactorModelPool modelPool,
                 TransformerContextBuilder transformerContextBuilder) {
             this.request = request;
             this.modelPool = modelPool;
             this.transformerContextBuilder = transformerContextBuilder;
 
-            session = LegacyLocalRepositoryManager.overlay(request.getLocalRepository(), request.getRepositorySession(),
-                    repoSystem);
+            session = LegacyLocalRepositoryManager.overlay(
+                    request.getLocalRepository(), request.getRepositorySession(), repoSystem);
             repositories = RepositoryUtils.toRepos(request.getRemoteRepositories());
-
         }
-
     }
-
 }
diff --git a/daemon/src/main/java/org/apache/maven/project/SnapshotModelCache.java b/daemon/src/main/java/org/apache/maven/project/SnapshotModelCache.java
index c80f69e..c654dd9 100644
--- a/daemon/src/main/java/org/apache/maven/project/SnapshotModelCache.java
+++ b/daemon/src/main/java/org/apache/maven/project/SnapshotModelCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.apache.maven.project;
 
@@ -38,7 +41,6 @@ public class SnapshotModelCache implements ModelCache {
     }
 
     private ModelCache getDelegate(String version) {
-        return version.contains("SNAPSHOT") || version.contains("${")
-                ? reactorCache : globalCache;
+        return version.contains("SNAPSHOT") || version.contains("${") ? reactorCache : globalCache;
     }
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/DependencyGraph.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/DependencyGraph.java
index 19baf21..a8d7ad2 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/DependencyGraph.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/DependencyGraph.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -54,10 +57,10 @@ public class DependencyGraph<K> {
 
     static DependencyGraph<MavenProject> fromMaven(ProjectDependencyGraph graph) {
         final List<MavenProject> projects = graph.getSortedProjects();
-        Map<MavenProject, List<MavenProject>> upstreams = projects.stream()
-                .collect(Collectors.toMap(p -> p, p -> graph.getUpstreamProjects(p, false)));
-        Map<MavenProject, List<MavenProject>> downstreams = projects.stream()
-                .collect(Collectors.toMap(p -> p, p -> graph.getDownstreamProjects(p, false)));
+        Map<MavenProject, List<MavenProject>> upstreams =
+                projects.stream().collect(Collectors.toMap(p -> p, p -> graph.getUpstreamProjects(p, false)));
+        Map<MavenProject, List<MavenProject>> downstreams =
+                projects.stream().collect(Collectors.toMap(p -> p, p -> graph.getDownstreamProjects(p, false)));
         return new DependencyGraph<>(Collections.unmodifiableList(projects), upstreams, downstreams);
     }
 
@@ -70,7 +73,10 @@ public class DependencyGraph<K> {
         projects.forEach(this::transitiveUpstreams); // topological ordering of projects matters
     }
 
-    DependencyGraph(List<K> projects, Map<K, List<K>> upstreams, Map<K, List<K>> downstreams,
+    DependencyGraph(
+            List<K> projects,
+            Map<K, List<K>> upstreams,
+            Map<K, List<K>> downstreams,
             Map<K, Set<K>> transitiveUpstreams) {
         this.projects = projects;
         this.upstreams = upstreams;
@@ -138,29 +144,20 @@ public class DependencyGraph<K> {
 
     @Override
     public boolean equals(Object obj) {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (getClass() != obj.getClass()) return false;
         @SuppressWarnings("unchecked")
         DependencyGraph<K> other = (DependencyGraph<K>) obj;
         if (downstreams == null) {
-            if (other.downstreams != null)
-                return false;
-        } else if (!downstreams.equals(other.downstreams))
-            return false;
+            if (other.downstreams != null) return false;
+        } else if (!downstreams.equals(other.downstreams)) return false;
         if (projects == null) {
-            if (other.projects != null)
-                return false;
-        } else if (!projects.equals(other.projects))
-            return false;
+            if (other.projects != null) return false;
+        } else if (!projects.equals(other.projects)) return false;
         if (upstreams == null) {
-            if (other.upstreams != null)
-                return false;
-        } else if (!upstreams.equals(other.upstreams))
-            return false;
+            if (other.upstreams != null) return false;
+        } else if (!upstreams.equals(other.upstreams)) return false;
         return true;
     }
 
@@ -207,16 +204,21 @@ public class DependencyGraph<K> {
                 newNodeUpstreams = new ArrayList<>(oldNodeUpstreams);
             } else if (oldNodeUpstreams.size() == 1) {
                 newNodeUpstreams = new ArrayList<>(oldNodeUpstreams);
-                newDownstreams.computeIfAbsent(newNodeUpstreams.get(0), k -> new ArrayList<>()).add(node);
+                newDownstreams
+                        .computeIfAbsent(newNodeUpstreams.get(0), k -> new ArrayList<>())
+                        .add(node);
             } else {
                 newNodeUpstreams = new ArrayList<>(oldNodeUpstreams.size());
                 for (K leftNode : oldNodeUpstreams) {
                     if (oldNodeUpstreams.stream()
                             .filter(rightNode -> leftNode != rightNode)
-                            .noneMatch(rightNode -> transitiveUpstreams.get(rightNode).contains(leftNode))) {
+                            .noneMatch(rightNode ->
+                                    transitiveUpstreams.get(rightNode).contains(leftNode))) {
 
                         newNodeUpstreams.add(leftNode);
-                        newDownstreams.computeIfAbsent(leftNode, k -> new ArrayList<>()).add(node);
+                        newDownstreams
+                                .computeIfAbsent(leftNode, k -> new ArrayList<>())
+                                .add(node);
                     }
                 }
             }
@@ -237,9 +239,7 @@ public class DependencyGraph<K> {
         if (result == null) {
             final List<K> firstOrderUpstreams = this.upstreams.get(node);
             result = new HashSet<>(firstOrderUpstreams);
-            firstOrderUpstreams.stream()
-                    .map(this::transitiveUpstreams)
-                    .forEach(result::addAll);
+            firstOrderUpstreams.stream().map(this::transitiveUpstreams).forEach(result::addAll);
             transitiveUpstreams.put(node, result);
         }
         return result;
@@ -269,10 +269,7 @@ public class DependencyGraph<K> {
                 graph.transitiveUpstreams.forEach((k, ups) -> {
                     mapByUpstreams.computeIfAbsent(ups, n -> new HashSet<>()).add(k);
                 });
-                max = mapByUpstreams.values().stream()
-                        .mapToInt(Set::size)
-                        .max()
-                        .orElse(0);
+                max = mapByUpstreams.values().stream().mapToInt(Set::size).max().orElse(0);
                 if (max >= maxmax) {
                     return maxmax;
                 }
@@ -316,22 +313,17 @@ public class DependencyGraph<K> {
         }
 
         private List<K> getRoots() {
-            return graph.getProjects()
-                    .filter(graph::isRoot)
-                    .collect(Collectors.toList());
+            return graph.getProjects().filter(graph::isRoot).collect(Collectors.toList());
         }
 
         List<K> ensembleWithChildrenOf(List<K> list, K node) {
             final List<K> result = Stream.concat(
-                    list.stream().filter(k -> !Objects.equals(k, node)),
-                    graph.getDownstreamProjects(node)
-                            .filter(k -> graph.transitiveUpstreams.get(k)
-                                    .stream()
+                            list.stream().filter(k -> !Objects.equals(k, node)),
+                            graph.getDownstreamProjects(node).filter(k -> graph.transitiveUpstreams.get(k).stream()
                                     .noneMatch(k2 -> !Objects.equals(k2, node) && list.contains(k2))))
-                    .distinct().collect(Collectors.toList());
+                    .distinct()
+                    .collect(Collectors.toList());
             return result;
         }
-
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectComparator.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectComparator.java
index 956932a..fee21ce 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectComparator.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectComparator.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2014 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -55,7 +58,8 @@ class ProjectComparator {
         return create0(graph, Collections.emptyMap(), ProjectComparator::id);
     }
 
-    static <K> Comparator<K> create0(DependencyGraph<K> dependencyGraph,
+    static <K> Comparator<K> create0(
+            DependencyGraph<K> dependencyGraph,
             Map<String, AtomicLong> historicalServiceTimes,
             Function<K, String> toKey) {
         final long defaultServiceTime = average(historicalServiceTimes.values());
@@ -79,18 +83,18 @@ class ProjectComparator {
     }
 
     private static long average(Collection<AtomicLong> values) {
-        return (long) (values.stream().mapToLong(AtomicLong::longValue)
-                .average().orElse(1.0d));
+        return (long)
+                (values.stream().mapToLong(AtomicLong::longValue).average().orElse(1.0d));
     }
 
-    private static <K> long getServiceTime(Map<String, AtomicLong> serviceTimes, K project,
-            long defaultServiceTime, Function<K, String> toKey) {
+    private static <K> long getServiceTime(
+            Map<String, AtomicLong> serviceTimes, K project, long defaultServiceTime, Function<K, String> toKey) {
         AtomicLong serviceTime = serviceTimes.get(toKey.apply(project));
         return serviceTime != null ? serviceTime.longValue() : defaultServiceTime;
     }
 
-    private static <K> Map<K, Long> calculateWeights(DependencyGraph<K> dependencyGraph,
-            Map<K, Long> serviceTimes, Collection<K> rootProjects) {
+    private static <K> Map<K, Long> calculateWeights(
+            DependencyGraph<K> dependencyGraph, Map<K, Long> serviceTimes, Collection<K> rootProjects) {
         Map<K, Long> weights = new HashMap<>();
         for (K rootProject : rootProjects) {
             calculateWeights(dependencyGraph, serviceTimes, rootProject, weights);
@@ -102,10 +106,11 @@ class ProjectComparator {
      * Returns the maximum sum of build time along a path from the project to an exit project. An
      * "exit project" is a project without downstream dependencies.
      */
-    private static <K> long calculateWeights(DependencyGraph<K> dependencyGraph,
-            Map<K, Long> serviceTimes, K project, Map<K, Long> weights) {
+    private static <K> long calculateWeights(
+            DependencyGraph<K> dependencyGraph, Map<K, Long> serviceTimes, K project, Map<K, Long> weights) {
         long weight = serviceTimes.get(project)
-                + dependencyGraph.getDownstreamProjects(project)
+                + dependencyGraph
+                        .getDownstreamProjects(project)
                         .mapToLong(successor -> {
                             long successorWeight;
                             if (weights.containsKey(successor)) {
@@ -115,15 +120,13 @@ class ProjectComparator {
                             }
                             return successorWeight;
                         })
-                        .max().orElse(0);
+                        .max()
+                        .orElse(0);
         weights.put(project, weight);
         return weight;
     }
 
     static String id(MavenProject project) {
-        return project.getGroupId() +
-                ':' + project.getArtifactId() +
-                ':' + project.getVersion();
+        return project.getGroupId() + ':' + project.getArtifactId() + ':' + project.getVersion();
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectExecutorService.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectExecutorService.java
index 63b9710..58f56f0 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectExecutorService.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ProjectExecutorService.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2014 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -44,36 +47,35 @@ class ProjectExecutorService {
     private final BlockingQueue<Future<MavenProject>> completion = new LinkedBlockingQueue<>();
     private final Comparator<Runnable> taskComparator;
 
-    public ProjectExecutorService(final int degreeOfConcurrency,
-            final Comparator<MavenProject> projectComparator) {
+    public ProjectExecutorService(final int degreeOfConcurrency, final Comparator<MavenProject> projectComparator) {
 
-        this.taskComparator = Comparator.comparing(
-                r -> ((ProjectRunnable) r).getProject(), projectComparator);
+        this.taskComparator = Comparator.comparing(r -> ((ProjectRunnable) r).getProject(), projectComparator);
 
-        final BlockingQueue<Runnable> executorWorkQueue = new PriorityBlockingQueue<>(degreeOfConcurrency, taskComparator);
+        final BlockingQueue<Runnable> executorWorkQueue =
+                new PriorityBlockingQueue<>(degreeOfConcurrency, taskComparator);
 
-        executor = new ThreadPoolExecutor(degreeOfConcurrency, // corePoolSize
-                degreeOfConcurrency, // maximumPoolSize
-                0L, TimeUnit.MILLISECONDS, // keepAliveTime, unit
-                executorWorkQueue, // workQueue
-                new BuildThreadFactory() // threadFactory
-        ) {
+        executor =
+                new ThreadPoolExecutor(
+                        degreeOfConcurrency, // corePoolSize
+                        degreeOfConcurrency, // maximumPoolSize
+                        0L,
+                        TimeUnit.MILLISECONDS, // keepAliveTime, unit
+                        executorWorkQueue, // workQueue
+                        new BuildThreadFactory() // threadFactory
+                        ) {
 
-            @Override
-            protected void beforeExecute(Thread t, Runnable r) {
-                ProjectExecutorService.this.beforeExecute(t, r);
-            }
-        };
+                    @Override
+                    protected void beforeExecute(Thread t, Runnable r) {
+                        ProjectExecutorService.this.beforeExecute(t, r);
+                    }
+                };
     }
 
     public void submitAll(final Collection<? extends ProjectRunnable> tasks) {
         // when there are available worker threads, tasks are immediately executed, i.e. bypassed the
         // ordered queued. need to sort tasks, such that submission order matches desired execution
         // order
-        tasks.stream()
-                .sorted(taskComparator)
-                .map(ProjectFutureTask::new)
-                .forEach(executor::execute);
+        tasks.stream().sorted(taskComparator).map(ProjectFutureTask::new).forEach(executor::execute);
     }
 
     /**
@@ -93,8 +95,7 @@ class ProjectExecutorService {
     }
 
     // hook to allow pausing executor during unit tests
-    protected void beforeExecute(Thread t, Runnable r) {
-    }
+    protected void beforeExecute(Thread t, Runnable r) {}
 
     // for testing purposes only
     public void awaitShutdown() throws InterruptedException {
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildQueue.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildQueue.java
index 69ecaee..d4c289b 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildQueue.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildQueue.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2014 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -43,8 +46,7 @@ class ReactorBuildQueue {
 
     private final Set<MavenProject> finishedProjects;
 
-    public ReactorBuildQueue(Collection<MavenProject> projects,
-            DependencyGraph<MavenProject> graph) {
+    public ReactorBuildQueue(Collection<MavenProject> projects, DependencyGraph<MavenProject> graph) {
         this.graph = graph;
         this.projects = new HashSet<>();
         this.rootProjects = new HashSet<>();
@@ -116,5 +118,4 @@ class ReactorBuildQueue {
         projects.removeAll(finishedProjects);
         return projects;
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildStats.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildStats.java
index 4c8e9d0..18d660b 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildStats.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/ReactorBuildStats.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2017 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -47,11 +50,11 @@ class ReactorBuildStats {
      * structure prevented higher degree of parallelism.
      */
     private final Map<String, AtomicLong> bottleneckTimes;
+
     private long startTime;
     private long stopTime;
 
-    private ReactorBuildStats(Map<String, AtomicLong> serviceTimes,
-            Map<String, AtomicLong> bottleneckTimes) {
+    private ReactorBuildStats(Map<String, AtomicLong> serviceTimes, Map<String, AtomicLong> bottleneckTimes) {
         this.serviceTimes = ImmutableMap.copyOf(serviceTimes);
         this.bottleneckTimes = ImmutableMap.copyOf(bottleneckTimes);
     }
@@ -81,13 +84,13 @@ class ReactorBuildStats {
     public void recordServiceTime(MavenProject project, long durationNanos) {
         AtomicLong serviceTime = serviceTimes.get(projectGAV(project));
         if (serviceTime == null) {
-            throw new IllegalStateException("Unknown project " + projectGAV(project) + ", found " + serviceTimes.keySet());
+            throw new IllegalStateException(
+                    "Unknown project " + projectGAV(project) + ", found " + serviceTimes.keySet());
         }
         serviceTime.addAndGet(durationNanos);
     }
 
-    public void recordBottlenecks(Set<MavenProject> projects, int degreeOfConcurrency,
-            long durationNanos) {
+    public void recordBottlenecks(Set<MavenProject> projects, int degreeOfConcurrency, long durationNanos) {
         // only projects that result in single-threaded builds
         if (projects.size() == 1) {
             projects.forEach(p -> bottleneckTimes.get(projectGAV(p)).addAndGet(durationNanos));
@@ -99,7 +102,8 @@ class ReactorBuildStats {
     //
 
     public long totalServiceTime(TimeUnit unit) {
-        long nanos = serviceTimes.values().stream().mapToLong(AtomicLong::longValue).sum();
+        long nanos =
+                serviceTimes.values().stream().mapToLong(AtomicLong::longValue).sum();
         return unit.convert(nanos, TimeUnit.NANOSECONDS);
     }
 
@@ -124,8 +128,8 @@ class ReactorBuildStats {
             criticalPathServiceTime += serviceTimes.get(key).get();
             appendProjectTimes(result, key);
         }
-        result.append(String.format("\nBuild critical path total service time %s",
-                formatDuration(criticalPathServiceTime)));
+        result.append(
+                String.format("\nBuild critical path total service time %s", formatDuration(criticalPathServiceTime)));
 
         // render bottleneck projects
 
@@ -138,8 +142,7 @@ class ReactorBuildStats {
                 bottleneckTotalTime += bottleneckTimes.get(bottleneck).get();
                 appendProjectTimes(result, bottleneck);
             }
-            result.append(
-                    String.format("\nBuild bottlenecks total time %s", formatDuration(bottleneckTotalTime)));
+            result.append(String.format("\nBuild bottlenecks total time %s", formatDuration(bottleneckTotalTime)));
         }
 
         result.append("\n** Bottlenecks are projects that limit build concurrency");
@@ -192,5 +195,4 @@ class ReactorBuildStats {
     private <K> K getCriticalProject(Stream<K> projects, Comparator<K> comparator) {
         return projects.min(comparator).orElse(null);
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilder.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilder.java
index c5f61aa..f6410f6 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilder.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilder.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2014 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -86,25 +89,31 @@ public class SmartBuilder implements Builder {
     }
 
     @Override
-    public synchronized void build(final MavenSession session, final ReactorContext reactorContext,
-            ProjectBuildList projectBuilds, final List<TaskSegment> taskSegments,
-            ReactorBuildStatus reactorBuildStatus) throws ExecutionException, InterruptedException {
+    public synchronized void build(
+            final MavenSession session,
+            final ReactorContext reactorContext,
+            ProjectBuildList projectBuilds,
+            final List<TaskSegment> taskSegments,
+            ReactorBuildStatus reactorBuildStatus)
+            throws ExecutionException, InterruptedException {
 
         session.getRepositorySession().getData().set(ReactorBuildStatus.class, reactorBuildStatus);
 
-        DependencyGraph<MavenProject> graph = (DependencyGraph<MavenProject>) session.getRequest().getData()
-                .get(DependencyGraph.class.getName());
+        DependencyGraph<MavenProject> graph =
+                (DependencyGraph<MavenProject>) session.getRequest().getData().get(DependencyGraph.class.getName());
 
         // log overall build info
         final int degreeOfConcurrency = session.getRequest().getDegreeOfConcurrency();
-        logger.info("Task segments : " + taskSegments.stream().map(Object::toString).collect(Collectors.joining(" ")));
+        logger.info(
+                "Task segments : " + taskSegments.stream().map(Object::toString).collect(Collectors.joining(" ")));
         logger.info("Build maximum degree of concurrency is " + degreeOfConcurrency);
         logger.info("Total number of projects is " + session.getProjects().size());
 
         // the actual build execution
         List<Map.Entry<TaskSegment, ReactorBuildStats>> allstats = new ArrayList<>();
         for (TaskSegment taskSegment : taskSegments) {
-            Set<MavenProject> projects = projectBuilds.getByTaskSegment(taskSegment).getProjects();
+            Set<MavenProject> projects =
+                    projectBuilds.getByTaskSegment(taskSegment).getProjects();
             if (canceled) {
                 return;
             }
@@ -126,7 +135,8 @@ public class SmartBuilder implements Builder {
         for (Map.Entry<TaskSegment, ReactorBuildStats> entry : allstats) {
             TaskSegment taskSegment = entry.getKey();
             ReactorBuildStats stats = entry.getValue();
-            Set<MavenProject> projects = projectBuilds.getByTaskSegment(taskSegment).getProjects();
+            Set<MavenProject> projects =
+                    projectBuilds.getByTaskSegment(taskSegment).getProjects();
 
             logger.debug("Task segment {}, number of projects {}", taskSegment, projects.size());
 
@@ -136,7 +146,8 @@ public class SmartBuilder implements Builder {
             logger.info(
                     "Segment walltime {} s, segment projects service time {} s, effective/maximum degree of concurrency {}/{}",
                     TimeUnit.NANOSECONDS.toSeconds(walltimeReactor),
-                    TimeUnit.NANOSECONDS.toSeconds(walltimeService), effectiveConcurrency,
+                    TimeUnit.NANOSECONDS.toSeconds(walltimeService),
+                    effectiveConcurrency,
                     degreeOfConcurrency);
 
             if (projects.size() > 1 && isProfiling(session)) {
@@ -152,5 +163,4 @@ public class SmartBuilder implements Builder {
         }
         return Boolean.parseBoolean(value);
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilderImpl.java b/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilderImpl.java
index 5a32d09..027a66e 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilderImpl.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/builder/SmartBuilderImpl.java
@@ -1,16 +1,20 @@
 /*
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
- * agreements. See the NOTICE file distributed with this work for additional information regarding
- * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License. You may obtain a
- * copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * http://www.apache.org/licenses/LICENSE-2.0
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software distributed under the License
- * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
- * or implied. See the License for the specific language governing permissions and limitations under
- * the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.builder;
 
@@ -61,9 +65,13 @@ class SmartBuilderImpl {
     //
     private final ReactorBuildStats stats;
 
-    SmartBuilderImpl(LifecycleModuleBuilder lifecycleModuleBuilder, MavenSession session,
-            ReactorContext reactorContext, TaskSegment taskSegment,
-            Set<MavenProject> projects, DependencyGraph<MavenProject> graph) {
+    SmartBuilderImpl(
+            LifecycleModuleBuilder lifecycleModuleBuilder,
+            MavenSession session,
+            ReactorContext reactorContext,
+            TaskSegment taskSegment,
+            Set<MavenProject> projects,
+            DependencyGraph<MavenProject> graph) {
         this.lifecycleModuleBuilder = lifecycleModuleBuilder;
         this.rootSession = session;
         this.reactorContext = reactorContext;
@@ -101,8 +109,7 @@ class SmartBuilderImpl {
             try {
                 MavenProject completedProject = executor.take();
                 if (bottlenecks != null) {
-                    stats.recordBottlenecks(bottlenecks, degreeOfConcurrency,
-                            System.nanoTime() - timstampSubmit);
+                    stats.recordBottlenecks(bottlenecks, degreeOfConcurrency, System.nanoTime() - timstampSubmit);
                 }
                 logCompleted(completedProject);
                 Set<MavenProject> readyProjects = reactorBuildQueue.onProjectFinish(completedProject);
@@ -135,8 +142,12 @@ class SmartBuilderImpl {
                     .map(SmartBuilderImpl::projectGA)
                     .collect(Collectors.joining(" ", "[", "]"));
         }
-        logger.debug("Builder state: blocked={} finished={} ready-or-running={} {}", blockedCount,
-                finishedCount, readyCount, runningProjects);
+        logger.debug(
+                "Builder state: blocked={} finished={} ready-or-running={} {}",
+                blockedCount,
+                finishedCount,
+                readyCount,
+                runningProjects);
     }
 
     private void logCompleted(MavenProject project) {
@@ -170,17 +181,15 @@ class SmartBuilderImpl {
         executor.submitAll(tasks);
     }
 
-    /* package */void buildProject(MavenProject project) {
+    /* package */ void buildProject(MavenProject project) {
         logger.debug("STARTED build of project {}:{}", project.getGroupId(), project.getArtifactId());
 
         try {
             MavenSession copiedSession = rootSession.clone();
-            lifecycleModuleBuilder.buildProject(copiedSession, rootSession, reactorContext, project,
-                    taskSegment);
+            lifecycleModuleBuilder.buildProject(copiedSession, rootSession, reactorContext, project, taskSegment);
         } catch (RuntimeException ex) {
             // preserve the xml stack trace, and the java cause chain
-            rootSession.getResult()
-                    .addException(new RuntimeException(project.getName() + ": " + ex.getMessage(), ex));
+            rootSession.getResult().addException(new RuntimeException(project.getName() + ": " + ex.getMessage(), ex));
         }
     }
 
@@ -206,5 +215,4 @@ class SmartBuilderImpl {
             return project;
         }
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/Cache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/Cache.java
index 49f90e4..dc167ac 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/Cache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/Cache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache;
 
@@ -69,5 +72,4 @@ public interface Cache<K, V extends CacheRecord> {
      * @return                 the existing or newly computed {@link CacheRecord}
      */
     V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction);
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheFactory.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheFactory.java
index 01ffa52..38c3b26 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheFactory.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheFactory.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache;
 
@@ -26,5 +29,4 @@ public interface CacheFactory {
      * @return     a new {@link Cache}
      */
     <K, V extends CacheRecord> Cache<K, V> newCache();
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheRecord.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheRecord.java
index 2cadad5..99fa9a5 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheRecord.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/CacheRecord.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache;
 
@@ -33,5 +36,4 @@ public interface CacheRecord {
      * Callback called by the cache when this {@link CacheRecord} is removed from the cache.
      */
     void invalidate();
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/DefaultCacheFactory.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/DefaultCacheFactory.java
index b8cc24e..354af14 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/DefaultCacheFactory.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/DefaultCacheFactory.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.impl;
 
@@ -41,5 +44,4 @@ public class DefaultCacheFactory implements CacheFactory {
     public <K, V extends CacheRecord> Cache<K, V> newCache() {
         return delegate.newCache();
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/TimestampCacheFactory.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/TimestampCacheFactory.java
index ed30847..c7bf4a0 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/TimestampCacheFactory.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/TimestampCacheFactory.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.impl;
 
@@ -39,8 +42,7 @@ import org.mvndaemon.mvnd.cache.CacheRecord;
  */
 public class TimestampCacheFactory implements CacheFactory {
 
-    public TimestampCacheFactory() {
-    }
+    public TimestampCacheFactory() {}
 
     @Override
     public <K, V extends CacheRecord> Cache<K, V> newCache() {
@@ -73,14 +75,12 @@ public class TimestampCacheFactory implements CacheFactory {
 
         @Override
         public boolean equals(Object o) {
-            if (this == o)
-                return true;
-            if (o == null || getClass() != o.getClass())
-                return false;
+            if (this == o) return true;
+            if (o == null || getClass() != o.getClass()) return false;
             FileState that = (FileState) o;
-            return path.equals(that.path) &&
-                    Objects.equals(lastModifiedTime, that.lastModifiedTime) &&
-                    Objects.equals(fileKey, that.fileKey);
+            return path.equals(that.path)
+                    && Objects.equals(lastModifiedTime, that.lastModifiedTime)
+                    && Objects.equals(fileKey, that.fileKey);
         }
 
         @Override
@@ -92,7 +92,6 @@ public class TimestampCacheFactory implements CacheFactory {
         public String toString() {
             return "FileState [path=" + path + ", lastModifiedTime=" + lastModifiedTime + ", fileKey=" + fileKey + "]";
         }
-
     }
 
     static class Record<V extends CacheRecord> {
@@ -110,9 +109,7 @@ public class TimestampCacheFactory implements CacheFactory {
          * @return {@link Set} of {@link FileState}s at current time
          */
         private Set<FileState> currentFileStates() {
-            return record.getDependencyPaths()
-                    .map(FileState::new)
-                    .collect(Collectors.toSet());
+            return record.getDependencyPaths().map(FileState::new).collect(Collectors.toSet());
         }
     }
 
@@ -157,7 +154,7 @@ public class TimestampCacheFactory implements CacheFactory {
 
         @Override
         public void removeIf(BiPredicate<K, V> predicate) {
-            for (Iterator<Map.Entry<K, Record<V>>> iterator = map.entrySet().iterator(); iterator.hasNext();) {
+            for (Iterator<Map.Entry<K, Record<V>>> iterator = map.entrySet().iterator(); iterator.hasNext(); ) {
                 Map.Entry<K, Record<V>> entry = iterator.next();
                 if (predicate.test(entry.getKey(), entry.getValue().record)) {
                     entry.getValue().record.invalidate();
@@ -169,19 +166,20 @@ public class TimestampCacheFactory implements CacheFactory {
         @Override
         public V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction) {
             return map.compute(key, (k, v) -> {
-                if (v != null) {
-                    try {
-                        if (Objects.equals(v.fileStates, v.currentFileStates())) {
-                            return v;
+                        if (v != null) {
+                            try {
+                                if (Objects.equals(v.fileStates, v.currentFileStates())) {
+                                    return v;
+                                }
+                            } catch (RuntimeException e) {
+                                // ignore and invalidate the record
+                            }
+                            v.record.invalidate();
+                            v = null;
                         }
-                    } catch (RuntimeException e) {
-                        // ignore and invalidate the record
-                    }
-                    v.record.invalidate();
-                    v = null;
-                }
-                return new Record<>(mappingFunction.apply(k));
-            }).record;
+                        return new Record<>(mappingFunction.apply(k));
+                    })
+                    .record;
         }
     }
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/WatchServiceCacheFactory.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/WatchServiceCacheFactory.java
index 13537db..b40c75f 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/WatchServiceCacheFactory.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/impl/WatchServiceCacheFactory.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.impl;
 
@@ -93,14 +96,15 @@ public class WatchServiceCacheFactory implements CacheFactory {
             try {
                 WatchEvent.Modifier[] mods;
                 try {
-                    mods = new WatchEvent.Modifier[] {
-                            com.sun.nio.file.SensitivityWatchEventModifier.HIGH
-                    };
+                    mods = new WatchEvent.Modifier[] {com.sun.nio.file.SensitivityWatchEventModifier.HIGH};
                 } catch (Throwable t) {
                     mods = null;
                 }
-                final WatchKey watchKey = key.register(watchService,
-                        new WatchEvent.Kind[] { StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY },
+                final WatchKey watchKey = key.register(
+                        watchService,
+                        new WatchEvent.Kind[] {
+                            StandardWatchEventKinds.ENTRY_DELETE, StandardWatchEventKinds.ENTRY_MODIFY
+                        },
                         mods);
                 return new Registration(watchKey);
             } catch (NoSuchFileException e) {
@@ -138,7 +142,8 @@ public class WatchServiceCacheFactory implements CacheFactory {
                 } else if (kind == StandardWatchEventKinds.OVERFLOW) {
                     /* Invalidate all records under the given dir */
                     LOG.debug("Got overflow event for path {}", dir);
-                    Iterator<Map.Entry<Path, List<CacheRecord>>> it = recordsByPath.entrySet().iterator();
+                    Iterator<Map.Entry<Path, List<CacheRecord>>> it =
+                            recordsByPath.entrySet().iterator();
                     while (it.hasNext()) {
                         Map.Entry<Path, List<CacheRecord>> en = it.next();
                         final Path path = en.getKey();
@@ -230,7 +235,7 @@ public class WatchServiceCacheFactory implements CacheFactory {
 
         @Override
         public void removeIf(BiPredicate<K, V> predicate) {
-            for (Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator(); iterator.hasNext();) {
+            for (Iterator<Map.Entry<K, V>> iterator = map.entrySet().iterator(); iterator.hasNext(); ) {
                 Map.Entry<K, V> entry = iterator.next();
                 if (predicate.test(entry.getKey(), entry.getValue())) {
                     entry.getValue().invalidate();
@@ -271,6 +276,5 @@ public class WatchServiceCacheFactory implements CacheFactory {
             delegate.invalidate();
             map.remove(key);
         }
-
     }
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingExtensionRealmCache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingExtensionRealmCache.java
index 534e014..630cdc9 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingExtensionRealmCache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingExtensionRealmCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -46,7 +49,8 @@ public class InvalidatingExtensionRealmCache extends DefaultExtensionRealmCache
 
         @Override
         public Stream<Path> getDependencyPaths() {
-            return record.getArtifacts().stream().map(artifact -> artifact.getFile().toPath());
+            return record.getArtifacts().stream()
+                    .map(artifact -> artifact.getFile().toPath());
         }
 
         @Override
@@ -74,8 +78,8 @@ public class InvalidatingExtensionRealmCache extends DefaultExtensionRealmCache
     }
 
     @Override
-    public CacheRecord put(Key key, ClassRealm extensionRealm, ExtensionDescriptor extensionDescriptor,
-            List<Artifact> artifacts) {
+    public CacheRecord put(
+            Key key, ClassRealm extensionRealm, ExtensionDescriptor extensionDescriptor, List<Artifact> artifacts) {
         CacheRecord record = super.put(key, extensionRealm, extensionDescriptor, artifacts);
         super.cache.remove(key);
         cache.put(key, new Record(record));
@@ -88,7 +92,5 @@ public class InvalidatingExtensionRealmCache extends DefaultExtensionRealmCache
     }
 
     @Override
-    public void register(MavenProject project, Key key, CacheRecord record) {
-    }
-
+    public void register(MavenProject project, Key key, CacheRecord record) {}
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginArtifactsCache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginArtifactsCache.java
index c5c8360..a5be434 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginArtifactsCache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginArtifactsCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -46,12 +49,12 @@ public class InvalidatingPluginArtifactsCache extends DefaultPluginArtifactsCach
             if (record.getException() != null) {
                 return Stream.empty();
             }
-            return record.getArtifacts().stream().map(artifact -> artifact.getFile().toPath());
+            return record.getArtifacts().stream()
+                    .map(artifact -> artifact.getFile().toPath());
         }
 
         @Override
-        public void invalidate() {
-        }
+        public void invalidate() {}
     }
 
     final Cache<Key, Record> cache;
@@ -95,5 +98,4 @@ public class InvalidatingPluginArtifactsCache extends DefaultPluginArtifactsCach
     public void flush() {
         cache.clear();
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
index 8641de1..fb5f4d2 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginDescriptorCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -59,8 +62,8 @@ public class InvalidatingPluginDescriptorCache extends DefaultPluginDescriptorCa
 
         @Override
         public Stream<Path> getDependencyPaths() {
-            return Optional.ofNullable(descriptor.getArtifacts()).orElse(Collections.emptyList())
-                    .stream().map(artifact -> artifact.getFile().toPath());
+            return Optional.ofNullable(descriptor.getArtifacts()).orElse(Collections.emptyList()).stream()
+                    .map(artifact -> artifact.getFile().toPath());
         }
 
         @Override
@@ -98,7 +101,9 @@ public class InvalidatingPluginDescriptorCache extends DefaultPluginDescriptorCa
             Record r = cache.computeIfAbsent(key, k -> {
                 try {
                     return new Record(clone(supplier.load()));
-                } catch (PluginDescriptorParsingException | PluginResolutionException | InvalidPluginDescriptorException e) {
+                } catch (PluginDescriptorParsingException
+                        | PluginResolutionException
+                        | InvalidPluginDescriptorException e) {
                     throw new RuntimeException(e);
                 }
             });
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginRealmCache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginRealmCache.java
index f6f22f1..6817d85 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginRealmCache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingPluginRealmCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -52,7 +55,8 @@ public class InvalidatingPluginRealmCache extends DefaultPluginRealmCache {
 
         @Override
         public Stream<Path> getDependencyPaths() {
-            return record.getArtifacts().stream().map(artifact -> artifact.getFile().toPath());
+            return record.getArtifacts().stream()
+                    .map(artifact -> artifact.getFile().toPath());
         }
 
         @Override
@@ -115,7 +119,5 @@ public class InvalidatingPluginRealmCache extends DefaultPluginRealmCache {
     }
 
     @Override
-    public void register(MavenProject project, Key key, CacheRecord record) {
-    }
-
+    public void register(MavenProject project, Key key, CacheRecord record) {}
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingProjectArtifactsCache.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingProjectArtifactsCache.java
index ee0531d..70d2aae 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingProjectArtifactsCache.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingProjectArtifactsCache.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -47,8 +50,7 @@ import org.mvndaemon.mvnd.cache.CacheFactory;
 @Priority(10)
 public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCache {
 
-    protected static class CacheKey
-            implements Key {
+    protected static class CacheKey implements Key {
 
         private final String groupId;
 
@@ -72,8 +74,12 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
 
         private final int hashCode;
 
-        public CacheKey(MavenProject project, List<RemoteRepository> repositories,
-                Collection<String> scopesToCollect, Collection<String> scopesToResolve, boolean aggregating,
+        public CacheKey(
+                MavenProject project,
+                List<RemoteRepository> repositories,
+                Collection<String> scopesToCollect,
+                Collection<String> scopesToResolve,
+                boolean aggregating,
                 RepositorySystemSession session) {
 
             groupId = project.getGroupId();
@@ -99,10 +105,10 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
                 }
             }
             collect = scopesToCollect == null
-                    ? Collections.<String> emptySet()
+                    ? Collections.<String>emptySet()
                     : Collections.unmodifiableSet(new HashSet<>(scopesToCollect));
             resolve = scopesToResolve == null
-                    ? Collections.<String> emptySet()
+                    ? Collections.<String>emptySet()
                     : Collections.unmodifiableSet(new HashSet<>(scopesToResolve));
             this.aggregating = aggregating;
 
@@ -148,7 +154,8 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
 
             CacheKey that = (CacheKey) o;
 
-            return Objects.equals(groupId, that.groupId) && Objects.equals(artifactId, that.artifactId)
+            return Objects.equals(groupId, that.groupId)
+                    && Objects.equals(artifactId, that.artifactId)
                     && Objects.equals(version, that.version)
                     && Objects.equals(dependencyArtifacts, that.dependencyArtifacts)
                     && Objects.equals(workspace, that.workspace)
@@ -179,8 +186,7 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
         }
 
         @Override
-        public void invalidate() {
-        }
+        public void invalidate() {}
     }
 
     final Cache<Key, Record> cache;
@@ -191,10 +197,19 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
     }
 
     @Override
-    public Key createKey(MavenProject project, Collection<String> scopesToCollect, Collection<String> scopesToResolve,
-            boolean aggregating, RepositorySystemSession session) {
-        return new CacheKey(project, project.getRemoteProjectRepositories(), scopesToCollect, scopesToResolve,
-                aggregating, session);
+    public Key createKey(
+            MavenProject project,
+            Collection<String> scopesToCollect,
+            Collection<String> scopesToResolve,
+            boolean aggregating,
+            RepositorySystemSession session) {
+        return new CacheKey(
+                project,
+                project.getRemoteProjectRepositories(),
+                scopesToCollect,
+                scopesToResolve,
+                aggregating,
+                session);
     }
 
     @Override
@@ -231,6 +246,5 @@ public class InvalidatingProjectArtifactsCache extends DefaultProjectArtifactsCa
     }
 
     @Override
-    public void register(MavenProject project, Key cacheKey, CacheRecord record) {
-    }
+    public void register(MavenProject project, Key cacheKey, CacheRecord record) {}
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingRealmCacheEventSpy.java b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingRealmCacheEventSpy.java
index fda2d6b..40c90ec 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingRealmCacheEventSpy.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cache/invalidating/InvalidatingRealmCacheEventSpy.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cache.invalidating;
 
@@ -65,8 +68,11 @@ public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
         try {
             if (event instanceof MavenExecutionRequest) {
                 /*  Store the multiModuleProjectDirectory path */
-                multiModuleProjectDirectory = ((MavenExecutionRequest) event).getMultiModuleProjectDirectory().toPath();
-                pattern = Environment.MVND_PLUGIN_REALM_EVICT_PATTERN.asOptional()
+                multiModuleProjectDirectory = ((MavenExecutionRequest) event)
+                        .getMultiModuleProjectDirectory()
+                        .toPath();
+                pattern = Environment.MVND_PLUGIN_REALM_EVICT_PATTERN
+                        .asOptional()
                         .orElse(Environment.MVND_PLUGIN_REALM_EVICT_PATTERN.getDefault());
                 if (!pattern.isEmpty()) {
                     String[] patterns = pattern.split(",");
@@ -104,15 +110,17 @@ public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
                 extensionCache.cache.removeIf(this::shouldEvict);
                 MavenExecutionResult mer = (MavenExecutionResult) event;
                 List<MavenProject> projects = mer.getTopologicallySortedProjects();
-                projectArtifactsCache.cache
-                        .removeIf((k, r) -> shouldEvict(projects, (InvalidatingProjectArtifactsCache.CacheKey) k, r));
+                projectArtifactsCache.cache.removeIf(
+                        (k, r) -> shouldEvict(projects, (InvalidatingProjectArtifactsCache.CacheKey) k, r));
             }
         } catch (Exception e) {
             LOG.warn("Could not notify CliPluginRealmCache", e);
         }
     }
 
-    private boolean shouldEvict(List<MavenProject> projects, InvalidatingProjectArtifactsCache.CacheKey k,
+    private boolean shouldEvict(
+            List<MavenProject> projects,
+            InvalidatingProjectArtifactsCache.CacheKey k,
             InvalidatingProjectArtifactsCache.Record v) {
         return projects.stream().anyMatch(p -> k.matches(p.getGroupId(), p.getArtifactId(), p.getVersion()));
     }
@@ -125,12 +133,15 @@ public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
                     if (path.startsWith(multiModuleProjectDirectory)) {
                         LOG.debug(
                                 "Removing PluginRealmCache entry {} because it refers to an artifact in the build tree {}",
-                                k, path);
+                                k,
+                                path);
                         return true;
                     } else if (matcher != null && matcher.matches(path)) {
                         LOG.debug(
                                 "Removing PluginRealmCache entry {} because its components {} matches the eviction pattern '{}'",
-                                k, path, pattern);
+                                k,
+                                path,
+                                pattern);
                         return true;
                     }
                 }
@@ -149,12 +160,15 @@ public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
                     if (path.startsWith(multiModuleProjectDirectory)) {
                         LOG.debug(
                                 "Removing ExtensionRealmCache entry {} because it refers to an artifact in the build tree {}",
-                                k, path);
+                                k,
+                                path);
                         return true;
                     } else if (matcher != null && matcher.matches(path)) {
                         LOG.debug(
                                 "Removing ExtensionRealmCache entry {} because its components {} matches the eviction pattern '{}'",
-                                k, path, pattern);
+                                k,
+                                path,
+                                pattern);
                         return true;
                     }
                 }
@@ -171,5 +185,4 @@ public class InvalidatingRealmCacheEventSpy extends AbstractEventSpy {
         }
         return FileSystems.getDefault().getPathMatcher(pattern);
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/cli/EnvHelper.java b/daemon/src/main/java/org/mvndaemon/mvnd/cli/EnvHelper.java
index 9089634..766b9bb 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/cli/EnvHelper.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/cli/EnvHelper.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2021 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.cli;
 
@@ -40,8 +43,7 @@ public class EnvHelper {
 
     private static final Logger LOGGER = LoggerFactory.getLogger(EnvHelper.class);
 
-    private EnvHelper() {
-    }
+    private EnvHelper() {}
 
     public static void environment(String workingDir, Map<String, String> clientEnv) {
         environment(workingDir, clientEnv, LOGGER::warn);
@@ -82,8 +84,9 @@ public class EnvHelper {
             diffs.forEach(key -> {
                 String vr = requested.get(key);
                 String va = nactual.get(key);
-                log.accept(String.format("   %s -> %s instead of %s", key,
-                        va != null ? "'" + va + "'" : "<null>", vr != null ? "'" + vr + "'" : "<null>"));
+                log.accept(String.format(
+                        "   %s -> %s instead of %s",
+                        key, va != null ? "'" + va + "'" : "<null>", vr != null ? "'" + vr + "'" : "<null>"));
             });
             log.accept("If the difference matters to you, stop the running daemons using mvnd --stop and");
             log.accept("start a new daemon from the current environment by issuing any mvnd build command.");
@@ -157,8 +160,8 @@ public class EnvHelper {
         // OpenJDK 8-17 on Windows
         if (Os.current() == Os.WINDOWS) {
             Class<?> processEnvironmentClass = Class.forName("java.lang.ProcessEnvironment");
-            Field theCaseInsensitiveEnvironmentField = processEnvironmentClass
-                    .getDeclaredField("theCaseInsensitiveEnvironment");
+            Field theCaseInsensitiveEnvironmentField =
+                    processEnvironmentClass.getDeclaredField("theCaseInsensitiveEnvironment");
             theCaseInsensitiveEnvironmentField.setAccessible(true);
             Map<String, String> cienv = (Map<String, String>) theCaseInsensitiveEnvironmentField.get(null);
             cienv.clear();
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java
index 0fce8af..eda1c5c 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/ClientDispatcher.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2019 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.daemon;
 
@@ -52,10 +55,14 @@ public class ClientDispatcher extends BuildEventListener {
         final DependencyGraph<MavenProject> dependencyGraph = DependencyGraph.fromMaven(session);
         session.getRequest().getData().put(DependencyGraph.class.getName(), dependencyGraph);
 
-        final int maxThreads = degreeOfConcurrency == 1 ? 1 : dependencyGraph.computeMaxWidth(degreeOfConcurrency, 1000);
+        final int maxThreads =
+                degreeOfConcurrency == 1 ? 1 : dependencyGraph.computeMaxWidth(degreeOfConcurrency, 1000);
         final List<MavenProject> projects = session.getProjects();
         final int _90thArtifactIdLengthPercentile = artifactIdLength90thPercentile(projects);
-        queue.add(new BuildStarted(getCurrentProject(session).getArtifactId(), projects.size(), maxThreads,
+        queue.add(new BuildStarted(
+                getCurrentProject(session).getArtifactId(),
+                projects.size(),
+                maxThreads,
                 _90thArtifactIdLengthPercentile));
     }
 
@@ -65,7 +72,8 @@ public class ClientDispatcher extends BuildEventListener {
         }
         Map<Integer, Integer> frequencyDistribution = new TreeMap<>();
         for (MavenProject p : projects) {
-            frequencyDistribution.compute(p.getArtifactId().length(),
+            frequencyDistribution.compute(
+                    p.getArtifactId().length(),
                     (k, v) -> (v == null) ? Integer.valueOf(1) : Integer.valueOf(v.intValue() + 1));
         }
         int _90PercCount = Math.round(0.9f * projects.size());
@@ -76,7 +84,8 @@ public class ClientDispatcher extends BuildEventListener {
                 return en.getKey().intValue();
             }
         }
-        throw new IllegalStateException("Could not compute the 90th percentile of the projects length from " + projects);
+        throw new IllegalStateException(
+                "Could not compute the 90th percentile of the projects length from " + projects);
     }
 
     private final Map<String, Boolean> projects = new ConcurrentHashMap<>();
@@ -89,10 +98,12 @@ public class ClientDispatcher extends BuildEventListener {
     public void projectLogMessage(String projectId, String event) {
         if (projectId != null) {
             Boolean b = projects.get(projectId);
-            if (b != Boolean.TRUE) {
-            }
+            if (b != Boolean.TRUE) {}
         }
-        queue.add(projectId == null ? Message.log(trimTrailingEols(event)) : Message.log(projectId, trimTrailingEols(event)));
+        queue.add(
+                projectId == null
+                        ? Message.log(trimTrailingEols(event))
+                        : Message.log(projectId, trimTrailingEols(event)));
     }
 
     @Override
@@ -134,40 +145,41 @@ public class ClientDispatcher extends BuildEventListener {
     public void transfer(String projectId, TransferEvent e) {
         final int event;
         switch (e.getType()) {
-        case INITIATED:
-            event = Message.TRANSFER_INITIATED;
-            break;
-        case STARTED:
-            event = Message.TRANSFER_STARTED;
-            break;
-        case PROGRESSED:
-            event = Message.TRANSFER_PROGRESSED;
-            break;
-        case CORRUPTED:
-            event = Message.TRANSFER_CORRUPTED;
-            break;
-        case SUCCEEDED:
-            event = Message.TRANSFER_SUCCEEDED;
-            break;
-        case FAILED:
-            event = Message.TRANSFER_FAILED;
-            break;
-        default:
-            throw new IllegalStateException("Unexpected " + EventType.class.getSimpleName() + ": " + e.getType());
+            case INITIATED:
+                event = Message.TRANSFER_INITIATED;
+                break;
+            case STARTED:
+                event = Message.TRANSFER_STARTED;
+                break;
+            case PROGRESSED:
+                event = Message.TRANSFER_PROGRESSED;
+                break;
+            case CORRUPTED:
+                event = Message.TRANSFER_CORRUPTED;
+                break;
+            case SUCCEEDED:
+                event = Message.TRANSFER_SUCCEEDED;
+                break;
+            case FAILED:
+                event = Message.TRANSFER_FAILED;
+                break;
+            default:
+                throw new IllegalStateException("Unexpected " + EventType.class.getSimpleName() + ": " + e.getType());
         }
         final int requestType;
         switch (e.getRequestType()) {
-        case GET:
-            requestType = Message.TransferEvent.GET;
-            break;
-        case GET_EXISTENCE:
-            requestType = Message.TransferEvent.GET_EXISTENCE;
-            break;
-        case PUT:
-            requestType = Message.TransferEvent.PUT;
-            break;
-        default:
-            throw new IllegalStateException("Unexpected " + RequestType.class.getSimpleName() + ": " + e.getRequestType());
+            case GET:
+                requestType = Message.TransferEvent.GET;
+                break;
+            case GET_EXISTENCE:
+                requestType = Message.TransferEvent.GET_EXISTENCE;
+                break;
+            case PUT:
+                requestType = Message.TransferEvent.PUT;
+                break;
+            default:
+                throw new IllegalStateException(
+                        "Unexpected " + RequestType.class.getSimpleName() + ": " + e.getRequestType());
         }
         String repositoryId = e.getResource().getRepositoryId();
         String repositoryUrl = e.getResource().getRepositoryUrl();
@@ -175,8 +187,16 @@ public class ClientDispatcher extends BuildEventListener {
         long contentLength = e.getResource().getContentLength();
         long transferredBytes = e.getTransferredBytes();
         String exception = e.getException() != null ? e.getException().toString() : null;
-        queue.add(Message.transfer(projectId, event, requestType, repositoryId, repositoryUrl, resourceName,
-                contentLength, transferredBytes, exception));
+        queue.add(Message.transfer(
+                projectId,
+                event,
+                requestType,
+                repositoryId,
+                repositoryUrl,
+                resourceName,
+                contentLength,
+                transferredBytes,
+                exception));
     }
 
     private MavenProject getCurrentProject(MavenSession mavenSession) {
@@ -187,7 +207,8 @@ public class ClientDispatcher extends BuildEventListener {
             return mavenSession.getCurrentProject();
         }
         return mavenSession.getProjects().stream()
-                .filter(p -> (p.getFile() != null && executionRootDirectory.equals(p.getFile().getParent())))
+                .filter(p -> (p.getFile() != null
+                        && executionRootDirectory.equals(p.getFile().getParent())))
                 .findFirst()
                 .orElse(mavenSession.getCurrentProject());
     }
@@ -195,5 +216,4 @@ public class ClientDispatcher extends BuildEventListener {
     static String trimTrailingEols(String message) {
         return message == null ? null : TRAILING_EOLS_PATTERN.matcher(message).replaceFirst("");
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Connection.java b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Connection.java
index 44cea49..0892936 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Connection.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/Connection.java
@@ -1,17 +1,20 @@
 /*
- * Copyright 2020 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.daemon;
 
@@ -35,5 +38,4 @@ public interface Connection {
     class Holder {
         static Connection CURRENT;
     }
-
 }
diff --git a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/DaemonExpiration.java b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/DaemonExpiration.java
index d47de8d..ed293f6 100644
--- a/daemon/src/main/java/org/mvndaemon/mvnd/daemon/DaemonExpiration.java
+++ b/daemon/src/main/java/org/mvndaemon/mvnd/daemon/DaemonExpiration.java
@@ -1,20 +1,29 @@
 /*
- * Copyright 2016 the original author or authors.
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
  *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
+ *   http://www.apache.org/licenses/LICENSE-2.0
  *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
  */
 package org.mvndaemon.mvnd.daemon;
 
+import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.DO_NOT_EXPIRE;
+import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.GRACEFUL_EXPIRE;
+import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.IMMEDIATE_EXPIRE;
+import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.QUIET_EXPIRE;
+import static org.mvndaemon.mvnd.daemon.DaemonExpiration.DaemonExpirationResult.NOT_TRIGGERED;
+
 import java.lang.management.ManagementFactory;
 import java.nio.file.Files;
 import java.nio.file.Paths;
@@ -40,12 +49,6 @@ import org.mvndaemon.mvnd.common.Os;
 import org.mvndaemon.mvnd.common.TimeUtils;
 import org.mvndaemon.mvnd.nativ.CLibrary;
 
-import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.DO_NOT_EXPIRE;
-import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.GRACEFUL_EXPIRE;
-import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.IMMEDIATE_EXPIRE;
-import static org.mvndaemon.mvnd.common.DaemonExpirationStatus.QUIET_EXPIRE;
-import static org.mvndaemon.mvnd.daemon.DaemonExpiration.DaemonExpirationResult.NOT_TRIGGERED;
-
 /**
  * File origin:
  * https://github.com/gradle/gradle/blob/v5.6.2/subprojects/launcher/src/main/java/org/gradle/launcher/daemon/server/MasterExpirationStrategy.java
@@ -55,7 +58,6 @@ public class DaemonExpiration {
     public interface DaemonExpirationStrategy {
 
         DaemonExpirationResult checkExpiration(Server daemon);
-
     }
 
     public static DaemonExpirationStrategy master() {
@@ -112,11 +114,11 @@ public class DaemonExpiration {
 
     static DaemonExpirationStrategy notMostRecentlyUsed() {
         return daemon -> daemon.getRegistry().getIdle().stream()
... 7846 lines suppressed ...


[maven-mvnd] 01/03: Upgrade maven-shade-plugin to 3.4.1

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git

commit 2035a82fcd070cff5733943663e008c763b0adb7
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Nov 22 13:46:53 2022 +0100

    Upgrade maven-shade-plugin to 3.4.1
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 667a66e..9b96f21 100644
--- a/pom.xml
+++ b/pom.xml
@@ -78,7 +78,7 @@
         <license-maven-plugin.version>3.0</license-maven-plugin.version>
         <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
         <maven-install-plugin.version>2.4</maven-install-plugin.version>
-        <maven-shade-plugin.version>3.2.4</maven-shade-plugin.version>
+        <maven-shade-plugin.version>3.4.1</maven-shade-plugin.version>
         <mrm.version>1.2.0</mrm.version>
         <surefire.version>3.0.0-M5</surefire.version><!-- keep in sync with junit-platform-launcher.version -->
         <junit-platform-launcher.version>1.3.2</junit-platform-launcher.version><!-- keep in sync with surefire.version -->


[maven-mvnd] 02/03: Upgrade parent pom to 38

Posted by gn...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

gnodet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-mvnd.git

commit 4690bcb7f49dba78fe5517ff8de2e398d10d0991
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Tue Nov 22 13:40:35 2022 +0100

    Upgrade parent pom to 38
---
 build/eclipse-formatter-config.xml | 281 -------------------------------------
 pom.xml                            |  60 +-------
 2 files changed, 1 insertion(+), 340 deletions(-)

diff --git a/build/eclipse-formatter-config.xml b/build/eclipse-formatter-config.xml
deleted file mode 100644
index 330afe8..0000000
--- a/build/eclipse-formatter-config.xml
+++ /dev/null
@@ -1,281 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-    Licensed to the Apache Software Foundation (ASF) under one or more
-    contributor license agreements.  See the NOTICE file distributed with
-    this work for additional information regarding copyright ownership.
-    The ASF licenses this file to You under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with
-    the License.  You may obtain a copy of the License at
-
-         http://www.apache.org/licenses/LICENSE-2.0
-
-    Unless required by applicable law or agreed to in writing, software
-    distributed under the License is distributed on an "AS IS" BASIS,
-    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-    See the License for the specific language governing permissions and
-    limitations under the License.
-
--->
-<profiles version="8">
-    <profile name="Camel Java Conventions" version="8" kind="CodeFormatterProfile">
-        <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-        <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_names_descriptions" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.align_tags_descriptions_grouped" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_comments" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.indent_return_description" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="120"/>
-        <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-        <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-        <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="8"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_enum_constant" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-        <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="128"/>
-        <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-        <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-        <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-        <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-        <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
-        <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="true"/>
-        <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="CHECKSTYLE:OFF"/>
-        <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="CHECKSTYLE:ON"/>
-    </profile>
-</profiles>
diff --git a/pom.xml b/pom.xml
index 9b96f21..6b0bbfb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -23,7 +23,7 @@
     <parent>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-parent</artifactId>
-        <version>36</version>
+        <version>38</version>
         <relativePath/>
     </parent>
 
@@ -72,9 +72,7 @@
         <!-- plugin versions a..z -->
         <buildnumber-maven-plugin.version>1.4</buildnumber-maven-plugin.version>
         <compiler.version>3.8.1</compiler.version>
-        <formatter-maven-plugin.version>2.15.0</formatter-maven-plugin.version>
         <groovy-maven-plugin.version>2.1.0</groovy-maven-plugin.version>
-        <impsort-maven-plugin.version>1.6.0</impsort-maven-plugin.version>
         <license-maven-plugin.version>3.0</license-maven-plugin.version>
         <maven-jar-plugin.version>3.2.2</maven-jar-plugin.version>
         <maven-install-plugin.version>2.4</maven-install-plugin.version>
@@ -390,36 +388,6 @@ limitations under the License.</inlineHeader>
                         </dependency>
                     </dependencies>
                 </plugin>
-                <plugin>
-                    <groupId>net.revelc.code.formatter</groupId>
-                    <artifactId>formatter-maven-plugin</artifactId>
-                    <version>${formatter-maven-plugin.version}</version>
-                    <configuration>
-                        <configFile>${maven.multiModuleProjectDirectory}/build/eclipse-formatter-config.xml</configFile>
-                        <skip>${format.skip}</skip>
-                        <lineEnding>KEEP</lineEnding>
-                        <cachedir>${project.build.directory}/cache</cachedir>
-                    </configuration>
-                </plugin>
-                <plugin>
-                    <groupId>net.revelc.code</groupId>
-                    <artifactId>impsort-maven-plugin</artifactId>
-                    <version>${impsort-maven-plugin.version}</version>
-                    <configuration>
-                        <removeUnused>true</removeUnused>
-                        <staticAfter>true</staticAfter>
-                        <lineEnding>KEEP</lineEnding>
-                        <skip>${format.skip}</skip>
-                        <cachedir>${project.build.directory}/cache</cachedir>
-                    </configuration>
-                    <dependencies>
-                        <dependency>
-                            <groupId>org.apache.maven</groupId>
-                            <artifactId>plexus-utils</artifactId>
-                            <version>${maven.version}</version>
-                        </dependency>
-                    </dependencies>
-                </plugin>
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-compiler-plugin</artifactId>
@@ -514,32 +482,6 @@ limitations under the License.</inlineHeader>
                     </execution>
                 </executions>
             </plugin>
-            <plugin>
-                <groupId>net.revelc.code.formatter</groupId>
-                <artifactId>formatter-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>format</id>
-                        <goals>
-                            <goal>format</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>net.revelc.code</groupId>
-                <artifactId>impsort-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>sort-imports</id>
-                        <goals>
-                            <goal>sort</goal>
-                        </goals>
-                        <phase>process-sources</phase>
-                    </execution>
-                </executions>
-            </plugin>
             <plugin>
                 <groupId>org.codehaus.gmaven</groupId>
                 <artifactId>groovy-maven-plugin</artifactId>