I'm about to set up our medium-size maven multiproject build to use jacoco
for its unit tests. Despite the documentation and some similar questions
on the net, I still don't understand exactly how to set this up.
I have a parent pom that code modules have as their parent, and I have a
separate aggregator pom that lists the modules to build.
My goal is to generate the jacoco data file in each child module, and
initially use "report-aggregate" to generate a view of the aggregated data,
and then later integrate with SonarQube.
I assume I would put the relevant jacoco settings in the parent pom and
aggregator pom. The former for the "prepare-agent" settings for each child
module, and the latter for the "report-aggregate".
The following are my changes to the parent pom. I added the reference to
the jacoco plugin, and added the one "argLine" setting to the surefire
configuration:
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>jacoco.agent.ut.arg</propertyName>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<forkCount>3</forkCount>
<aggregate>true</aggregate>
<reuseForks>true</reuseForks>
<argLine>@{jacoco.agent.ut.arg} -Xmx1024m -XX:MaxPermSize=256m
</argLine>
<testSourceDirectory>${project.build.testSourceDirectory}
</testSourceDirectory>
<includes>
<include>**/*Test.java</include>
</includes>
</configuration>
</plugin>
...
</plugins>
When I run the build, I see in the build for each child module lines like
the following:
[INFO] --- jacoco-maven-plugin:0.7.8:prepare-agent (default-prepare-agent) @
usl-parent-pom ---
[INFO] jacoco.agent.ut.arg set to -javaagent:...\\.m2\\repository\\org\\
jacoco\\org.jacoco.agent\\0.7.8\\org.jacoco.agent-0.7.8-runtime.jar=destfile
=...\\usl-parent-pom\\target\\jacoco.exec
I also added the following to the aggregator pom:
</modules>
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.7.8</version>
<executions>
<execution>
<id>report-aggregate</id>
<goals>
<goal>report-aggregate</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
When I ran the build, I found that it generated the "jacoco.exec" files in
the "target" directory of child modules, but it looks like that's all that
it did. I didn't see an aggregated report built.
I then manually ran "mvn jacoco:report-aggregate" from the top level, and
it seemed to do some work, and it generated an html tree, but when I viewed
it in the browser, I saw that it didn't actually find any data. It showed
an empty table, like this:
Element Missed Instructions Cov. Missed Branches Cov.
Total 0 of 0 n/a 0 of 0 n/a
I'm probably missing multiple important details here. What can I do here?
--
You received this message because you are subscribed to the Google Groups
"JaCoCo and EclEmma Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/jacoco/a9a480ed-2a52-4ce8-a086-0157e0e6b835%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.