Hi Marc,

thank you very much for your fast answer. Could you maybe give me some hints 
for this workaround. As I mentioned in my question I'm totally new to maven and 
JaCoCo. Do you mean the Maven Ant Run Plugin?

Best regards
Christian


Am Dienstag, 9. September 2014 09:21:17 UTC+2 schrieb [email protected]:
> I'm currently working as a student employee for a company. My task is to 
> implement test coverage into their multi-module-project.
> I'm pretty new to the subject matter so please keep that in mind while 
> answering.
> 
> We are using the OSGi specification and Maven 3.2.3. The build is called with 
> `mvn clean install`. The project is written in Java.
> I implemented the Jacoco Maven plugin as you can see below.
> 
>     <!-- implementing jacoco plugin -->
>                       <plugin>
>                               <groupId>org.jacoco</groupId>
>                               <artifactId>jacoco-maven-plugin</artifactId>
>                               <version>0.5.5.201112152213</version>
>                               <executions>
>                                       <execution>
>                                               <id>jacoco-initialize</id>
>                                               <goals>
>                                                       
> <goal>prepare-agent</goal>
>                                               </goals>
>                                       </execution>
>                                       <execution>
>                                               <id>jacoco-site</id>
>                                               <phase>package</phase>
>                                               <goals>
>                                                       <goal>report</goal>
>                                               </goals>
>                                       </execution>
>                               </executions>
>                       </plugin>
> 
> The build runs successfuly but JaCoCo is not creating the needed coverage 
> reports.
> The only reports I get are from the tests itself. The classes we want to test 
> appear within the session.html but aren't linked. 
> 
> I already found out that this can happen if classes get modified 
> during the build process, so I implemented an ant task to instrument the 
> classes seperately. But it is still not working. 
> I currently don't know how to tell JaCoCo to use the pre-instrumented-classes 
> for creating the jacoco.exec. Furthermore after building the project there is 
> not in every module a jacoco.exec even if it's supposed to be there. 
> 
> Our Structur looks like this just with way more modules:
> 
>     multi-module-failing-example
>     |-- build
>     |   |--pom
>     |       |--(parent-pom-module.xml)
>     |       |--(parent-pom-module2.xml)
>     |       `--root-pom.xml
>     |-- Module
>     |   |--product
>     |   |    |-- pom.xml
>     |   |    `-- src
>     |   |        `-- main
>     |   |             `-- java
>     |   |                  `-- Calculator.java
>     |   |--product2
>     |   |    |-- pom.xml
>     |   |    `-- src
>     |   |        `-- main
>     |   |             `-- java
>     |   |                  `-- Calculator2.java
>     |   |-- test
>     |   |     |-- pom.xml
>     |   |          `-- src
>     |   |              `-- test
>     |   |                   `--java
>     |   |                       `-- CalculatorTest.java
>     |   `-- test2
>     |        |-- pom.xml
>     |             `-- src
>     |                  `-- test
>     |                      `-- java
>     |                           `-- CalculatorTest2.java
>     `-- Module2
>         |--product3
>         |    |-- pom.xml
>         |    `-- src
>         |        `-- main
>         |             `-- java
>         |                  `-- Calculator3.java
>         |--product4
>         |    |-- pom.xml
>         |    `-- src
>         |        `-- main
>         |             `-- java
>         |                  `-- Calculator4.java
>         |-- test3
>         |     |-- pom.xml
>         |          `-- src
>         |              `-- test
>         |                   `--java
>         |                       `-- CalculatorTest3.java
>         `-- test4
>             |-- pom.xml
>                  `-- src
>                       `-- test
>                           `-- java
>                                `-- CalculatorTest4.java
>    
> 
> Whole root pom:
> 
>     <project xmlns="http://maven.apache.org/POM/4.0.0"; 
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
> http://maven.apache.org/xsd/maven-4.0.0.xsd";>
>       
>       <!--
>         POM defining the build process (maven pluins and their configuration, 
> repositories, ...).
>         Needs to be referenced as parent from all other POMs (directly or 
> indirectly) 
>        -->
>       
>       <modelVersion>4.0.0</modelVersion>
>       
>       <groupId>multi.module.project</groupId>
>       <artifactId>root</artifactId>
>       <version>0.0.1-SNAPSHOT</version>
>       <packaging>pom</packaging>
> 
>       
>       <properties>
>               <tycho-version>0.19.0</tycho-version>
>               
> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
>               <maven.compiler.source>1.7</maven.compiler.source>
>               <maven.compiler.target>1.7</maven.compiler.target>
> 
>       </properties>
> 
>       <build>
>               <plugins>
>                       <plugin>
>                               <!-- enable tycho build extension -->
>                               <groupId>org.eclipse.tycho</groupId>
>                               <artifactId>tycho-maven-plugin</artifactId>
>                               <version>${tycho-version}</version>
>                               <extensions>true</extensions>
>                       </plugin>
>                       <plugin>
>                               <groupId>org.eclipse.tycho</groupId>
>                               
> <artifactId>target-platform-configuration</artifactId>
>                               <version>${tycho-version}</version>
>                               <configuration>
>                                       
>                                       
> <ignoreTychoRepositories>true</ignoreTychoRepositories>
>                                       <environments>
>                                               <environment>
>                                                       <os>win32</os>
>                                                       <ws>win32</ws>
>                                                       <arch>x86</arch>
>                                               </environment>
>                                       </environments>
>                               </configuration>
>                       </plugin>
>                       
>               
>                       <plugin>
>                               <groupId>org.apache.maven.plugins</groupId>
>                               <artifactId>maven-compiler-plugin</artifactId>
>                               <version>3.1</version>
>                               <configuration>
>                                   <optimize>true</optimize>
>                               </configuration>
>                               <executions>
>                                       <execution>
>                                               <id>groovy</id>
>                                               <goals>
>                                                       <goal>compile</goal>
>                                               </goals>
>                                               <phase>compile</phase>
>                                               <configuration>
>                                                       
> <compilerId>groovy-eclipse-compiler</compilerId>
>                                                       <verbose>true</verbose>
>                                               </configuration>
>                                       </execution>
>                               </executions>
>                               <dependencies>
>                                       <dependency>
>                                               
> <groupId>org.codehaus.groovy</groupId>
>                                               
> <artifactId>groovy-eclipse-compiler</artifactId>
>                                               <version>2.7.0-01</version>
>                                       </dependency>
>                                       <dependency>
>                                               
> <groupId>org.codehaus.groovy</groupId>
>                                               
> <artifactId>groovy-eclipse-batch</artifactId>
>                                               <version>2.1.1-01</version>
>                                               <!-- 
> <version>1.7.10-06</version> -->
>                                       </dependency>
>                               </dependencies>
>                       </plugin>
>                        
>                       <plugin>
>                           <groupId>org.apache.maven.plugins</groupId>
>                           <artifactId>maven-surefire-plugin</artifactId>
>                           <version>2.16</version>
>                               
>                       <configuration>
>                     <argLine>${argLine}  -XX:MaxPermSize=256M -Xmx1024M 
> -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=c:/temp 
> -Dcom.sun.management.jmxremote  </argLine>
>                     <systemPropertyVariables>
>                       
> <jacoco-agent.destfile>target/jacoco.exec</jacoco-agent.destfile>
>                     </systemPropertyVariables>          
>                       </configuration>
>                               <executions>
>                                       <execution>
>                                               <id>JUnitTest</id>
>                                               <goals>
>                                                       <goal>test</goal>
>                                               </goals>
>                                               <phase>test</phase>
>                                               <configuration>
>                                                       <includes>
>                                                               
> <include>**/AllTests.java</include>
>                                                               
> <include>**/_AllTests.java</include>
>                                                       </includes>
> 
>                                                       
> <testSourceDirectory>src</testSourceDirectory>
>                                                       
> <testClassesDirectory>target/classes</testClassesDirectory>
>                                               </configuration>
>                                       </execution>
>                               </executions>
>                       </plugin>
>                       
>                       <!-- implementing jacoco plugin -->
>                       <plugin>
>                               <groupId>org.jacoco</groupId>
>                               <artifactId>jacoco-maven-plugin</artifactId>
>                               <version>0.5.5.201112152213</version>
>                               <executions>
>                                       <execution>
>                                               <id>jacoco-initialize</id>
>                                               <goals>
>                                                       
> <goal>prepare-agent</goal>
>                                               </goals>
>                                       </execution>
>                                       <execution>
>                                               <id>jacoco-site</id>
>                                               <phase>package</phase>
>                                               <goals>
>                                                       <goal>report</goal>
>                                               </goals>
>                                       </execution>
>                               </executions>
>                       </plugin>
>                       
>                        <plugin>
> 
>     <!-- Ant task to instrument classes-->
>         <groupId>org.apache.maven.plugins</groupId>
>         <artifactId>maven-antrun-plugin</artifactId>
>         <version>1.7</version>
>         <executions>
>           <execution>
>             <id>compile</id>
>             <phase>compile</phase>
>             <configuration>
>               <target>
>                 <ant antfile="build.xml">
>                   <target name="startInstrument"/>
>                 </ant>
>               </target>
>             </configuration>
>             <goals>
>               <goal>run</goal>
>             </goals>
>           </execution>
>         </executions>
>       </plugin>
>                       
>       
>               </plugins>
>       </build>
> 
>       <dependencies>
>               <dependency>
>                       <groupId>junit</groupId>
>                       <artifactId>junit</artifactId>
>                       <version>4.11</version>
>                       <scope>test</scope>
>               </dependency>
> 
>         
>       </dependencies>
> 
>       <repositories>
>       
>               <repository>
>                       <id>juno</id>
>                       <layout>p2</layout>
>                       <url>${eclipse-repo}</url>
>               </repository>
>               <repository>
>                       <id>orbit</id>
>                       <layout>p2</layout>
>                       <url>${orbit-repo}</url>
>               </repository>
>               <repository>
>                       <id>help</id>
>                       <layout>p2</layout>
>                       <url>${oh-repo}</url>
>               </repository>
>       
>       </repositories>
>     </project>
> 
> 
> 
> 
> I already tried the JaCoCo configurations with a way smaller project and it's 
> working fine. 
> 
> Could there be a problem with the OSGi structure? 
> 
> How can I tell JaCoCo to create coverage reports from the pre-instrumented 
> classes?
> 
> Could this problem be linked to our use of tycho?
> 
> 
> Best regards
> Christian

-- 
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to