Удалите вложенные тестовые классы с помощью maven2

Я использую вложенные классы для доступа к закрытым членам в тестах JUnit. Они называются «TestProxy».

Я хотел бы удалить их во время сборки с помощью maven2, чтобы не включать его в файл jar.

  • Есть ли вариант конфигурации?
  • Можно ли это сделать с помощью плагина? Если так, то прототип был бы неплохим! ;-)

Спасибо

Изменить: зачем использовать частные методы? Мне нужно ввести данные из сторонних систем, которые просто не могут быть вызваны при каждом тестовом запуске JUnit. И мне действительно не нужен публичный сеттер для личных данных, иначе рано или поздно другой программист может неправильно его использовать.


person Synox    schedule 14.04.2009    source источник
comment
Разве классы в папке тестов НЕ должны быть включены в JAR по умолчанию?   -  person matt b    schedule 14.04.2009
comment
Я говорю о вложенных классах. Класс, принадлежащий другому классу. Эти классы находятся в обычном дереве исходных текстов, скомпилированы, например. как MyTestClass $ TestProxy.class   -  person Synox    schedule 14.04.2009
comment
Значит, это часть папки src, но вы не хотите, чтобы она отображалась в окончательном пакете? Я действительно не понимаю, почему вы тогда включили его в папку src ...   -  person matt b    schedule 14.04.2009
comment
Я имею в виду, похоже, что ваши обходные пути, позволяющие упростить модульное тестирование определенных компонентов, требуют еще дополнительных обходных решений ... что должно напоминать вам о том, что, возможно, исходные обходные пути не лучшая идея   -  person matt b    schedule 14.04.2009


Ответы (2)


Вот ответ: его можно настроить с помощью maven. Просто вставьте следующий код в файл pom.xml в разделе build / plugins:

<plugin>
 <groupId>org.apache.maven.plugins</groupId>
 <artifactId>maven-jar-plugin</artifactId>
 <configuration>
   <excludes>
     <exclude>**/*$TestProxy*</exclude>
   </excludes>
 </configuration>
</plugin>

@ см. документацию: http://maven.apache.org/plugins/maven-jar-plugin/jar-mojo.html#excludes.

person Synox    schedule 15.04.2009

Для такого рода вещей вы можете обнаружить, что сценарий ant - это первый порт вызова, а не специальный настраиваемый плагин. Заставить Maven запускать произвольные скрипты ant как часть сборки очень просто. Проще, чем создать плагин. Этот вопрос отлично описывает, как для запуска ant-скрипта с process-sources этапом выполнения сборки Maven.

С другой стороны, я ожидаю, что вы получите кучу ответов, в которых вас спросят, почему вы модулируете тестирование членов класса с частным доступом ...

person serg10    schedule 14.04.2009