Class DefaultInheritanceAssembler

java.lang.Object
org.apache.maven.model.inheritance.DefaultInheritanceAssembler
All Implemented Interfaces:
InheritanceAssembler

@Named @Singleton public class DefaultInheritanceAssembler extends Object implements InheritanceAssembler
Handles inheritance of model values.
  • Field Details

  • Constructor Details

    • DefaultInheritanceAssembler

      public DefaultInheritanceAssembler()
  • Method Details

    • assembleModelInheritance

      public void assembleModelInheritance(Model child, Model parent, ModelBuildingRequest request, ModelProblemCollector problems)
      Description copied from interface: InheritanceAssembler
      Merges values from the specified parent model into the given child model. Implementations are expected to keep parent and child completely decoupled by injecting deep copies of objects into the child rather than the original objects from the parent.
      Specified by:
      assembleModelInheritance in interface InheritanceAssembler
      Parameters:
      child - The child model into which to merge the values inherited from the parent, must not be null.
      parent - The (read-only) parent model from which to inherit the values, may be null.
      request - The model building request that holds further settings, must not be null.
      problems - The container used to collect problems that were encountered, must not be null.
    • getChildPathAdjustment

      private String getChildPathAdjustment(Model child, Model parent, String childDirectory)
      Calculates the relative path from the base directory of the parent to the parent directory of the base directory of the child. The general idea is to adjust inherited URLs to match the project layout (in SCM).

      This calculation is only a heuristic based on our conventions. In detail, the algo relies on the following assumptions:

      • The parent uses aggregation and refers to the child via the modules section
      • The module path to the child is considered to point at the POM rather than its base directory if the path ends with ".xml" (ignoring case)
      • The name of the child's base directory matches the artifact id of the child.
      Note that for the sake of independence from the user environment, the filesystem is intentionally not used for the calculation.

      Parameters:
      child - The child model, must not be null.
      parent - The parent model, may be null.
      childDirectory - The directory defined in child model, may be null.
      Returns:
      The path adjustment, can be empty but never null.