2010-07-28 6 views
0

Мне нужно создать подкаталог в целевом каталоге при компиляции с помощью maven2. Причина в том, что я использую плагин, который захватывает ответы на SOAP-запросы и сохраняет их в/target/xml на этапе интеграции-теста.Как создать подкаталог в пределах цели с Maven2

Проблема в том, что если я укажу путь сохранения плагина к (в примере): $ {basedir}/target/xml, плагин выкинет исключение FileNotFoundException. Причина, по которой я хочу, чтобы файл был в/target, заключается в том, что каталог очищается при вызове mvn clean.

Любые предложения?

ответ

6

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

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

EDIT: ОК, то вам придется уродовать свой POM с определением плагина ниже, который будет связываться с порождающих-тест-ресурсовphase и вызвать antrun плагин для создания каталога.

<build> 
    <plugins> 
     ... 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-antrun-plugin</artifactId> 
     <version>1.4</version> 
     <executions> 
      <execution> 
      <phase>generate-test-resources</phase> 
      <configuration> 

       <tasks> 
       <echo message="Creating test output directory"/> 
       <mkdir dir="./target/xml"/> 
       </tasks> 

      </configuration> 
      <goals> 
       <goal>run</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
     ... 
    </plugins> 
    </build> 
+0

Я использую Maven2 плагин, чтобы сделать тестирование (SoapUI), так что не будет работать в моем случае, я боюсь (что testcases указаны в проекте SoapUI которого плагин нагрузки и работать в этап интеграции-тестирования). Было бы проще всего сохранить файлы xml в целевом каталоге, но это будет беспорядочно, поэтому я предпочел бы создать подкаталог в пределах цели с именем «xml», чтобы файлы xml были сохранены там. – John

+0

Спасибо. Конечно, это уродливо, но это делает трюк - я думаю, я мог бы просто создать выходной каталог за пределами целевого каталога, но тогда мне нужно было бы определить плагин maven clean, чтобы он очистил XML-ответы ответа, хе-хе. Принято. – John

+0

Спасибо, первое решение (сдача теста) работает для меня. Кажется сумасшедшим, чтобы использовать ant-плагин для этого (почему это не делает maven?), И тестовый подход - это наименьшее количество хлопот. Благодаря! – ksclarke

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