19

我有一个多模块项目,在父 pom 中,我定义了几个报告插件。一些模块包含不需要针对它们运行报告插件的代码,我不需要将它们包含在生成的站点中。有没有办法告诉 Maven 在父 pom 级别忽略它们?

更新:

根据 ajozwik 的回答,我添加了跳过配置。我的 POM 现在如下所示...

父/pom.xml
<modules>
  <module>service</module>
  <module>client</module>
</modules>
<reporting>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-checkstyle-plugin</artifactId>
      <version>2.9.1</version>
    </plugin>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>findbugs-maven-plugin</artifactId>
      <version>2.4.0</version>
    </plugin>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-javadoc-plugin</artifactId>
      <version>2.8.1</version>
    </plugin>
    <plugin>
      <groupId>org.codehaus.mojo</groupId>
      <artifactId>cobertura-maven-plugin</artifactId>
      <version>2.5.1</version>
      <configuration>
        <formats>
          <format>html</format>
        </formats>
      </configuration>
    </plugin>
  </plugins>   
</reporting>

客户端/pom.xml

<build>
  <plugins>
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-site-plugin</artifactId>
      <version>3.1</version>
      <configuration>
        <skip>true</skip>
        <skipDeploy>true</skipDeploy>
      </configuration>
    </plugin>
  </plugins>
</build>

当我执行时:

mvn clean package site

构建成功,客户端的目标目录不包含生成的站点。当我运行时:

mvn clean package site site-stage

为了暂存站点,它正确地暂存站点。如果没有 skipDeploy 标签,登台将失败......

4

4 回答 4

14

您是否尝试过(在儿童 pom 中)?:

       <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <version>3.1</version>
          <configuration>
                <skip>true</skip>
          </configuration>
        </plugin>


更新。 您可以使用属性重新定义默认行为。让您的孩子保持简单。
在父 pom 集中(pluginManagement 或 plugins 部分)

 <properties>
    <maven-site-plugin.skip>false</maven-site-plugin.skip>
 </properties>

   <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-site-plugin</artifactId>
      <version>3.1</version>
      <configuration>
            <skip>${maven-site-plugin.skip}</skip>
      </configuration>
    </plugin>

在父 pom 中重新定义maven-site-plugin.skip

<properties>
    <maven-site-plugin.skip>true</maven-site-plugin.skip>
 </properties>
于 2012-05-31T20:54:04.000 回答
7

您还可以在命令行上忽略报告生成:

mvn -DgenerateReports=false package
于 2014-08-14T08:56:27.937 回答
5

您还可以通过以下方式忽略报告生成:

例如 mvn -Dmaven.site.skip=true 全新安装

于 2015-07-21T20:52:49.207 回答
-3

为了让 Sonar 运行覆盖,Jacoco 也可以这样配置;

         <plugin>
            <groupId>org.jacoco</groupId>
            <artifactId>jacoco-maven-plugin</artifactId>
            <version>0.8.5</version>
            <executions>
                <execution>
                    <id>default-prepare-agent</id>
                    <goals>
                        <goal>prepare-agent</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>

这将导致/target/site/jacoco/jacoco.xml您的项目没有文件,现在该jacoco.exec文件将用于 covarage 将按预期处理

于 2020-01-06T13:53:45.480 回答