2017-09-13 223 views
0

我的项目包含以下结构多模块项目Jacoco Maven的配置时,一些模块存在于子目录

pom.xml 
| 
| 
-----sub module A pom.xml 
| 
| 
-----sub module B pom.xml 
| 
| 
-----sub module plugins/C pom.xml 
| 
| 
-----sub module plugins/D pom.xml 

我已经配置了这样的

<modules> 
    <module>A</module> 
    <module>B</module> 
    <module>plugins/C</module> 
    <module>plugins/D</module> 
</modules> 
<plugin> 
    <groupId>org.jacoco</groupId> 
    <artifactId>jacoco-maven-plugin</artifactId> 
    <version>0.7.7.201606060606</version> 
    <executions> 
     <execution> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
     </execution> 
     <execution> 
      <id>report</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>report</goal> 
      </goals> 
     </execution> 
    </executions> 
</plugin> 

主要POM当我运行“MVN验证“jacoco报告只生成模块A & B.对于模块插件/ C和插件/ D Jacoco没有执行,因此没有报告。

回答

0

这个问题不是关于jacoco-maven-plugin,而是关于aggregationinheritance在Maven中。

鉴于example/pom.xml

<project> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>org.example</groupId> 
    <artifactId>example</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <packaging>pom</packaging> 

    <modules> 
    <module>A</module> 
    <module>plugins/C</module> 
    </modules> 

    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.jacoco</groupId> 
     <artifactId>jacoco-maven-plugin</artifactId> 
     <version>0.7.7.201606060606</version> 
     <executions> 
      <execution> 
      <goals> 
       <goal>prepare-agent</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>report</id> 
      <phase>prepare-package</phase> 
      <goals> 
       <goal>report</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</project> 

指定example/Aexample/plugins/C应建为example构建的一部分,但不指定有关插件,性能配置的继承什么,等

对于继承example/plugins/C/pom.xmlexample/pom.xml,第一个应声明第二个为parent

<project> 
    <modelVersion>4.0.0</modelVersion> 

    <parent> 
    <groupId>org.example</groupId> 
    <artifactId>example</artifactId> 
    <version>0.1-SNAPSHOT</version> 
    <relativePath>../..</relativePath> 
    </parent> 

    <groupId>org.example</groupId> 
    <artifactId>C</artifactId> 
    <version>0.1-SNAPSHOT</version> 
</project> 

在插件的这样的情况下的配置将被继承和它们将被执行:

Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T21:39:06+02:00) 
... 
[INFO] ------------------------------------------------------------------------ 
[INFO] Building C 0.1-SNAPSHOT 
[INFO] ------------------------------------------------------------------------ 
[INFO] 
[INFO] --- jacoco-maven-plugin:0.7.7.201606060606:prepare-agent (default) @ C --- 
... 

P.S.截至今天JaCoCo的版本是0.7.9。

0

为您的plugins文件夹添加另一个pom.xml,让它从您的父pom继承,并将C & D定义为子模块,并从父pom中删除模块并添加plugins文件夹。并且不要忘记将父POM从C & D更改为插件pom,应该这样做。