Maven SVN结帐示例

时间:2010-05-12 11:40:33

标签: svn maven-2

关于我之前的问题 - > Is there a SVN Maven?,我通过了使用情况页面 - > http://maven.apache.org/scm/maven-scm-plugin/usage.html找不到我想要的东西,这就是我想要做的事情:

  • 我为ex指定的项目的结帐清单:

http://mysvnurl/myprojectname我可以参数化项目名称

然后假设是否有3-4个或n个子项目(模块)(我也可以指定名称)我想要结帐,并且我可以指定分支(主干)和修订。简化:

  • 签出myprojectname的某些子项目(模块)主干

前:

http://mysvnurl/myprojectname/project1/trunk/ * //获取所有内容 http://mysvnurl/myprojectname/project2/trunk/ * //获取所有内容

我如何用maven做到这一点,有更多经验的人可以解释如何做到这一点或指向我可以阅读如何的地方,我没有根据我的需要搜索任何内容。

谢谢

3 个答案:

答案 0 :(得分:8)

我在上一个问题中提到的Maven SCM Plugin 是SvnAnt任务的替代方案,因为它允许从Maven或插件与Subversion存储库(以及其他存储库)进行交互(喜欢发布插件)。但我想我错过了你想做的事情。

让我们回到这个问题,以下是如何在CLI上使用scm:checkout

mvn scm:checkout -DconnectionUrl=scm:svn:https://svn.dev.java.net/svn/glassfish-svn/trunk/v3 -DcheckoutDirectory=v3

我们可以想象将所有这些放在POM中并在插件的configuration中声明这些参数(如果需要处理多个URL,则在几个execution中声明)。可选地,你甚至可以玩一些excludesincludes(现在很荣幸,见 SCM-526 )。

...
<execution>  
  <id>perform-checkout</id>  
  <configuration>  
    <connectionUrl>myUrl</connectionUrl>  
    <checkoutDirectory>myDirectory</checkoutDirectory>  
    <excludes>folder1/*,folder2/*</excludes>
  </configuration>  
  <phase><!-- some phase --></phase>  
  <goals>  
     <goal>checkout</goal>  
  </goals>  
</execution>
...

但我从未像现在这样使用它。为了以防万一,也许可以查看scm:bootstrap,您可以使用它来从最小的POM(参见Bootstrapping a Project Using a POM)引导项目。但在这两种情况下,我都不能100%确定这些目标是为了提供您正在寻找的自动化水平。

我越看你的问题,我越认为svn:externals(即Subversion功能)就是你所追求的。这就是我用来在一个命令中检查多个中继的复杂项目。

答案 1 :(得分:2)

多模块构建通常要求子模块包含在父模块的目录中。但是,除非所有模块都在SCM中的单个树中,否则Hudson / Jenkins似乎没有办法创建这种结构。对于我的项目,情况并非如此。许多孩子都在独立的scm树中(在github上)。如果maven可以创建结构将是非常有帮助的。它只需要父pom就能做到这一点,因为直到从scm中取出它们才能看到它们。

答案 2 :(得分:1)

您的项目是否如下组织?

 root (pom.xml)
   +--- Module1 (pom.xml)
   +--- Module2 (pom.xml)

你有多模块构建吗?

首先,您为什么要通过Maven结账?让Build服务器完成这项工作或IDE ...