Я новичок в mvn & jacoco и у меня проблема с mvn jacoco:report
, который обнаружил 0 классов в файле jacoco.exec
Агент jacoco выполняется внутри контейнера докера: -javaagent:/opt/jboss/jacoco/org.jacoco.agent.jar=destfile=/opt/jboss/jacoco/jacoco.exec,output=tcpserver,address=*,port=6667
Я передал опцию в standalone.conf
#
# Specify options to pass to the Java VM.
#
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
JAVA_OPTS="$JAVA_OPTS -Djboss.modules.system.pkgs=$JBOSS_MODULES_SYSTEM_PKGS -Djava.awt.headless=true"
JAVA_OPTS="$JAVA_OPTS -javaagent:/opt/jboss/jacoco/org.jacoco.agent.jar=destfile=/opt/jboss/jacoco/jacoco.exec,output=tcpserver,address=*,port=6667"
else
echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
fi
это достаточно?
Когда я запустил jacoco:dump
, я успешно подключаюсь к своему контейнеру, и файл jacoco.exec создается локально (не пусто)
Мое приложение выглядит так:
- Контейнер Docker: wildfly (где мне нужно покрытие кода)
- Локальный компьютер: приложение Maven
- Локальный компьютер: Мой проект Selen Maven (где я выполняю jacoco)
Мой плагин config pom:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<configuration>
<dataFile>/home/mypath/jacoco.exec</dataFile>
<reset>true</reset>
<address>172.17.0.3</address>
<port>6667</port>
<append>false</append>
</configuration>
</plugin>
Редактировать: jacococli создает отчет, поэтому мой exec-файл правильный
Редактировать: Хорошо, так что я думаю, что я нахожу свою проблему, проблема в том, что мое приложение maven является зависимостью от моего проекта selenium, кажется, что jacoco-maven-plugin не может использовать зависимость (чтобы получить все файлы классов) для создать отчет, но с помощью ant есть больше опций, так что вот мое решение:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.8</version>
<executions>
<execution>
<phase>test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<target name="report">
<!-- Execute an ant task within maven -->
<echo message="Generating JaCoCo Reports" />
<taskdef name="report"
classname="org.jacoco.ant.ReportTask">
<classpath
path="xxxtarget/*.jar" />
</taskdef>
<mkdir dir="${basedir}/target/coverage-report" />
<report>
<executiondata>
<fileset dir="${basedir}/target">
<include name="jacoco.exec" />
</fileset>
</executiondata>
<structure name="Integration Tests Coverage Report">
<classfiles>
<fileset dir="xxx/target" >
<include name="*.jar"/>
</fileset>
</classfiles>
</structure>
<html destdir="${basedir}/target/coverage-report/html" />
</report>
</target>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>org.jacoco.ant</artifactId>
<version>0.8.2</version>
</dependency>
</dependencies>
</plugin>
У меня наконец есть отчет, автоматически сгенерированный pom
спасибо