除了官方文档,网上关于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 可以看到各个子项目的报表内容,点击进去即可查看。
分享到:
相关推荐
2. **插件机制**:Luntbuild 提供了丰富的插件接口,可以扩展到各种任务,如支持不同版本的 JDK、各种构建工具(如 Ant 或 Maven)、代码分析工具等。 3. **多项目支持**:对于大型项目或包含多个子项目的组织,...
手册的标题“Luntbuild手册.pdf”直接指向了它旨在介绍的软件工具,Luntbuild是一个开源的持续集成(CI)工具,用于自动化软件的构建、测试和部署过程。描述中提到的“自动化构建与管理”和标签“Luntbuild CI 自动...
在软件开发过程中,持续集成(Continuous Integration, CI)是一种关键的实践,它确保团队能够及时获得反馈,及时发现并修复问题,以提高开发效率和产品质量。选择适合的持续集成服务器是实施CI的关键步骤,因为错误...
luntbuild手册.htm..............
本文内容包括:选择CI服务器的标准ApacheContinuumCruiseControlLuntbuildCI记分卡参考资料由于有许多持续集成服务(CI)服务器可以选择,所以很难决定哪个适应自己。在让开发自动化系列的第二篇文章中,开发自动化...
构建自动化和管理工具。 源代码,跟踪器,论坛位于http://www.javaforge.com/proj/summary.do?proj_id=70...在线演示位于http://livedemo.pmease.com:8081/luntbuild/luntbuild-login。 jsp,使用帐户/密码演示/演示。
- **工具选择**:使用支持持续集成的工具,如 CruiseControl、LuntBuild 和 ThoughtWorks Cruise 等,以自动化构建和测试流程。 #### 结论 尽管存在诸多挑战,但通过采用正确的工具和实践,C++ 项目仍然能够成功地...