2010-05-06 3 views
0

Мне нужно загрузить из двух разных svn-адресов в один и тот же выходной каталог. Поэтому я настроил 2 разных исполнения. Но каждый раз, когда он выполняет проверку, удаляет выходной каталог, чтобы он также удалял уже загруженные проекты.maven scm plugin удаляет выходную папку при каждом выполнении

Вот пример моего pom.xml:

<profile> 
    <id>checkout</id> 
    <activation> 
    <property> 
     <name>checkout</name> 
     <value>true</value> 
    </property> 
    </activation> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-scm-plugin</artifactId> 
     <version>1.3</version> 
     <configuration> 
      <username>${svn.username}</username> 
      <password>${svn.pass}</password> 
      <checkoutDirectory>${path}</checkoutDirectory> 
      <skipCheckoutIfExists/> 
     </configuration> 
     <executions> 
      <execution> 
      <id>checkout_a</id> 
      <configuration> 
       <connectionUrl>scm:svn:https://host_n/folder</connectionUrl> 
       <checkoutDirectory>${path}</checkoutDirectory> 
      </configuration> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>checkout</goal> 
      </goals> 
      </execution> 
      <execution> 
      <id>checkout_b</id> 
      <configuration> 
       <connectionUrl>scm:svn:https://host_l/anotherfolder</connectionUrl> 
       <checkoutDirectory>${path}</checkoutDirectory> 
      </configuration> 
      <phase>process-resources</phase> 
      <goals> 
       <goal>checkout</goal> 
      </goals> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
</profile> 

Есть ли способ предотвратить расстрелы удалить папку $ {PATH}?


Я придумал решение, но я не могу заставить его работать:

Я добавил к профилю на выполнение Maven-очистки плагина:

<profile> 
    <id>checkout</id> 
    ... 
    <plugin> 
    <artifactId>maven-clean-plugin</artifactId> 
    <executions> 
     <execution> 
     <id>not-clean</id> 
     <configuration> 
      <filesets> 
      <fileset> 
       <directory>${path}</directory> 
       <excludes> 
       <exclude>*/*</exclude> 
       </excludes> 
       <followSymlinks>false</followSymlinks> 
      </fileset> 
      </filesets> 
     </configuration> 
     <phase>initialize</phase> 
     <goals> 
      <goal>clean</goal> 
     </goals> 
     </execution> 
    </executions> 
    </plugin> 

Но я не могу понять, как исключить все в папке.

Любая идея?

+0

Для форматирования кода отступ каждой строки на четыре пробела. –

+0

Можете ли вы объяснить, почему вам нужно проверить код внутри Maven? И зачем вам два места? Не следует ли это делать с помощью Continuous Integration Server (например, Hudson?) – khmarbaise

+0

А ... вы не можете дважды проверять в одном и том же целевом местоположении с Subversion и другим VCT. – khmarbaise

ответ

3

Да: Поместите каждое местоположение SVN в модуль Maven (подпроект), а затем создайте третий проект, который содержит код для присоединения к двум.

Фон: с Maven у вас всегда есть один проект на POM.xml. Если вы считаете, что вам нужно объединить данные из нескольких мест, создайте модули, а затем используйте родительский POM, чтобы присоединиться к ним в один «проект реакторов».

Чтобы построить, вызовите Maven в родительском «проекте реактора».

+0

Спасибо за ваш быстрый повтор. Но я не могу фактически изменить структуру проектов (проект с несколькими модулями). – ssedano

+0

Тогда вы уже на полпути. Я говорю о проекте с несколькими модулями. Дело в том, что вы не можете проверить два источника SCM в одну и ту же папку, поскольку каждый вызов удаляет все, что не может быть найдено в источнике. Таким образом, вы должны проверить в двух разных местах * или *, вы должны использовать пользовательскую задачу ant. См. Плагин antrun. –

0

Я изменил источник maven-scm-плагина. Добавленная функциональность мне нужна.

Спасибо за ваше время и помощь!