Как создать подкаталог в пределах цели с Maven2 - PullRequest
0 голосов
/ 28 июля 2010

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

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

Есть предложения?

1 Ответ

6 голосов
/ 28 июля 2010

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

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

EDIT:Хорошо, тогда вам придется отключить pom с помощью приведенного ниже определения плагина, который будет привязан к generate-test-resources 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>
...