我试图弄清楚如何使用maven设置持续集成。
我想要的是:
我认为所有这些都可以推送到一些shell脚本中,以便cron调用它。因此,我们将实现自动化持续集成(例如夜间构建)
我知道maven有SCM插件用于处理版本控制系统,但我不知道如何检查存储库中的更改并根据结果启动检出。
所以我问观众:)
PS我忘记提及 - 我对任何现有应用程序都没有兴趣!它们对我的VPS服务器来说太重了。请不要告诉他们
答案 0 :(得分:3)
看看Hudson。它是免费的,开源的,积极开发的,有许多有用的插件,有很棒的Maven2支持,并且非常棒。
Stack Overflow上也是frequently discussed。
答案 1 :(得分:2)
我建议使用公认的CI tool进行管理,因为CI不仅仅是构建。
但是如果您决定自己动手,可以使用maven-scm-plugin中的一些目标并捕获输出。
假设您拥有项目的本地副本以便可以访问pom,则可以运行status命令来检查更改,并解析输出检查是否有任何更改 使用的目标是:
mvn scm:status
如果您看到任何已更改的文件,则可以查看更改并调用构建。 请注意,maven-scm-provider-svn link text中存在一个错误,这意味着可以跳过更改的文件!您可能最好直接调用Subversion并解析其输出。
例如,以下内容将清除以前的版本,检查所有更改的内容,然后运行部署目标。
mvn clean scm:checkout deploy
如果您没有该项目的工作副本,则可以使用scm:bootstrap目标来获取该项目。如果在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>
要使Maven使用subversion,您需要配置POM的 scm 部分:
<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>
作为轮询更改的替代方法,请考虑添加hook to subversion,以便在进行更改时触发构建。有another question可以指示你这样做。
答案 2 :(得分:1)
Maven是用于存储代码和构建项目的存储库。我个人不会将它用作持续集成工具。
看看hudson,我想你会找到更多你想要的东西。其他连续构建工具也适合您。它可以通过从您的存储库中获取最新版本的代码,并根据您想要的任何计划(甚至是非计划的手动构建)来构建它。
答案 3 :(得分:1)
你看过hudson吗?
答案 4 :(得分:0)
下载并安装JetBrains TeamCity - 专业版是免费的。它是一个极好的持续集成服务器,支持SVN和Maven(以及其他)。
答案 5 :(得分:0)
我们使用名为Luntbuild的应用程序来管理这样的外包。
然后,应用程序监视SVN的更改并构建/部署您的应用程序......