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
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final StringConstant for the HTTP protocol string.static final StringConstant for the HTTPS protocol string.Fields inherited from interface org.apache.maven.reporting.MavenReport
CATEGORY_PROJECT_INFORMATION, CATEGORY_PROJECT_REPORTS, ROLEFields inherited from interface org.apache.maven.plugin.Mojo
ROLE -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidcheckForFailure(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 StringcreateProjectReferenceName(org.apache.maven.project.MavenProject project, org.apache.maven.shared.dependency.graph.DependencyNode dependencyNode) voidexecute()Executes dependency-check.voidGenerates the Dependency-Check Site Report.Returns the artifact scope excluded filter.Returns the category name.protected StringReturns the connection string.protected FileReturns the correct output directory depending on if a site is being executed or not.protected FilegetCorrectOutputDirectory(org.apache.maven.project.MavenProject current) Returns the correct output directory depending on if a site is being executed or not.Returns the list of excluded artifacts based on either artifact id or group id and artifact id.Returns the output directory.Returns the output name.protected org.apache.maven.project.MavenProjectReturns a reference to the current project.protected List<org.apache.maven.project.MavenProject> Returns the list of Maven Projects in this build.Returns the report output directory.protected SettingsReturns the configured settings.protected EngineInitializes a newEnginethat can be used for scanning.final booleanReturns whether this is an external report.protected booleanReturns if the mojo should fail the build if an exception occurs.protected booleanReturns true if the Maven site is being generated.org.apache.maven.project.ProjectBuildingRequestnewResolveArtifactProjectBuildingRequest(org.apache.maven.project.MavenProject project, List<org.apache.maven.artifact.repository.ArtifactRepository> repos) protected voidTakes the properties supplied and updates the dependency-check settings.protected Set<org.apache.maven.artifact.Artifact> resolveArtifactDependencies(org.apache.maven.shared.transfer.dependencies.DependableCoordinate artifact, org.apache.maven.project.MavenProject project) protected voidrunCheck()Executes the dependency-check scan and generates the necessary report.protected ExceptionCollectionscanArtifacts(org.apache.maven.project.MavenProject project, Engine engine) Scans the project's artifacts and adds them to the engine's dependency list.protected ExceptionCollectionscanArtifacts(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 ExceptionCollectionscanDependencies(Engine engine) Scans the dependencies of the projects.protected ExceptionCollectionscanPlugins(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 ExceptionCollectionscanPlugins(Engine engine, ExceptionCollection exCol) Scans the plugins of the projects.voidsetReportOutputDirectory(File directory) Sets the Reporting output directory.protected voidshowSummary(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, setPluginContextMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.maven.reporting.MavenReport
canGenerateReport, getDescription, getName, getOutputPath
-
Field Details
-
PROTOCOL_HTTPS
-
PROTOCOL_HTTP
-
-
Constructor Details
-
BaseDependencyCheckMojo
public BaseDependencyCheckMojo()
-
-
Method Details
-
execute
public void execute() throws org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureExceptionExecutes dependency-check.- Specified by:
executein 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
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, Locale locale) throws org.apache.maven.reporting.MavenReportException Generates the Dependency-Check Site Report.- Specified by:
generatein 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
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
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
-
newResolveArtifactProjectBuildingRequest
public org.apache.maven.project.ProjectBuildingRequest newResolveArtifactProjectBuildingRequest(org.apache.maven.project.MavenProject project, 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.MojoFailureExceptionExecutes 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
Returns the report output directory.- Specified by:
getReportOutputDirectoryin interfaceorg.apache.maven.reporting.MavenReport- Returns:
- the report output directory
-
setReportOutputDirectory
Sets the Reporting output directory.- Specified by:
setReportOutputDirectoryin interfaceorg.apache.maven.reporting.MavenReport- Parameters:
directory- the output directory
-
getOutputDirectory
-
isExternalReport
public final boolean isExternalReport()Returns whether this is an external report. This method always returns true.- Specified by:
isExternalReportin interfaceorg.apache.maven.reporting.MavenReport- Returns:
true
-
getOutputName
Returns the output name.- Specified by:
getOutputNamein interfaceorg.apache.maven.reporting.MavenReport- Returns:
- the output name
-
getCategoryName
Returns the category name.- Specified by:
getCategoryNamein interfaceorg.apache.maven.reporting.MavenReport- Returns:
- the category name
-
initializeEngine
protected Engine initializeEngine() throws DatabaseException, org.apache.maven.plugin.MojoExecutionException, org.apache.maven.plugin.MojoFailureExceptionInitializes a newEnginethat 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() throws org.apache.maven.plugin.MojoFailureException, org.apache.maven.plugin.MojoExecutionExceptionTakes 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.- Throws:
org.apache.maven.plugin.MojoFailureExceptionorg.apache.maven.plugin.MojoExecutionException
-
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
Returns the list of Maven Projects in this build.- Returns:
- the list of Maven Projects in this build
-
getExcludes
-
getArtifactScopeExcluded
-
getSettings
-
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 than the threshold set
-
showSummary
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
-