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

org.jacoco.maven.DumpMojo Maven / Gradle / Ivy

Go to download

The JaCoCo Maven Plugin provides the JaCoCo runtime agent to your tests and allows basic report creation.

There is a newer version: 0.8.12
Show newest version
/*******************************************************************************
 * Copyright (c) 2009, 2016 Mountainminds GmbH & Co. KG and Contributors
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Chas Honton, Marc R. Hoffmann - initial implementation
 *
 *******************************************************************************/
package org.jacoco.maven;

import static java.lang.String.format;

import java.io.File;
import java.io.IOException;
import java.net.InetAddress;

import org.apache.maven.plugin.MojoExecutionException;
import org.jacoco.core.tools.ExecDumpClient;
import org.jacoco.core.tools.ExecFileLoader;

/**
 * 

* Request a dump over TCP/IP from a JaCoCo agent running in * tcpserver mode. *

* *

* Note concerning parallel builds: While the dump goal as such is thread safe, * it has to be considered that TCP/IP server ports of the agents are a shared * resource. *

* * @goal dump * @phase post-integration-test * @threadSafe * @since 0.6.4 */ public class DumpMojo extends AbstractJacocoMojo { /** * Path to the output file for execution data. * * @parameter property="jacoco.destFile" * default-value="${project.build.directory}/jacoco.exec" */ private File destFile; /** * If set to true and the execution data file already exists, coverage data * is appended to the existing file. If set to false, an existing execution * data file will be replaced. * * @parameter property="jacoco.append" default-value="true" */ private boolean append; /** * Sets whether execution data should be downloaded from the remote host. * * @parameter property="jacoco.dump" default-value="true" */ private boolean dump; /** * Sets whether a reset command should be sent after the execution data has * been dumped. * * @parameter property="jacoco.reset" default-value="false" */ private boolean reset; /** * IP address or hostname to connect to. * * @parameter property="jacoco.address" */ private String address; /** * Port number to connect to. If multiple JaCoCo agents should run on the * same machine, different ports have to be specified for the agents. * * @parameter property="jacoco.port" default-value="6300" */ private int port; /** * Number of retries which the goal will attempt to establish a connection. * This can be used to wait until the target JVM is successfully launched. * * @parameter property="jacoco.retryCount" default-value="10" */ private int retryCount; @Override public void executeMojo() throws MojoExecutionException { final ExecDumpClient client = new ExecDumpClient() { @Override protected void onConnecting(final InetAddress address, final int port) { getLog().info( format("Connecting to %s:%s", address, Integer.valueOf(port))); } @Override protected void onConnectionFailure(final IOException exception) { getLog().info(exception.getMessage()); } }; client.setDump(dump); client.setReset(reset); client.setRetryCount(retryCount); try { final ExecFileLoader loader = client.dump(address, port); if (dump) { getLog().info( format("Dumping execution data to %s", destFile.getAbsolutePath())); loader.save(destFile, append); } } catch (final IOException e) { throw new MojoExecutionException("Unable to dump coverage data", e); } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy