Maven Shade и Clover не будут работать на сайте mvn

У меня есть родительский проект и несколько дочерних проектов. Некоторые из детей имеют зависимость друг от друга. Например: родитель - > ребенок 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>

Детская помпа выглядит примерно так:

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

Я заметил, что даже когда сайт запущен, клевер пытается создать затененную банку в папке target/clover/.

Любая помощь приветствуется.

2 ответа

Решение

Используемый профиль для включения / выключения затененного плагина.

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

У maven-clover2-plugin есть две цели, которые можно использовать для инструментария исходного кода:

Clover2: цель инструмента создает жизненный цикл параллельной сборки в Maven для источников инструментов. Это означает, что исходные корни (например, src/main/java и src / test / java), а также выходные папки (например, target / classes) перенаправляются в каталог target/clover. Такое перенаправление папок действительно может в некоторых случаях вызывать проблемы при работе других подключаемых модулей Maven.

Clover2: цель установки выполняет инструментарий кода в жизненном цикле сборки Maven по умолчанию. Это означает, что выходные папки остаются неизменными (и инструментальные классы помещаются, например, в target / classes).

Я предлагаю попробовать clover2:setup вместо цели clover2: tool one. Однако имейте в виду, что вызов 'clover2:setup' вместе с 'mvn install' или 'mvn deploy' приведет к установке инсталлированных версий ваших JAR-файлов. Если это не желаемое действие,

Другие вопросы по тегам