All Downloads are FREE. Search and download functionalities are using the official Maven repository.

iabudiab.maven.plugins.dependencytrack.UploadScanMojo Maven / Gradle / Ivy

There is a newer version: 2.4.2
Show newest version
package iabudiab.maven.plugins.dependencytrack;

import java.io.File;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;

import iabudiab.maven.plugins.dependencytrack.suppressions.Suppressions;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;

import iabudiab.maven.plugins.dependencytrack.client.DTrackClient;
import iabudiab.maven.plugins.dependencytrack.client.model.ScanSubmitRequest;

/**
 * Mojo for uploading a
 * Dependency-Check
 * report XML to Dependency-Track
 * 
 * @author Iskandar Abudiab
 *
 */
@Mojo(name = "upload-scan", defaultPhase = LifecyclePhase.VERIFY, requiresOnline = true)
public class UploadScanMojo extends AbstractDependencyTrackMojo {

	/**
	 * Dependency-Check XML report directory.
	 */
	@Parameter(defaultValue = "${project.build.directory}", property = "artifactDir", required = true)
	private File artifactDirectory;

	/**
	 * Dependency-Check XML report filename.
	 */
	@Parameter(defaultValue = "dependency-check-report.xml", property = "artifactName", required = true)
	private String artifactName;

	@Override
	protected void doWork(DTrackClient client, Suppressions suppressions) throws MojoExecutionException {
		Path path = Paths.get(artifactDirectory.getPath(), artifactName);
		String encodeArtifact = Utils.loadAndEncodeArtifactFile(path);

		ScanSubmitRequest payload = ScanSubmitRequest.builder() //
				.projectName(projectName) //
				.projectVersion(projectVersion) //
				.scan(encodeArtifact) //
				.autoCreate(true) //
				.build();

		try {
			client.uploadScan(payload);
		} catch (IOException e) {
			throw new MojoExecutionException("Error uploading scan: ", e);
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy