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-файлов. Если это не желаемое действие,