There are a number of best practices that can be handled at once by inheriting from a parent pom that takes care of them all Liftwizard ships with several parent poms that form an inheritance hierarchy is the most minimal parent pom It is meant to contain uncontroversial best practices that are applicable to all projects is a parent pom that inherits from and enables several linters and validators in profiles that are off by default is a Bill of Materials BOM that exports all modules within Liftwizard is a parent pom that inherits from selects versions of libraries related to Dropwizard applications and includes opinionated configurations for plugins Learning Maven Maven can be confusing due to the extent of the convention over configuration approach For example to answer how does maven run compilation before tests you would need to learn Plugins which are bound and enabled by default is the plugin that handles tests binds to the and phases binds to the phase In the lifecycle phases comes before which comes before None of this information appears in and little of it is logged during the build To make it easier to understand includes region markers surrounding each plugin that label the phase that the plugin is bound to The sections are sorted by phase liftwizard minimal parent liftwizard profile parent liftwizard minimal parent liftwizard bom liftwizard parent liftwizard profile parent maven surefire plugin maven compiler plugin compile testCompile maven surefire plugin test compile testCompile test pom xml liftwizard minimal parent < region Phase 22 install > <plugin> <groupId>org apache maven plugins< groupId> <artifactId>maven install plugin< artifactId> <version>3 1 3< version> < plugin> < endregion Phase 22 install >