`
hjg1988
  • 浏览: 69027 次
  • 性别: Icon_minigender_1
  • 来自: 浙江
社区版块
存档分类
最新评论

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 可以看到各个子项目的报表内容,点击进去即可查看。


分享到:
评论

相关推荐

    Luntbuild - 自动化构建

    2. **插件机制**:Luntbuild 提供了丰富的插件接口,可以扩展到各种任务,如支持不同版本的 JDK、各种构建工具(如 Ant 或 Maven)、代码分析工具等。 3. **多项目支持**:对于大型项目或包含多个子项目的组织,...

    luntbuild手册.pdf

    手册的标题“Luntbuild手册.pdf”直接指向了它旨在介绍的软件工具,Luntbuild是一个开源的持续集成(CI)工具,用于自动化软件的构建、测试和部署过程。描述中提到的“自动化构建与管理”和标签“Luntbuild CI 自动...

    让开发自动化:选择持续集成服务器

    在软件开发过程中,持续集成(Continuous Integration, CI)是一种关键的实践,它确保团队能够及时获得反馈,及时发现并修复问题,以提高开发效率和产品质量。选择适合的持续集成服务器是实施CI的关键步骤,因为错误...

    luntbuild手册.htm

    luntbuild手册.htm..............

    让开发自动化:选择持续集成服务器

    本文内容包括:选择CI服务器的标准ApacheContinuumCruiseControlLuntbuildCI记分卡参考资料由于有许多持续集成服务(CI)服务器可以选择,所以很难决定哪个适应自己。在让开发自动化系列的第二篇文章中,开发自动化...

    luntbuild-开源

    构建自动化和管理工具。 源代码,跟踪器,论坛位于http://www.javaforge.com/proj/summary.do?proj_id=70...在线演示位于http://livedemo.pmease.com:8081/luntbuild/luntbuild-login。 jsp,使用帐户/密码演示/演示。

    敏捷开发:C++ 敏捷开发:挑战、工具、与实践

    - **工具选择**:使用支持持续集成的工具,如 CruiseControl、LuntBuild 和 ThoughtWorks Cruise 等,以自动化构建和测试流程。 #### 结论 尽管存在诸多挑战,但通过采用正确的工具和实践,C++ 项目仍然能够成功地...

Global site tag (gtag.js) - Google Analytics