【问题标题】:Maven SVN checkout exampleMaven SVN 结帐示例
【发布时间】:2010-05-12 11:40:32
【问题描述】:

关于我之前的问题 -> Is there a SVN Maven? ,我浏览了使用页面 -> http://maven.apache.org/scm/maven-scm-plugin/usage.html 没有找到我想要的东西,这里是我想做的:

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

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

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

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

例如:

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

我将如何使用 maven 做到这一点,有更多经验的人可以解释如何做到这一点,或者指出我可以阅读的地方,我没有搜索任何特定于我的需求的地方。

谢谢

【问题讨论】:

    标签: svn maven-2


    【解决方案1】:

    我在上一个问题中提到的Maven SCM Plugin SvnAnt 任务的替代方案,因为它允许与来自 Maven 或插件(如发布插件)。但我想我错过了你想要做的事情。

    让我们回到这个问题,这里是如何在 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 功能)是你所追求的。这就是我用来在单个命令中检查具有多个主干的复杂项目的方法。

    【讨论】:

      【解决方案2】:

      多模块构建通常要求子模块包含在父模块的目录中。但是,除非所有模块都在 SCM 中的单个树中,否则 Hudson/Jenkins 似乎没有办法创建这种结构。对于我的项目,情况并非如此。许多孩子在单独的 scm 树中(在 github 上)。如果 maven 可以创建结构,那将非常有帮助。它需要能够仅在给定父 pom 的情况下执行此操作,因为子级在从 scm 获取之前是不可见的。

      【讨论】:

      • 嗨。那么你找到解决这个问题的方法了吗?
      • 没有。当我发现当模块实际上是 git 子模块时,maven 不会正确地进行多模块发布时,我放弃了多模块构建。 git 操作不正确。几个月前我放弃了这个,所以我不记得细节了。所以我们分别构建和发布模块(其中 10 个)。
      【解决方案3】:

      你的项目是这样组织的吗?

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

      你有一个多模块构建吗?

      首先,您为什么要通过 Maven 结帐?让构建服务器或您的 IDE 来完成这项工作...

      【讨论】:

      • @khmarbaise 你有多模块构建吗? - 是的,第一件事是,你为什么要通过 Maven 结帐? - 因为我想自动化这个过程。
      • 好的。多模块构建可以通过 Hudson for CI 签出,或者您使用单个命令签出树。在 Maven 本身中没有必要这样做..可能是我疏忽了一件事......
      • @khmarbaise 问题是我想检查某些子模块而不是全部
      猜你喜欢
      • 1970-01-01
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-03
      相关资源
      最近更新 更多