From 39f8125379f0b359ed169e7105f137eb659dd2d3 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Mon, 1 May 2023 15:34:21 -0700 Subject: [PATCH] Unsuccessful attempt at getting the javaagent to load --- .../bld/java/com/example/ExamplesBuild.java | 5 --- .../bld/extension/JacocoReportOperation.java | 44 +++++++++++++------ 2 files changed, 30 insertions(+), 19 deletions(-) diff --git a/examples/src/bld/java/com/example/ExamplesBuild.java b/examples/src/bld/java/com/example/ExamplesBuild.java index 87b9692..6c50d82 100644 --- a/examples/src/bld/java/com/example/ExamplesBuild.java +++ b/examples/src/bld/java/com/example/ExamplesBuild.java @@ -31,11 +31,6 @@ public class ExamplesBuild extends Project { new ExamplesBuild().start(args); } - @Override - public void compile() throws Exception { - super.compile(); - jacoco(); - } @BuildCommand(summary = "Generates Jacoco Reports") public void jacoco() throws Exception { diff --git a/src/main/java/rife/bld/extension/JacocoReportOperation.java b/src/main/java/rife/bld/extension/JacocoReportOperation.java index 1b018cb..13149fb 100644 --- a/src/main/java/rife/bld/extension/JacocoReportOperation.java +++ b/src/main/java/rife/bld/extension/JacocoReportOperation.java @@ -26,16 +26,19 @@ import org.jacoco.report.csv.CSVFormatter; import org.jacoco.report.html.HTMLFormatter; import org.jacoco.report.xml.XMLFormatter; import rife.bld.BaseProject; -import rife.bld.operations.AbstractOperation; +import rife.bld.dependencies.VersionNumber; +import rife.bld.operations.JUnitOperation; import java.io.File; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; /** @@ -44,7 +47,8 @@ import java.util.logging.Logger; * @author Erik C. Thauvin * @since 1.0 */ -public class JacocoReportOperation extends AbstractOperation { +public class JacocoReportOperation extends JUnitOperation { + private static final VersionNumber JACOCO_VERSION = new VersionNumber(0, 8, 10); private static final Logger LOGGER = Logger.getLogger(JacocoReportOperation.class.getName()); private final List classFiles = new ArrayList<>(); private final List execFiles = new ArrayList<>(); @@ -69,10 +73,10 @@ public class JacocoReportOperation extends AbstractOperation classFiles) { - this.classFiles.addAll(classFiles); + public JacocoReportOperation classFiles(File... classFiles) { + this.classFiles.addAll(Arrays.stream(classFiles).toList()); return this; } @@ -93,31 +97,42 @@ public class JacocoReportOperation extends AbstractOperation execFiles) { - this.execFiles.addAll(execFiles); + public JacocoReportOperation execFiles(File... execFiles) { + this.execFiles.addAll(Arrays.stream(execFiles).toList()); return this; } /** * Performs the operation execution that can be wrapped by the {@code #executeOnce} call. * - * @throws Exception when an exception occurs during the execution * @since 1.5.10 */ @Override - public void execute() throws Exception { + public void execute() throws IOException { if (project == null && LOGGER.isLoggable(Level.SEVERE)) { LOGGER.severe("A project must be specified."); } else { - var buildJacocoReportsDir = Path.of(project.buildDirectory().getPath(), "reports", "jacoco", "test").toFile(); + var buildJacocoExecDir = Path.of(project.buildDirectory().getPath(), "jacoco").toFile(); + var buildJacocoTestExec = new File(buildJacocoExecDir, "text.exec"); + + if (execFiles.isEmpty()) { + execFiles.add(buildJacocoTestExec); + + //noinspection ResultOfMethodCallIgnored + buildJacocoExecDir.mkdirs(); + + javaOptions().javaAgent(new File(project.libBldDirectory(), "org.jacoco.agent-" + JACOCO_VERSION + ".jar"), + "destfile=" + buildJacocoTestExec + + ",includes=" + classFiles.stream().map(File::toString).collect(Collectors.joining(","))); + } if (sourceFiles.isEmpty()) { sourceFiles.add(project.srcDirectory()); - //sourceFiles.add(project.srcTestDirectory()); + sourceFiles.add(project.srcTestDirectory()); } if (classFiles.isEmpty()) { @@ -218,11 +233,12 @@ public class JacocoReportOperation extends AbstractOperation sourceFiles) { - this.sourceFiles.addAll(sourceFiles); + public JacocoReportOperation sourceFiles(File... sourceFiles) { + this.sourceFiles.addAll(Arrays.stream(sourceFiles).toList()); return this; } + @SuppressWarnings("PMD.AvoidInstantiatingObjectsInLoops") private ISourceFileLocator sourceLocator() { var multi = new MultiSourceFileLocator(tabWidth);