2010-12-14 7 views
0

Мне нужна целевая ресурс плагина ресурсов для настройки по-другому для фазы тестирования , чем для фазы сборки. При тестировании мне нужно исключить вещи из src/main/resources. Кажется, что это не может быть сделано, testResources цель не имеет никакого отношения к тому, что мне нужно, и цели ресурса может быть только один параметра в определении, что п вступает в силу в обеих испытаниях и построить фазы ...Настройка ресурсов maven при тестировании

Например , мне нужно бы следующие настройки выглядеть по-разному (в некоторых исключает) в стадии тестирования:

  <resources> 
      <resource> 
       <directory>${project.basedir}/src/main/java</directory> 
       <includes> 
        <include>**/*.java</include> 
        <include>service.properties</include> 
       </includes> 
      </resource> 
      <resource> 
       <directory>${project.basedir}/src/main/resources</directory> 
       <includes> 
        <include>**/*.xml</include> 
        <include>**/*.properties</include> 
       </includes> 
      </resource> 
      </resources> 

идеальное поведение было бы, если бы я мог определить «SRC/главная/*» в <testResources>, но, к сожалению, может» t сделать прямо сейчас

Пожалуйста, помогите, мне пришлось бы делать тонны модификации кода, если бы я не понял этого.

ответ

0

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

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

Здесь действительно сияет IoC. Ваши компоненты вводят свои ресурсы вместо того, чтобы компонент имел код выбора времени выполнения, какой ресурс (тестовый или фактический) должен быть выбран. Это важно, потому что тестовый код не может проверить код, который выбирает тест. Если вы видите, что я имею в виду :-)

Если вы используете Spring, вы можете создать test-context.xml, который содержит переопределения bean-изменений для изменений, которые вы хотите создать, а затем загрузить их после загрузки всех ваших других контекстов. Когда он будет загружен, вы получите предупреждение о том, что бобы переопределены, и посмотрите на них в первый раз, чтобы убедиться, что тестовый компонент переопределяет производственный компонент. Затем этот компонент следует вводить, как вы ожидаете.

+0

Причина, по которой я хочу это сделать, состоит из 2 весенних контекстов (приложение/тест) - определения весенних бобов, которые имеют одинаковые имена в классах и тестовых классах. Вместо того, чтобы менять код, я бы предпочел сделать что-то вроде этого ... В противном случае конфликты с именами – lisak

+0

Я отредактировал выше, что происходит весной. Это очень распространенный случай и не требует изменения компиляции или создания нескольких артефактов. Дайте мне знать, если у вас есть дополнительные вопросы, и я могу обновить больше. –

+0

Эй, Брайан, спасибо, но это слишком сложно. Есть 700 бобов на пути к классу проекта, сотни фасолей в одной из его зависимостей + тестовый контекст от этих бобах ... Переопределение боба абсолютно не достаточно, мне действительно нужен ответ на этот вопрос, а не обходной путь – lisak

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