2010-05-12 59 views
7

关于我刚才的问题 - >Is there a SVN Maven?,我去槽使用页面 - >http://maven.apache.org/scm/maven-scm-plugin/usage.html没有找到完全是我一直在寻找,在这里我想这样做:Maven的SVN结帐例如

  • 结帐清单其中我对前指定项目:

http://mysvnurl/myprojectname在那里我可以参数化的项目名称

然后让说,如果有3-4或N(模块)(分项目的数量,我可以小号使我想要签出的名字也一样),并且我可以指定分支(trunk)和修订版本。为了简化:myprojectname的

  • 结帐某些个子项目(模块)主干

例:

http://mysvnurl/myprojectname/project1/trunk/ * //得到的一切
http://mysvnurl/myprojectname/project2/trunk/ * //得到的一切

我将如何做到这一点与maven,可以有更多的expirience解释如何做到这一点,或指向我的地方,我可以读如何,我GOOGLE了不特定于我的需求。

谢谢

回答

8

,我在你前面的问题提到的Maven SCM Plugin在这个意义上,以SvnAnt任务的替代方案,它允许使用Subversion版本库(其中包括)互动Maven或插件(如发布插件)。但我想我错过了你想要做的事。

因此,让我们再回到这个问题,这里是你如何能在CLI中使用scm:checkout

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

而且我们可以想像把这个所有的POM和插件的configuration声明这些参数(如果您需要处理多个网址,则需要多个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

您的项目是否按以下方式组织?

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

您是否有多模块构建?

第一件事,你为什么要通过Maven结帐?我们构建服务器来完成这项工作或你的IDE ...

+1

@khmarbaise你有一个multimodule构建? - 是的,第一件事,你为什么想通过Maven结帐? - 因为我想让这个过程自动化。 – ant 2010-05-12 11:59:31

+0

好的。通过Hudson for CI检出多模块构建,或者使用单个命令检出树。在Maven本身中没有必要这么做..可能是我忽略了一件事... – khmarbaise 2010-05-12 12:17:38

+0

@khmarbaise的事情是我想要签出某些子模块并非全部 – ant 2010-05-12 12:31:14

3

多模块构建通常要求子模块包含在父模块的目录中。但似乎没有办法让哈德森/詹金斯创建这种结构,除非所有模块都位于SCM中的单一树中。对于我的项目,情况并非如此。许多孩子在单独的scm树(在github上)。如果maven可以创建这个结构,这将会非常有帮助。它需要能够做到这一点只给父母,因为孩子从scm中取出之前是不可见的。

+0

嗨。那么你有没有找到解决这个问题的办法? – aindl 2012-02-09 07:57:31

+0

不,我放弃了多模块构建,当我发现maven在模块实际上是git子模块时不会正确执行多模块释放。 git操作不正确。几个月前我放弃了这个,所以我不记得细节。所以我们分别建立和发布模块(其中10个)。 – GrampaJohn 2012-03-13 03:50:25