我需要从2个不同的svn位置下载到同一个输出目录。所以我配置了2个不同的执行。但每次执行checkout都会删除输出目录,因此它也会删除已经下载的项目。
以下是我的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>
但我无法实现如何排除文件夹中的所有内容。
任何想法?
答案 0 :(得分:3)
是:将每个SVN位置放在Maven模块(子项目)中,然后创建第三个项目,其中包含连接这两个的代码。
背景:使用Maven,每个POM.xml总是有一个项目。如果您认为需要从多个位置连接数据,请创建模块,然后使用父POM将它们连接到一个“reactor项目”。
要构建,请在父“reactor project”中调用Maven。
答案 1 :(得分:0)
我已经修改了maven-scm-plugin的源代码。添加了我需要的功能。
感谢您的时间和帮助!