org.scoverage.plugin.SCoverageTestMojo Maven / Gradle / Ivy
/*
* Copyright 2014-2019 Grzegorz Slowikowski (gslowikowski at gmail dot com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
package org.scoverage.plugin;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugins.annotations.Execute;
import org.apache.maven.plugins.annotations.LifecyclePhase;
import org.apache.maven.plugins.annotations.Mojo;
import org.apache.maven.plugins.annotations.Parameter;
import org.apache.maven.project.MavenProject;
import java.util.List;
/**
* Executes forked {@code scoverage} life cycle up to {@code test} phase.
*
*
* In forked {@code scoverage} life cycle project is compiled with SCoverage instrumentation
* and unit tests are executed.
*
*
* @author Grzegorz Slowikowski
* @since 1.2.0
*/
@Mojo( name = "test", threadSafe = true )
@Execute( lifecycle = "scoverage", phase = LifecyclePhase.TEST )
public class SCoverageTestMojo
extends AbstractMojo
{
/**
* Allows SCoverage to be skipped.
*
*
* @since 1.0.0
*/
@Parameter( property = "scoverage.skip", defaultValue = "false" )
private boolean skip;
/**
* Maven project to interact with.
*/
@Parameter( defaultValue = "${project}", readonly = true, required = true )
private MavenProject project;
/**
* All Maven projects in the reactor.
*/
@Parameter( defaultValue = "${reactorProjects}", required = true, readonly = true )
private List reactorProjects;
/**
* Executes {@code test} phase in forked {@code scoverage} life cycle.
*/
@Override
public void execute()
{
if ( "pom".equals( project.getPackaging() ) )
{
getLog().info( "Skipping SCoverage execution for project with packaging type 'pom'" );
return;
}
if ( skip )
{
getLog().info( "Skipping Scoverage execution" );
return;
}
long ts = System.currentTimeMillis();
SCoverageForkedLifecycleConfigurator.afterForkedLifecycleExit( project, reactorProjects );
long te = System.currentTimeMillis();
getLog().debug( String.format( "Mojo execution time: %d ms", te - ts ) );
}
}