Luntbuild 使用 Maven2进行持续集成,并输出各种报表

除了官方文档,网上关于Luntbuild的资料并不多,而Luntbuild+maven的更少,相比而言,使用Ant的比较多。笔者也是第一次使用,而笔者的项目是包含多个子项目的,在顶层目录中,有一个pom.xml文件,在该目录中有好几个子目录,其中每个目录也都包含了一个pom.xml,这样,普通的配置方法虽然可以实现正常的构建,但如果想要把每个子项目的各种报表(如emma,pmd等)也生成到构建制品中,并可以让用户可以直接通过luntbuild的web地址访问这些报告,则不能轻松实现。经过了一段时间的琢磨,查找了些资料后,总结出一种方法可以达到目的。
假定项目目录结果如下:
mydemo
├─ pom.xml
├─ subdemo1
│ ├─ pom.xml
│ └─ src
│ └─ ...
└─ subdemo2
├─ pom.xml
└─ src
└─ ...

上面顶层目录中的pom.xml里必须在<modules>标签中包含两个子项目,这样只要在顶层目录中执行mvn就可以同时运行子项目。

1. 配置project

进入luntbuild的Web管理页面,以管理员身份登录(默认为账号密码:luntbuild/luntbuild)。选择project标签,在最右侧右击<img alt="">
“新建”图标,填写好各项目内容(参照官方文档即可)。

2. 配置VCS模块
这里也请参照官方文档。

3. 配置Builder
新建一个Builder,builder type 选择 Maven2 builder,Name可以自己随便填写,这里填maven mydemo builder。Command to run Maven2填写运行mvn命令脚本的完整路径,如/home/admin/tools/apache-maven-2.2.0/bin/mvn。Directory to run Maven2 in表示要执行mvn命令的目录,相对于项目根目录,这里直接在项目根目录执行,所以空着。Goals to build填写maven2的构建目标,比如我们要编译、并使用插件生成各种报表,使用以下命令:compile emma:emma jxr:jxr pmd:pmd。其它使用默认配置。填写完后保存。

4. 编写一个简单的maven2插件
由于步骤3的配置虽然可以正常构建,但两个子项目生成的报表无法放到luntbuild的制品输出目录中(而是仅仅放到两个子项目目录中的target/site目录中),这样也就无法通过luntbuild的web来访问。所以这一步要写一个maven2插件,用于在上面的builder执行结束后把target/site中的内容复制到luntbuild的制品输出目录中,以便用户可以直接访问。
首先创建一个临时目录,在命令行下cd到该目录中,然后使用maven的archetype插件生成一个项目,执行以下命令:
mvn archetype:create -DgroupId=com.mycomapny.mojo -DartifactId=maven-copy-site-plugin -DarchetypeArtifactId=maven-archetype-mojo


成功后,到临时目录中可以看到生成了maven-copy-site-plugin目录,进入到里面的src\main\java\com\mycompany\mojo目录中,新建一个类CopyFolderMojo.java:

/**
* @author Jinggang.huangjg
*
* @goal copydirectory
*
* @description 复制指定的源目录到指定的目标目录
*/
public class CopyFolderMojo extends AbstractMojo {

/**
* 被拷贝的源目录路径
*
* @parameter expression="${project.build.directory}"
* @required
*/
private File inputDirectory;

/**
* 目标目录路径
*
* @parameter expression="${project.copyto.directory}"
* @required
*/
private File outputDirectory;

/**
* 当前项目名称
*
* @parameter expression="${project.name}"
* @required
*/
private String projectName;

public void execute() throws MojoExecutionException, MojoFailureException {
File in = new File(inputDirectory, "site");
if (!in.exists()) {
return;
}
File out = new File(outputDirectory, projectName);
if (!out.exists()) {
out.mkdirs();
}
in.renameTo(new File(out, in.getName()));
}

}


然后命令行cd到maven-copy-site-plugin目录的根目录下,执行mvn install命令,把该插件安装到本地库中。

5. 配置为两个子项目分别配置builder。
这两个builder专门执行刚刚写的插件,用于复制报表所在的目录(不进行其它编译之类的工作,因为之前那个顶层项目builder执行时会把各个子项目执行一遍。
在luntbuild的Builders标签页中,点击新建图标。builder type选择Maven2 builder,Name可以填SubDemo1 report。Command to run Maven2:/home/admin/tools/apache-maven-2.2.0/bin/mvn。
这里Directory to run Maven2 in要填:subdemo1。
Goals to build填:com.mycompany.mojo:maven-copy-site-plugin:1.0-SNAPSHOT:copydirectory,
Build properties中加入一行:project.copyto.directory="${build.artifactsDir}"
其余默认。填完保存。同样的,再新建一个builder,对subdemo2做类似配置。

6. 创建构建计划
点击Schedules标签,点击新建图标。Name可以填:demo schedule
Next build version可以填:demo-1.0.0
Trigger type选simple,Repeat interval(minutes):依实际情况配置(每多少分钟执行计划一次)
Associated builders:选择maven mydemo
Associated post-builders:选择SubDemo1 report和SubDemo2 report
Post-build strategy:选择post-build always,其余配置参考官方文档。
然后保存。

到这里,所有的配置都配置好了。然后每次自动构建后(也可以手动构建),在Home -> Builds中可以看到最近一次构建结果,点击Latest build列中的一个构建制品,查看详情,点击
Build Artifacts 可以看到各个子项目的报表内容,点击进去即可查看。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值