Настройте агент jacoco для sonar2.12 (многомодульный maven)

В последнюю версию Sonar 2.12 встроен плагин Jacoco, и я хочу использовать его для своей части покрытия кода в многомодульном проекте.

у меня такая структура

proj.com.parent
   proj.com.provider
   proj,com.test

Тестовые случаи для проекта провайдера находятся в тестовом проекте. Когда я устанавливаю плагин покрытия кода в сонаре как jacoco, он выполняется нормально, но комбинированное покрытие кода не отображается на панели инструментов. Я видел сообщение о том, что один файл jacoco.exec может решить проблему, но я не могу этого сделать.

Я попытался настроить ниже в моем pom, как показано ниже

<profile>
        <id>sonar</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                          <argLine>-javaagent:${sonar.jacoco.jar}=destfile=${sonar.jacoco.reportPath}</argLine> 
                    </configuration>
                </plugin>
            </plugins>
        </build>
        <properties>
            <sonar.jacoco.reportPath>${basedir}/code-coverage/jacoco.exec</sonar.jacoco.reportPath>
            <sonar.jacoco.jar> C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar</sonar.jacoco.jar>
        </properties>

But on maven commandline " mvn clean install " i get this error :

Не удалось найти атрибут манифеста Premain-Class в C:\sonar-2.12\war\sonar-server\deploy\plugins\jacoco\META-INF\lib\org.jacoco.agent-0.5.3.201107060350.jar Ошибка при инициализации Не удалось инициализировать библиотеку агента виртуальной машины: инструмент

Может ли кто-нибудь помочь в этом?


person fxviking    schedule 21.01.2012    source источник


Ответы (3)


банка, на которую вы указываете, не является банкой. Извлеките ее с помощью winrar, и вы получите внутри нее еще одну банку. называется jacocoagent.jar. Чтобы проверить, есть ли у вас правильный jar, просто извлеките jacocoagent.jar и найдите manifest.mf, и в нем должна быть запись для класса premain.

это должно сделать.

person raghav    schedule 20.03.2012

У меня такая же проблема. Взгляните на Артефакты агента Jacoco в центральном хранилище.

Есть обычный jar-артефакт, а есть jar со временем выполнения классификатора. Вам нужен артефакт "времени выполнения", который будет использоваться в качестве jar агента. Что я делаю, я просто загружаю jar среды выполнения агента Jacoco с плагином зависимостей maven следующим образом:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-dependency-plugin</artifactId>
    <executions>
        <execution>
            <id>download-jacoco-agent</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>copy</goal>
            </goals>
            <configuration>
                <artifactItems>
                    <artifactItem>
                        <groupId>org.jacoco</groupId>
                        <artifactId>org.jacoco.agent</artifactId>
                        <version>0.6.3.201306030806</version>
                        <classifier>runtime</classifier>
                        <outputDirectory>${project.build.directory}</outputDirectory>
                        <destFileName>jacoco-agent.jar</destFileName>
                    </artifactItem>
                </artifactItems>
            </configuration>
        </execution>
    </executions>
</plugin>

Затем вам просто нужно определить следующую опцию командной строки:

<argLine>-javaagent:${project.build.directory}/jacoco-agent.jar=destfile=${sonar.jacoco.reportPath}</argLine> 
person Gábor Lipták    schedule 30.07.2013

Возможно, вам стоит попробовать установить для свойства sonar.core.codeCoveragePlugin значение jacoco. Инструментом покрытия кода по умолчанию в Sonar по-прежнему является cobertura. См. следующий документ по покрытию кода.

Если это не поможет, я нашел следующую ссылку (которая запускает Jacoco из Maven, как вы пытаетесь сделать):

person Mark O'Connor    schedule 21.01.2012
comment
да, отметьте, я перешел по предоставленной вами ссылке и фактически получил подробности с того же сайта. Но я не знаю, какую версию SONAR они использовали, и моя проблема заключается в ошибке, которая возникает во время выполнения, и я не уверен, какова точная причина. - person fxviking; 21.01.2012