1

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>

しかし、フォルダー内のすべてを除外する方法を理解できません。

何か案が?

4

2 に答える 2

3

はい:各SVNの場所をMavenモジュール(サブプロジェクト)に配置してから、2つを結合するコードを含む3番目のプロジェクトを作成します。

背景:Mavenでは、POM.xmlごとに常に1つのプロジェクトがあります。複数の場所からのデータを結合する必要があると思われる場合は、モジュールを作成してから、親POMを使用してそれらを1つの「reactorプロジェクト」に結合します。

ビルドするには、親の「reactorプロジェクト」でMavenを呼び出します。

于 2010-05-06T08:10:22.913 に答える
0

maven-scm-plugin のソースを変更しました。必要な機能を追加しました。

お時間をいただきありがとうございます。

于 2010-05-06T11:49:54.600 に答える