Как я могу настроить плагин Maven Shade для включения тестового кода в мою банку? - PullRequest
13 голосов
/ 01 марта 2011

Я использую плагин Shade Maven, чтобы построить свой проект так, чтобы все его зависимости были включены в один jar (это облегчает запуск его на Hadoop).Shade, похоже, исключает мой тестовый код по умолчанию, что понятно.Поскольку я хотел бы запускать интеграционные тесты для своего кластера, я надеюсь настроить другой профиль для создания отдельного jar-файла для этой цели.Есть ли способ настроить этот плагин, чтобы он также включал тестовый код?

Ответы [ 5 ]

7 голосов
/ 15 августа 2014

В версии 2.2 maven-shade-plugin они добавили опцию "shadeTestJar" (см. MSHADE-158): http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeTestJar

Однако я попытался использовать это и не смог получить егоРабота.Вот мой конфиг плагина:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>2.2</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <shadeTestJar>true</shadeTestJar>
            </configuration>
        </execution>
    </executions>
</plugin>

В файле "...- tests.jar" нет записей, но основной заштрихованный jar выглядит нормально (хотя и не содержит тестовых классов).

Кроме того, этот вопрос дублирует этот другой вопрос, хотя принятый ответ не является действительно удовлетворительным: Как включить тестовые классы в Jar, созданные maven-shade-plugin?

5 голосов
/ 02 апреля 2018

Эти последние пару ответов - в лучшем случае грязные обходные пути для сломанной функции.Факт в том, что в maven-shade-plugin есть ошибка.Тем временем я исследовал и вызвал корень ошибки и создал патч .Теперь я надеюсь, что кто-то в Apache включит его в ближайшее время, и, наконец, функция shadeTestJar сможет работать так, как она должна.

3 голосов
/ 25 марта 2015

Мне удалось заставить его работать, добавив:

<plugin>
     <groupId>org.codehaus.mojo</groupId>
     <artifactId>build-helper-maven-plugin</artifactId>
     <version>1.9.1</version>
     <executions>

        <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
               <goal>add-source</goal>
            </goals>
            <configuration>
               <sources>
                   <source>${project.basedir}/src/test/java/</source>
               </sources>
            </configuration>
        </execution>

      </executions>
</plugin>
0 голосов
/ 02 апреля 2018

Использование maven-shade-plugin, как объяснено выше ~ steve-k, является правильным, к сожалению, из-за ошибки shadeTestJar не работает, а полученный тестовый JAR-файл пуст.

0 голосов
/ 01 марта 2011

Попробуйте include набрать свои тестовые пакеты следующим образом:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-shade-plugin</artifactId>
  <version>1.2.2</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>shade</goal>
      </goals>
      <configuration>
        <artifactSet>
          <includes>
            <include>org.apache.maven:*</include>
          </includes>
        </artifactSet>
      </configuration>
    </execution>
  </executions>
</plugin>
...