Class AbstractAnalyzeMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo, org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
    Direct Known Subclasses:
    AnalyzeMojo, AnalyzeOnlyMojo

    public abstract class AbstractAnalyzeMojo
    extends org.apache.maven.plugin.AbstractMojo
    implements org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
    Analyzes the dependencies of this project and determines which are: used and declared; used and undeclared; unused and declared; compile scoped but only used in tests.
    Since:
    2.0-alpha-5
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.lang.String analyzer
      Specify the project dependency analyzer to use (plexus component role-hint).
      private java.io.File baseDir
      Flag to use for scriptable output
      private org.codehaus.plexus.context.Context context
      The plexus context to look-up the right ProjectDependencyAnalyzer implementation depending on the mojo configuration.
      private boolean failOnWarning
      Whether to fail the build if a dependency warning is found.
      private java.lang.String[] ignoredDependencies
      List of dependencies that will be ignored.
      private java.lang.String[] ignoredNonTestScopedDependencies
      List of dependencies that will be ignored if they are in not test scope but are only used in test classes.
      private java.util.List<java.lang.String> ignoredPackagings
      List of project packaging that will be ignored.
      private java.lang.String[] ignoredUnusedDeclaredDependencies
      List of dependencies that will be ignored if they are declared but unused.
      private java.lang.String[] ignoredUsedUndeclaredDependencies
      List of dependencies that will be ignored if they are used but undeclared.
      private boolean ignoreNonCompile
      Ignore Runtime/Provided/Test/System scopes for unused dependency analysis.
      private boolean ignoreUnusedRuntime
      Ignore Runtime scope for unused dependency analysis.
      private java.io.File outputDirectory
      Target folder
      private boolean outputXML
      Output the xml for the missing dependencies (used but not declared).
      private org.apache.maven.project.MavenProject project
      The Maven project to analyze.
      private java.lang.String scriptableFlag
      Flag to use for scriptable output.
      private boolean scriptableOutput
      Output scriptable values for the missing dependencies (used but not declared).
      private boolean skip
      Skip plugin execution completely.
      private java.lang.String[] usedDependencies
      Force dependencies as used, to override incomplete result caused by bytecode-level analysis.
      private boolean verbose
      Output used dependencies.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      private boolean checkDependencies()  
      void contextualize​(org.codehaus.plexus.context.Context theContext)  
      protected org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzer createProjectDependencyAnalyzer()  
      void execute()  
      private void filterArtifactsByScope​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts, java.lang.String scope)  
      private java.util.List<org.apache.maven.artifact.Artifact> filterDependencies​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts, java.lang.String[] excludes)  
      protected boolean isSkip()  
      private void logArtifacts​(java.util.Map<org.apache.maven.artifact.Artifact,​java.util.Set<java.lang.String>> artifacts, boolean warn)  
      private void logArtifacts​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts, boolean warn)  
      private void writeDependencyXML​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts)  
      private void writeScriptableOutput​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts)  
      • 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

      • context

        private org.codehaus.plexus.context.Context context
        The plexus context to look-up the right ProjectDependencyAnalyzer implementation depending on the mojo configuration.
      • project

        @Parameter(defaultValue="${project}",
                   readonly=true,
                   required=true)
        private org.apache.maven.project.MavenProject project
        The Maven project to analyze.
      • analyzer

        @Parameter(property="analyzer",
                   defaultValue="default")
        private java.lang.String analyzer
        Specify the project dependency analyzer to use (plexus component role-hint). By default, maven-dependency-analyzer is used. To use this, you must declare a dependency for this plugin that contains the code for the analyzer. The analyzer must have a declared Plexus role name, and you specify the role name here.
        Since:
        2.2
      • failOnWarning

        @Parameter(property="failOnWarning",
                   defaultValue="false")
        private boolean failOnWarning
        Whether to fail the build if a dependency warning is found.
      • verbose

        @Parameter(property="verbose",
                   defaultValue="false")
        private boolean verbose
        Output used dependencies.
      • ignoreNonCompile

        @Parameter(property="ignoreNonCompile",
                   defaultValue="false")
        private boolean ignoreNonCompile
        Ignore Runtime/Provided/Test/System scopes for unused dependency analysis. Non-test scoped list will be not affected.
      • ignoreUnusedRuntime

        @Parameter(property="ignoreUnusedRuntime",
                   defaultValue="false")
        private boolean ignoreUnusedRuntime
        Ignore Runtime scope for unused dependency analysis.
      • outputXML

        @Parameter(property="outputXML",
                   defaultValue="false")
        private boolean outputXML
        Output the xml for the missing dependencies (used but not declared).
        Since:
        2.0-alpha-5
      • scriptableOutput

        @Parameter(property="scriptableOutput",
                   defaultValue="false")
        private boolean scriptableOutput
        Output scriptable values for the missing dependencies (used but not declared).
        Since:
        2.0-alpha-5
      • scriptableFlag

        @Parameter(property="scriptableFlag",
                   defaultValue="$$$%%%")
        private java.lang.String scriptableFlag
        Flag to use for scriptable output.
        Since:
        2.0-alpha-5
      • baseDir

        @Parameter(defaultValue="${basedir}",
                   readonly=true)
        private java.io.File baseDir
        Flag to use for scriptable output
        Since:
        2.0-alpha-5
      • outputDirectory

        @Parameter(defaultValue="${project.build.directory}",
                   readonly=true)
        private java.io.File outputDirectory
        Target folder
        Since:
        2.0-alpha-5
      • usedDependencies

        @Parameter
        private java.lang.String[] usedDependencies
        Force dependencies as used, to override incomplete result caused by bytecode-level analysis. Dependency format is groupId:artifactId.
        Since:
        2.6
      • skip

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

        @Parameter
        private java.lang.String[] ignoredDependencies
        List of dependencies that will be ignored. Any dependency on this list will be excluded from the "declared but unused", the "used but undeclared", and the "non-test scoped" list. The filter syntax is:
         [groupId]:[artifactId]:[type]:[version]
         
        where each pattern segment is optional and supports full and partial * wildcards. An empty pattern segment is treated as an implicit wildcard. *

        For example, org.apache.* will match all artifacts whose group id starts with org.apache., and :::*-SNAPSHOT will match all snapshot artifacts.

        Since:
        2.10
      • ignoredUsedUndeclaredDependencies

        @Parameter
        private java.lang.String[] ignoredUsedUndeclaredDependencies
        List of dependencies that will be ignored if they are used but undeclared. The filter syntax is:
         [groupId]:[artifactId]:[type]:[version]
         
        where each pattern segment is optional and supports full and partial * wildcards. An empty pattern segment is treated as an implicit wildcard. *

        For example, org.apache.* will match all artifacts whose group id starts with org.apache., and :::*-SNAPSHOT will match all snapshot artifacts.

        Since:
        2.10
      • ignoredUnusedDeclaredDependencies

        @Parameter
        private java.lang.String[] ignoredUnusedDeclaredDependencies
        List of dependencies that will be ignored if they are declared but unused. The filter syntax is:
         [groupId]:[artifactId]:[type]:[version]
         
        where each pattern segment is optional and supports full and partial * wildcards. An empty pattern segment is treated as an implicit wildcard. *

        For example, org.apache.* will match all artifacts whose group id starts with org.apache., and :::*-SNAPSHOT will match all snapshot artifacts.

        Since:
        2.10
      • ignoredNonTestScopedDependencies

        @Parameter
        private java.lang.String[] ignoredNonTestScopedDependencies
        List of dependencies that will be ignored if they are in not test scope but are only used in test classes. The filter syntax is:
         [groupId]:[artifactId]:[type]:[version]
         
        where each pattern segment is optional and supports full and partial * wildcards. An empty pattern segment is treated as an implicit wildcard. *

        For example, org.apache.* will match all artifacts whose group id starts with org.apache., and :::*-SNAPSHOT will match all snapshot artifacts.

        Since:
        3.3.0
      • ignoredPackagings

        @Parameter
        private java.util.List<java.lang.String> ignoredPackagings
        List of project packaging that will be ignored.
        Default value is: pom, ear
        Since:
        3.2.1
    • Constructor Detail

      • AbstractAnalyzeMojo

        public AbstractAnalyzeMojo()
    • Method Detail

      • execute

        public void execute()
                     throws org.apache.maven.plugin.MojoExecutionException,
                            org.apache.maven.plugin.MojoFailureException
        Specified by:
        execute in interface org.apache.maven.plugin.Mojo
        Throws:
        org.apache.maven.plugin.MojoExecutionException
        org.apache.maven.plugin.MojoFailureException
      • createProjectDependencyAnalyzer

        protected org.apache.maven.shared.dependency.analyzer.ProjectDependencyAnalyzer createProjectDependencyAnalyzer()
                                                                                                                 throws org.apache.maven.plugin.MojoExecutionException
        Returns:
        ProjectDependencyAnalyzer
        Throws:
        org.apache.maven.plugin.MojoExecutionException - in case of an error.
      • contextualize

        public void contextualize​(org.codehaus.plexus.context.Context theContext)
        Specified by:
        contextualize in interface org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable
      • isSkip

        protected final boolean isSkip()
        Returns:
        skip
      • checkDependencies

        private boolean checkDependencies()
                                   throws org.apache.maven.plugin.MojoExecutionException
        Throws:
        org.apache.maven.plugin.MojoExecutionException
      • filterArtifactsByScope

        private void filterArtifactsByScope​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts,
                                            java.lang.String scope)
      • logArtifacts

        private void logArtifacts​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts,
                                  boolean warn)
      • logArtifacts

        private void logArtifacts​(java.util.Map<org.apache.maven.artifact.Artifact,​java.util.Set<java.lang.String>> artifacts,
                                  boolean warn)
      • writeDependencyXML

        private void writeDependencyXML​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts)
      • writeScriptableOutput

        private void writeScriptableOutput​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts)
      • filterDependencies

        private java.util.List<org.apache.maven.artifact.Artifact> filterDependencies​(java.util.Set<org.apache.maven.artifact.Artifact> artifacts,
                                                                                      java.lang.String[] excludes)