Package org.owasp.dependencycheck.maven
Class BaseDependencyCheckMojo
- java.lang.Object
-
- org.apache.maven.plugin.AbstractMojo
-
- org.owasp.dependencycheck.maven.BaseDependencyCheckMojo
-
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
,org.apache.maven.reporting.MavenReport
- Direct Known Subclasses:
AggregateMojo
,CheckMojo
,PurgeMojo
,UpdateMojo
public abstract class BaseDependencyCheckMojo extends org.apache.maven.plugin.AbstractMojo implements org.apache.maven.reporting.MavenReport
- Author:
- Jeremy Long
-
-
Constructor Summary
Constructors Constructor Description BaseDependencyCheckMojo()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
checkForFailure(Dependency[] dependencies)
Checks to see if a vulnerability has been identified with a CVSS score that is above the threshold set in the configuration.protected java.lang.String
createProjectReferenceName(org.apache.maven.project.MavenProject project, org.apache.maven.shared.dependency.graph.DependencyNode dependencyNode)
void
execute()
Executes dependency-check.void
generate(org.apache.maven.doxia.sink.Sink sink, java.util.Locale locale)
Generates the Dependency-Check Site Report.protected Filter<java.lang.String>
getArtifactScopeExcluded()
Returns the artifact scope excluded filter.java.lang.String
getCategoryName()
Returns the category name.protected java.lang.String
getConnectionString()
Returns the connection string.protected java.io.File
getCorrectOutputDirectory()
Returns the correct output directory depending on if a site is being executed or not.protected java.io.File
getCorrectOutputDirectory(org.apache.maven.project.MavenProject current)
Returns the correct output directory depending on if a site is being executed or not.java.util.List<java.lang.String>
getExcludes()
Returns the list of excluded artifacts based on either artifact id or group id and artifact id.java.io.File
getOutputDirectory()
Returns the output directory.java.lang.String
getOutputName()
Returns the output name.protected org.apache.maven.project.MavenProject
getProject()
Returns a reference to the current project.protected java.util.List<org.apache.maven.project.MavenProject>
getReactorProjects()
Returns the list of Maven Projects in this build.java.io.File
getReportOutputDirectory()
Returns the report output directory.protected Settings
getSettings()
Returns the configured settings.protected Engine
initializeEngine()
Initializes a newEngine
that can be used for scanning.boolean
isExternalReport()
Returns whether this is an external report.protected boolean
isFailOnError()
Returns if the mojo should fail the build if an exception occurs.protected boolean
isGeneratingSite()
Returns true if the Maven site is being generated.org.apache.maven.project.ProjectBuildingRequest
newResolveArtifactProjectBuildingRequest(org.apache.maven.project.MavenProject project, java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repos)
protected void
populateSettings()
Takes the properties supplied and updates the dependency-check settings.protected java.util.Set<org.apache.maven.artifact.Artifact>
resolveArtifactDependencies(org.apache.maven.shared.transfer.dependencies.DependableCoordinate artifact, org.apache.maven.project.MavenProject project)
protected void
runCheck()
Executes the dependency-check scan and generates the necessary report.protected ExceptionCollection
scanArtifacts(org.apache.maven.project.MavenProject project, Engine engine)
Scans the project's artifacts and adds them to the engine's dependency list.protected ExceptionCollection
scanArtifacts(org.apache.maven.project.MavenProject project, Engine engine, boolean aggregate)
Scans the project's artifacts and adds them to the engine's dependency list.protected abstract ExceptionCollection
scanDependencies(Engine engine)
Scans the dependencies of the projects.protected ExceptionCollection
scanPlugins(org.apache.maven.project.MavenProject project, Engine engine, ExceptionCollection exCollection)
Scans the project's artifacts for plugin-dependencies and adds them to the engine's dependency list.protected abstract ExceptionCollection
scanPlugins(Engine engine, ExceptionCollection exCol)
Scans the plugins of the projects.void
setReportOutputDirectory(java.io.File directory)
Sets the Reporting output directory.protected void
showSummary(org.apache.maven.project.MavenProject mp, Dependency[] dependencies)
Generates a warning message listing a summary of dependencies and their associated CPE and CVE entries.-
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
-
-
-
Method Detail
-
execute
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
Executes dependency-check.- Specified by:
execute
in interfaceorg.apache.maven.plugin.Mojo
- Throws:
org.apache.maven.plugin.MojoExecutionException
- thrown if there is an exception executing the mojoorg.apache.maven.plugin.MojoFailureException
- thrown if dependency-check failed the build
-
isGeneratingSite
protected boolean isGeneratingSite()
Returns true if the Maven site is being generated.- Returns:
- true if the Maven site is being generated
-
getConnectionString
protected java.lang.String getConnectionString()
Returns the connection string.- Returns:
- the connection string
-
isFailOnError
protected boolean isFailOnError()
Returns if the mojo should fail the build if an exception occurs.- Returns:
- whether or not the mojo should fail the build
-
generate
public void generate(org.apache.maven.doxia.sink.Sink sink, java.util.Locale locale) throws org.apache.maven.reporting.MavenReportException
Generates the Dependency-Check Site Report.- Specified by:
generate
in interfaceorg.apache.maven.reporting.MavenReport
- Parameters:
sink
- the sink to write the report tolocale
- the locale to use when generating the report- Throws:
org.apache.maven.reporting.MavenReportException
- if a maven report exception occurs
-
getCorrectOutputDirectory
protected java.io.File getCorrectOutputDirectory() throws org.apache.maven.plugin.MojoExecutionException
Returns the correct output directory depending on if a site is being executed or not.- Returns:
- the directory to write the report(s)
- Throws:
org.apache.maven.plugin.MojoExecutionException
- thrown if there is an error loading the file path
-
getCorrectOutputDirectory
protected java.io.File getCorrectOutputDirectory(org.apache.maven.project.MavenProject current)
Returns the correct output directory depending on if a site is being executed or not.- Parameters:
current
- the Maven project to get the output directory from- Returns:
- the directory to write the report(s)
-
scanArtifacts
protected ExceptionCollection scanArtifacts(org.apache.maven.project.MavenProject project, Engine engine)
Scans the project's artifacts and adds them to the engine's dependency list.- Parameters:
project
- the project to scan the dependencies ofengine
- the engine to use to scan the dependencies- Returns:
- a collection of exceptions that may have occurred while resolving and scanning the dependencies
-
scanArtifacts
protected ExceptionCollection scanArtifacts(org.apache.maven.project.MavenProject project, Engine engine, boolean aggregate)
Scans the project's artifacts and adds them to the engine's dependency list.- Parameters:
project
- the project to scan the dependencies ofengine
- the engine to use to scan the dependenciesaggregate
- whether the scan is part of an aggregate build- Returns:
- a collection of exceptions that may have occurred while resolving and scanning the dependencies
-
scanPlugins
protected ExceptionCollection scanPlugins(org.apache.maven.project.MavenProject project, Engine engine, ExceptionCollection exCollection)
Scans the project's artifacts for plugin-dependencies and adds them to the engine's dependency list.- Parameters:
project
- the project to scan the plugin-dependencies ofengine
- the engine to use to scan the plugin-dependenciesexCollection
- the collection of exceptions that have previously occurred- Returns:
- a collection of exceptions that may have occurred while resolving and scanning the plugins and their dependencies
-
resolveArtifactDependencies
protected java.util.Set<org.apache.maven.artifact.Artifact> resolveArtifactDependencies(org.apache.maven.shared.transfer.dependencies.DependableCoordinate artifact, org.apache.maven.project.MavenProject project) throws org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException
- Throws:
org.apache.maven.shared.transfer.dependencies.resolve.DependencyResolverException
-
createProjectReferenceName
protected java.lang.String createProjectReferenceName(org.apache.maven.project.MavenProject project, org.apache.maven.shared.dependency.graph.DependencyNode dependencyNode)
- Parameters:
project
- theMavenProject
dependencyNode
- theDependencyNode
- Returns:
- the name to be used when creating a
project reference
in aDependency
. The behavior of this method returnsproject.getName()
+ ":" +
dependencyNode.getArtifact()
.getScope()
.
-
newResolveArtifactProjectBuildingRequest
public org.apache.maven.project.ProjectBuildingRequest newResolveArtifactProjectBuildingRequest(org.apache.maven.project.MavenProject project, java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repos)
- Parameters:
project
- The target project to create a building request for.repos
- the artifact repositories to use.- Returns:
- Returns a new ProjectBuildingRequest populated from the current session and the target project remote repositories, used to resolve artifacts.
-
runCheck
protected void runCheck() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
Executes the dependency-check scan and generates the necessary report.- Throws:
org.apache.maven.plugin.MojoExecutionException
- thrown if there is an exception running the scanorg.apache.maven.plugin.MojoFailureException
- thrown if dependency-check is configured to fail the build
-
scanDependencies
protected abstract ExceptionCollection scanDependencies(Engine engine) throws org.apache.maven.plugin.MojoExecutionException
Scans the dependencies of the projects.- Parameters:
engine
- the engine used to perform the scanning- Returns:
- a collection of exceptions
- Throws:
org.apache.maven.plugin.MojoExecutionException
- thrown if a fatal exception occurs
-
scanPlugins
protected abstract ExceptionCollection scanPlugins(Engine engine, ExceptionCollection exCol) throws org.apache.maven.plugin.MojoExecutionException
Scans the plugins of the projects.- Parameters:
engine
- the engine used to perform the scanningexCol
- the collection of any exceptions that have previously been captured.- Returns:
- a collection of exceptions
- Throws:
org.apache.maven.plugin.MojoExecutionException
- thrown if a fatal exception occurs
-
getReportOutputDirectory
public java.io.File getReportOutputDirectory()
Returns the report output directory.- Specified by:
getReportOutputDirectory
in interfaceorg.apache.maven.reporting.MavenReport
- Returns:
- the report output directory
-
setReportOutputDirectory
public void setReportOutputDirectory(java.io.File directory)
Sets the Reporting output directory.- Specified by:
setReportOutputDirectory
in interfaceorg.apache.maven.reporting.MavenReport
- Parameters:
directory
- the output directory
-
getOutputDirectory
public java.io.File getOutputDirectory()
Returns the output directory.- Returns:
- the output directory
-
isExternalReport
public final boolean isExternalReport()
Returns whether this is an external report. This method always returns true.- Specified by:
isExternalReport
in interfaceorg.apache.maven.reporting.MavenReport
- Returns:
true
-
getOutputName
public java.lang.String getOutputName()
Returns the output name.- Specified by:
getOutputName
in interfaceorg.apache.maven.reporting.MavenReport
- Returns:
- the output name
-
getCategoryName
public java.lang.String getCategoryName()
Returns the category name.- Specified by:
getCategoryName
in interfaceorg.apache.maven.reporting.MavenReport
- Returns:
- the category name
-
initializeEngine
protected Engine initializeEngine() throws DatabaseException, org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureException
Initializes a newEngine
that can be used for scanning. This method should only be called in a try-with-resources to ensure that the engine is properly closed.- Returns:
- a newly instantiated
Engine
- Throws:
DatabaseException
- thrown if there is a database exceptionorg.apache.maven.plugin.MojoExecutionException
- on configuration errors when failOnError is trueorg.apache.maven.plugin.MojoFailureException
- on configuration errors when failOnError is false
-
populateSettings
protected void populateSettings()
Takes the properties supplied and updates the dependency-check settings. Additionally, this sets the system properties required to change the proxy URL, port, and connection timeout.
-
getProject
protected org.apache.maven.project.MavenProject getProject()
Returns a reference to the current project. This method is used instead of auto-binding the project via component annotation in concrete implementations of this. If the child has a@Component MavenProject project;
defined then the abstract class (i.e. this class) will not have access to the current project (just the way Maven works with the binding).- Returns:
- returns a reference to the current project
-
getReactorProjects
protected java.util.List<org.apache.maven.project.MavenProject> getReactorProjects()
Returns the list of Maven Projects in this build.- Returns:
- the list of Maven Projects in this build
-
getExcludes
public java.util.List<java.lang.String> getExcludes()
Returns the list of excluded artifacts based on either artifact id or group id and artifact id.- Returns:
- a list of artifact to exclude
-
getArtifactScopeExcluded
protected Filter<java.lang.String> getArtifactScopeExcluded()
Returns the artifact scope excluded filter.- Returns:
- the artifact scope excluded filter
-
getSettings
protected Settings getSettings()
Returns the configured settings.- Returns:
- the configured settings
-
checkForFailure
protected void checkForFailure(Dependency[] dependencies) throws org.apache.maven.plugin.MojoFailureException
Checks to see if a vulnerability has been identified with a CVSS score that is above the threshold set in the configuration.- Parameters:
dependencies
- the list of dependency objects- Throws:
org.apache.maven.plugin.MojoFailureException
- thrown if a CVSS score is found that is higher then the threshold set
-
showSummary
protected void showSummary(org.apache.maven.project.MavenProject mp, Dependency[] dependencies)
Generates a warning message listing a summary of dependencies and their associated CPE and CVE entries.- Parameters:
mp
- the Maven project for which the summary is showndependencies
- a list of dependency objects
-
-