плагин maven scm, удаляющий выходную папку при каждом выполнении - PullRequest
0 голосов
/ 06 мая 2010

Мне нужно скачать из 2 разных мест SVN в один и тот же выходной каталог. Поэтому я настроил 2 разных исполнения. Но каждый раз, когда он выполняет извлечение, удаляет выходной каталог, поэтому он также удаляет уже загруженные проекты.

Вот пример моего 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-clean-plugin:

<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>

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

Есть идеи?

Ответы [ 2 ]

3 голосов
/ 06 мая 2010

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

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

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

0 голосов
/ 06 мая 2010

Я изменил исходный код maven-scm-plugin. Добавлена ​​нужная мне функциональность.

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

...