1

我有父项目和一些子项目。有些孩子之间有依赖关系。例如:父母 -> 孩子 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。

任何帮助表示赞赏。

4

2 回答 2

0

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”一起调用将导致安装 JAR 的检测版本。除非这是一个期望的行动,

于 2014-10-07T20:11:55.597 回答
0

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

   <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>

于 2014-09-29T21:12:11.977 回答