【问题标题】:Maven Shade and Clover won't work for mvn siteMaven Shade 和 Clover 不适用于 mvn 站点
【发布时间】:2014-11-18 10:44:37
【问题描述】:

我有父项目和一些子项目。有些孩子之间有依赖关系。例如:父母 -> 孩子 1,父母 -> 孩子 2,孩子 1 -> 孩子 2(孩子 1 依赖孩子 2) 这是我在 poms 中所做的:

  <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-shade-plugin</artifactId>
      <version>2.3</version>
  </plugin>
        <plugin>
    <groupId>com.atlassian.maven.plugins</groupId>
    <artifactId>maven-clover2-plugin</artifactId>
    <version>3.1.10.1</version>
    <configuration>
      <jdk>${compile.source}</jdk>
      <generateHtml>true</generateHtml>
      <generatePdf>false</generatePdf>
      <generateXml>true</generateXml>
    </configuration>
    <executions>
      <execution>
        <phase>pre-site</phase>
        <goals>
          <goal>instrument</goal>
        </goals>
      </execution>
    </executions>
  </plugin>
  <reportPlugins>
              <plugin>
          <groupId>com.atlassian.maven.plugins</groupId>
          <artifactId>maven-clover2-plugin</artifactId>
          <version>3.1.10.1</version>
          <configuration>
            <jdk>${compile.source}</jdk>
            <generateHtml>true</generateHtml>
            <generatePdf>false</generatePdf>
            <generateXml>true</generateXml>
          </configuration>
        </plugin>
  </reportPlugins>

子 pom 看起来像这样:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <executions>
      <execution>
        <phase>package</phase>
        <goals>
          <goal>shade</goal>
        </goals>
      </execution>
    </executions>
    <configuration>
      <createDependencyReducedPom>false</createDependencyReducedPom>
      <filters>
        <filter>
          <artifact>*:*</artifact>
          <excludes>
            <exclude>META-INF/*.SF</exclude>
            <exclude>META-INF/*.DSA</exclude>
            <exclude>META-INF/*.RSA</exclude>
            <exclude>META-INF/LICENSE</exclude>
            <exclude>config.properties</exclude>
          </excludes>
        </filter>
      </filters>
      <transformers>
        <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
        <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
          <mainClass>com.cerner.pophealth.program.runtime.pipeline.Main</mainClass>
        </transformer>
      </transformers>
    </configuration>
  </plugin>

我面临 mvm site-deploy 将失败并出现以下错误的问题:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-shade-plugin:1.7.1:shade (default) on project foo: Error creating shaded jar: error in opening zip file /foo/bar/target/classes -> [Help 1]

mvn site-deploy 从 foo-parent 级别运行。

我注意到即使站点运行时 clover 也会尝试在 target/clover/ 文件夹中创建阴影 jar。

感谢任何帮助。

【问题讨论】:

    标签: maven maven-2 maven-shade-plugin clover


    【解决方案1】:

    使用配置文件启用/禁用阴影插件。

       <profiles>
    <profile>
      <id>shade</id>
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
              </execution>
            </executions>
          </plugin>
        </plugins>
      </build>
    </profile>
    

    【讨论】:

      【解决方案2】:

      maven-clover2-plugin 有两个可用于源代码检测的目标:

      clover2:instrument 目标在 Maven 中分叉了一个并行构建生命周期,以便检测源代码。这意味着源根目录(如 src/main/javasrc/test/java)以及输出文件夹(如 target/classes ) 被重定向到 target/clover 目录。这种文件夹重定向在某些情况下确实可能会导致其他运行的 Maven 插件出现问题。

      clover2:setup 目标在 Maven 的默认构建生命周期中执行代码检测。这意味着输出文件夹保持不变(例如,检测类被放入 target/classes)。

      我建议尝试 clover2:setup 而不是 clover2:instrument 的目标。但是,请记住,将 'clover2:setup' 与 'mvn install' 或 'mvn deploy' 一起调用会导致安装 instrumented 版本的 JAR。除非这是一个期望的操作,否则

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-08-14
        • 1970-01-01
        • 1970-01-01
        • 2015-02-05
        • 2022-08-21
        • 1970-01-01
        • 2018-11-16
        相关资源
        最近更新 更多