2016-03-17 3 views
0

У меня 2 модулей в следующей структуреMaven рекомендует не использовать тест-банки, но я бы в конечном итоге с циклической зависимостью

  • Lib
    • SRC/Основной/Java
      • MyInterface
    • SRC/тест/Java
      • MyMockObject реализует MyInterface
      • MyTest1 - использует MyMockObject
  • Основная dependsOn: -lib тест-банку объем: тест & -lib
    • SRC/тест/Java
      • MyTest2 - использует MyMockObject

В настоящее время это было прекрасно, как мой основной модуль будет добавить зависимость от модуля тест-банку Либерал, однако, как видно здесь https://maven.apache.org/plugins/maven-jar-plugin/examples/create-test-jar.html Это рекомендуется вместо этого создать -тесту модуль и разоблачать, что вместо того, чтобы использовать тест-банка.

Это, однако, в моем случае приведет к циклической зависимости следующим образом:

  • тест - dependsOn -lib
    • SRC/главная/Java
      • MyMockObject implementsMyInterface
  • Lib - dependsOn: -test тестовая область
    • SRC/Основной/Java
      • MyInterface
    • SRC/тест/Java
      • MyTest1 использует MyMockObject
  • m айн dependsOn: -test тестовая область & -lib
    • SRC/тест/Java
      • MyTest2 - использует MyMockObject

Как я могу держать организованную структуру мавена в этом случае?

+0

Я хочу, чтобы некоторые тестовые утилиты, которые будут распределены между испытаниями в различных модулях. – mangusbrother

+0

По-моему, ваша идея хороша, и это недостаток Maven, так как зависящая от объема проверка определяется как циклическая зависимость (нет реального цикла). Что касается тестовой банки, то вы можете ее сохранить. Если вы решили изменить, вы можете разделить 'lib' на' lib-api' и 'lib-impl' – michaldo

ответ

0

Причина Mavens recomandation не использовать тест-банку зависимость является

Недостатком этого решения является то, что вы не получаете транзитивные тест-Scoped зависимости автоматически. Maven только разрешает зависимостей времени компиляции, поэтому вам придется вручную добавлять все другие требуемые зависимости от тестовой области.

Так что если это не проблема, просто используйте зависимость тестовой банки. Вы также можете упаковать только те тестовые классы и ресурсы в тест-банку, что вы действительно хотите поделиться:

  <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-jar-plugin</artifactId> 
      <executions> 
       <execution> 
        <goals> 
         <goal>test-jar</goal> 
        </goals> 
        <configuration> 
         <includes> 
         <!-- include only test resources from that package-->        <include>**/com/prefabwarek/web/ui/page/include/*</include> 
         </includes> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 

 Смежные вопросы

  • Нет связанных вопросов^_^