Class AnalyzeDepMgt

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="analyze-dep-mgt",
          requiresDependencyResolution=TEST,
          threadSafe=true)
    public class AnalyzeDepMgt
    extends org.apache.maven.plugin.AbstractMojo
    This mojo looks at the dependencies after final resolution and looks for mismatches in your dependencyManagement section. In versions of maven prior to 2.0.6, it was possible to inherit versions that didn't match your dependencyManagement. See MNG-1577 for more info. This mojo is also useful for just detecting projects that override the dependencyManagement directly. Set ignoreDirect to false to detect these otherwise normal conditions.
    Since:
    2.0-alpha-3
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private boolean failBuild
      Fail the build if a problem is detected.
      private boolean ignoreDirect
      Ignore Direct Dependency Overrides of dependencyManagement section.
      private org.apache.maven.project.MavenProject project  
      private boolean skip
      Skip plugin execution completely.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Constructor Summary

      Constructors 
      Constructor Description
      AnalyzeDepMgt()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Map<java.lang.String,​org.apache.maven.model.Exclusion> addExclusions​(java.util.List<org.apache.maven.model.Exclusion> exclusionList)
      Returns a map of the exclusions using the Dependency ManagementKey as the keyset.
      private boolean checkDependencyManagement()
      Does the work of checking the DependencyManagement Section.
      void execute()  
      java.lang.String getArtifactManagementKey​(org.apache.maven.artifact.Artifact artifact)
      This function returns a string comparable with Dependency.GetManagementKey.
      java.util.List<org.apache.maven.artifact.Artifact> getExclusionErrors​(java.util.Map<java.lang.String,​org.apache.maven.model.Exclusion> exclusions, java.util.Set<org.apache.maven.artifact.Artifact> allDependencyArtifacts)
      Returns a List of the artifacts that should have been excluded, but were found in the dependency tree.
      java.lang.String getExclusionKey​(org.apache.maven.artifact.Artifact artifact)  
      java.lang.String getExclusionKey​(org.apache.maven.model.Exclusion ex)  
      java.util.Map<org.apache.maven.artifact.Artifact,​org.apache.maven.model.Dependency> getMismatch​(java.util.Map<java.lang.String,​org.apache.maven.model.Dependency> depMgtMap, java.util.Set<org.apache.maven.artifact.Artifact> allDependencyArtifacts)
      Calculate the mismatches between the DependencyManagement and resolved artifacts
      protected org.apache.maven.project.MavenProject getProject()  
      protected boolean isFailBuild()  
      protected boolean isIgnoreDirect()  
      void logMismatch​(org.apache.maven.artifact.Artifact dependencyArtifact, org.apache.maven.model.Dependency dependencyFromDepMgt)
      This function displays the log to the screen showing the versions and information about the artifacts that don't match.
      void setFailBuild​(boolean theFailBuild)  
      void setIgnoreDirect​(boolean theIgnoreDirect)  
      void setProject​(org.apache.maven.project.MavenProject theProject)  
      • Methods inherited from class org.apache.maven.plugin.AbstractMojo

        getLog, getPluginContext, setLog, setPluginContext
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • project

        @Parameter(defaultValue="${project}",
                   readonly=true,
                   required=true)
        private org.apache.maven.project.MavenProject project
      • failBuild

        @Parameter(property="mdep.analyze.failBuild",
                   defaultValue="false")
        private boolean failBuild
        Fail the build if a problem is detected.
      • ignoreDirect

        @Parameter(property="mdep.analyze.ignore.direct",
                   defaultValue="true")
        private boolean ignoreDirect
        Ignore Direct Dependency Overrides of dependencyManagement section.
      • skip

        @Parameter(property="mdep.analyze.skip",
                   defaultValue="false")
        private boolean skip
        Skip plugin execution completely.
        Since:
        2.7
    • Constructor Detail

      • AnalyzeDepMgt

        public AnalyzeDepMgt()
    • Method Detail

      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException,
                            org.apache.maven.plugin.MojoFailureException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
        org.apache.maven.plugin.MojoFailureException
      • checkDependencyManagement

        private boolean checkDependencyManagement()
                                           throws org.apache.maven.plugin.MojoExecutionException
        Does the work of checking the DependencyManagement Section.
        Returns:
        true if errors are found.
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • addExclusions

        public java.util.Map<java.lang.String,​org.apache.maven.model.Exclusion> addExclusions​(java.util.List<org.apache.maven.model.Exclusion> exclusionList)
        Returns a map of the exclusions using the Dependency ManagementKey as the keyset.
        Parameters:
        exclusionList - to be added to the map.
        Returns:
        a map of the exclusions using the Dependency ManagementKey as the keyset.
      • getExclusionErrors

        public java.util.List<org.apache.maven.artifact.Artifact> getExclusionErrors​(java.util.Map<java.lang.String,​org.apache.maven.model.Exclusion> exclusions,
                                                                                     java.util.Set<org.apache.maven.artifact.Artifact> allDependencyArtifacts)
        Returns a List of the artifacts that should have been excluded, but were found in the dependency tree.
        Parameters:
        exclusions - a map of the DependencyManagement exclusions, with the ManagementKey as the key and Dependency as the value.
        allDependencyArtifacts - resolved artifacts to be compared.
        Returns:
        list of artifacts that should have been excluded.
      • getExclusionKey

        public java.lang.String getExclusionKey​(org.apache.maven.artifact.Artifact artifact)
        Parameters:
        artifact - Artifact
        Returns:
        The resulting GA.
      • getExclusionKey

        public java.lang.String getExclusionKey​(org.apache.maven.model.Exclusion ex)
        Parameters:
        ex - The exclusion key.
        Returns:
        The resulting combination of groupId+artifactId.
      • getMismatch

        public java.util.Map<org.apache.maven.artifact.Artifact,​org.apache.maven.model.Dependency> getMismatch​(java.util.Map<java.lang.String,​org.apache.maven.model.Dependency> depMgtMap,
                                                                                                                     java.util.Set<org.apache.maven.artifact.Artifact> allDependencyArtifacts)
        Calculate the mismatches between the DependencyManagement and resolved artifacts
        Parameters:
        depMgtMap - contains the Dependency.GetManagementKey as the keyset for quick lookup.
        allDependencyArtifacts - contains the set of all artifacts to compare.
        Returns:
        a map containing the resolved artifact as the key and the listed dependency as the value.
      • logMismatch

        public void logMismatch​(org.apache.maven.artifact.Artifact dependencyArtifact,
                                org.apache.maven.model.Dependency dependencyFromDepMgt)
                         throws org.apache.maven.plugin.MojoExecutionException
        This function displays the log to the screen showing the versions and information about the artifacts that don't match.
        Parameters:
        dependencyArtifact - the artifact that was resolved.
        dependencyFromDepMgt - the dependency listed in the DependencyManagement section.
        Throws:
        org.apache.maven.plugin.MojoExecutionException - in case of errors.
      • getArtifactManagementKey

        public java.lang.String getArtifactManagementKey​(org.apache.maven.artifact.Artifact artifact)
        This function returns a string comparable with Dependency.GetManagementKey.
        Parameters:
        artifact - to gen the key for
        Returns:
        a string in the form: groupId:ArtifactId:Type[:Classifier]
      • isFailBuild

        protected final boolean isFailBuild()
        Returns:
        the failBuild
      • setFailBuild

        public void setFailBuild​(boolean theFailBuild)
        Parameters:
        theFailBuild - the failBuild to set
      • getProject

        protected final org.apache.maven.project.MavenProject getProject()
        Returns:
        the project
      • setProject

        public void setProject​(org.apache.maven.project.MavenProject theProject)
        Parameters:
        theProject - the project to set
      • isIgnoreDirect

        protected final boolean isIgnoreDirect()
        Returns:
        the ignoreDirect
      • setIgnoreDirect

        public void setIgnoreDirect​(boolean theIgnoreDirect)
        Parameters:
        theIgnoreDirect - the ignoreDirect to set