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