Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 基于maven2的连续集成_Svn_Maven 2_Continuous Integration_Shell - Fatal编程技术网

Svn 基于maven2的连续集成

Svn 基于maven2的连续集成,svn,maven-2,continuous-integration,shell,Svn,Maven 2,Continuous Integration,Shell,我试图弄清楚如何使用maven设置持续集成 我想要的是: 检查SVN中的新内容 如果检测到更改,请将其签出 构建和部署 我认为所有这些都可以被推到一些shell脚本中,以便cron调用它。因此,我们将实现自动化的持续集成(例如,夜间构建) 我知道maven有用于版本控制系统的SCM插件,但我不知道如何让它检查存储库中的更改并根据结果启动签出 所以我问观众:) PS我忘了提到-我对任何现有的应用程序都不感兴趣!它们对于我的VPS服务器来说太重了。请不要建议他们下载并安装-专业版是免费的。它是一个卓

我试图弄清楚如何使用maven设置持续集成

我想要的是:

  • 检查SVN中的新内容
  • 如果检测到更改,请将其签出
  • 构建和部署
  • 我认为所有这些都可以被推到一些shell脚本中,以便cron调用它。因此,我们将实现自动化的持续集成(例如,夜间构建)

    我知道maven有用于版本控制系统的SCM插件,但我不知道如何让它检查存储库中的更改并根据结果启动签出

    所以我问观众:)


    PS我忘了提到-我对任何现有的应用程序都不感兴趣!它们对于我的VPS服务器来说太重了。请不要建议他们下载并安装-专业版是免费的。它是一个卓越的持续集成服务器,支持SVN和Maven(以及其他功能)。

    Maven是存储代码和构建项目的存储库。就我个人而言,我不会把它作为一个持续集成工具

    看看,我想你会找到更多你想要的。其他持续构建工具也适用于您。它将通过从存储库中获取最新版本的代码,并按照您想要的任何计划(甚至是非计划的手动生成)进行构建来工作。

    请查看。它是免费的,开源的,积极开发的,有几十个有用的插件,有很好的Maven2支持,非常棒


    它也在堆栈溢出上。

    您看过吗?

    我们使用一个名为的应用程序来管理所有类似的事情

    • 首先你做一个项目
    • 指向您正在使用的ant、maven或其他构建器(我们只使用ant脚本)
    • 定义SVN适配器(或其他VCS)

    然后,应用程序监控SVN的更改,并构建/部署您的应用程序…

    我建议使用公认的解决方案来管理此问题,因为CI不仅仅是构建

    但是,如果您决定自己动手,您可以使用maven scm插件中的一些目标并捕获输出

    假设您拥有项目的本地副本,因此可以访问pom,您可以运行status命令检查更改,并解析输出检查是否有任何更改 使用的目标是:

    mvn scm:status
    
    如果您看到任何更改的文件,那么您可以签出这些更改并调用您的构建。 不过要小心,maven scm provider svn中有一个bug,这意味着可以跳过更改的文件!您最好直接调用Subversion并解析其输出

    例如,下面将清除以前的构建,签出任何更改的内容,然后运行部署目标

    mvn clean scm:checkout deploy
    
    如果您没有项目的工作副本,您可以使用目标来获得它。如果在pom中设置了一些属性,则可以重用pom来引导多个项目

    例如,如果向以下pom传递适当的命令行参数,则它可以引导任何项目:

    mvn scm:bootstrap -DscmUserName=me -DscmPassword=mypass -DscmConnectionUrl=scm:svn:http://myserver/myproject/trunk
    
    <project>
      [...]
      <packaging>jar</packaging>
      <version>0.0.1</version>
      <name>SCM bootstrapper</name>
      <url>http://somecompany.com</url>
      <scm>
        <connection>${scmConnectionUrl}</connection>
        <developerConnection>${scmDeveloperConnectionUrl}</developerConnection>
        <url>${scmUrl}</url>
      <scm>
      [...]
      <build>
        [...]
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-scm-plugin</artifactId>
            <version>1.0</version>
            <configuration>
              <goals>install</goals>
              <username>${scmUsername}</username>
              <password>${scmPassword}</password>
            </configuration>
          </plugin>
        </plugins>
        [...]
      </build>
      [...]
      <properties>
        <scmDeveloperConnectionUrl>dummy</scmDeveloperConnectionUrl>
        <scmConnectionUrl>dummy</scmConnectionUrl>
        <scmUrl>dummy</scmUrl>
        <scmUsername>dummy</scmUsername>
        <scmPassword>dummy</scmPassword>
      </properties>
    </project>
    
    mvn scm:bootstrap-DscmUserName=me-DscmPassword=mypass-DscmConnectionUrl=scm:svn:http://myserver/myproject/trunk
    [...]
    罐子
    0.0.1
    SCM引导程序
    http://somecompany.com
    ${scmConnectionUrl}
    ${scmDeveloperConnectionUrl}
    ${scmUrl}
    [...]
    [...]
    org.apache.maven.plugins
    
    因此,在进行更改时会触发生成。有一种方法可以为您提供一个这样做的指针。

    >如果您看到任何更改的文件,这是我想自动化的要点:)可能是由于您提到的错误,我不知道如何做到这一点。所以我得出的结论是,使用“svn update”命令,并如您所说,在shell脚本中解析输出以检测传入的更改,可能会更容易。所以谢谢你!最后,我添加了一点关于使用Subversion钩子触发构建的内容,尽管频繁提交可能会导致这种方法出现问题,除非您实现一个队列或标志来检查当前构建。
    <scm>
      <connection>scm:svn:http://path/to/project</connection>
      <developerConnection>scm:svn:http://path/to/project/tags/version</developerConnection>
      <url>scm:svn:http://path/to/project/tags/version</url>
    </scm>