`
julylin
  • 浏览: 49546 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

CruiseControl 实践(二)

阅读更多
<?xml version="1.0" encoding="gb2312"?>

<project name="FWMS_CHRIST" basedir="." default="core">
	<!-- 设置初始化参数 -->
	<property file="db.properties"></property>
	
	<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer" classpath="${domain.lib}/weblogic.jar" />
	<taskdef name="FindBugs" classname="edu.umd.cs.findbugs.anttask.FindBugsTask" classpath="${findbugs.home}/lib/findbugs-ant.jar"/>
	<taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" classpath="${pmd.home}/lib/pmd-4.2.5.jar"/>
	<taskdef name="convertXmlToText" classname="edu.umd.cs.findbugs.anttask.ConvertXmlToTextTask" classpath="${findbugs.home}/lib/findbugs-ant.jar"/>
		   
	
	<!-- 设置classpath -->
	<path id="libpath">
		<fileset dir="${java160.home}">
			<include name="lib/tools.jar" />
			<include name="jre/lib/rt.jar" />
		</fileset>
		<fileset dir="${bea.lib}">
			<include name="ojdbc6.jar" />
			<include name="*weblogic.jar" />
			<include name="*webservices.jar" />
		</fileset>
		<fileset dir="${junit_src}">
			<include name="junit-4.8.1.jar" />
		</fileset>
		<fileset dir="${ear.dir}/APP-INF/lib">
			<include name="*.jar" />
			<include name="*.zip" />
		</fileset>
	</path>
	
	<path id="checkstyle-lib">
		<fileset dir="${checkstyle.dir}">
			<include name="checkstyle-5.3.jar" />
			<include name="checkstyle-5.3-all.jar" />
		</fileset>
	</path>

	<!--清除-->
	<target name="init">
		<delete dir="${ear.dir}/APP-INF/classes" />
		<delete dir="${reports}" />
		<delete dir="${checkresults}" />
		<delete dir="${build.src}" />
		<delete dir="${jar.dest}" />
		<delete dir="${war.dest}" />
		<delete dir="${buildwar.dest}" />
		<delete dir="${build.lib}" />
		<delete dir="${build.classes}" />
		<antcall target="stop"></antcall>
	</target>

	<!-- 获取源文件 -->
	<target name="CheckOutFromStarTeam">
		<mkdir dir="${build.dir}" />
		<stcheckout URL="${ST.url}" username="${ST.user}" password="${ST.password}" projectname="FWMS_CHRIST" rootlocalfolder="${build.dir}" rootstarteamfolder="code/webApp" deleteuncontrolled="true" forced="true" recursive="true" />
	</target>

	<!-- 编译 -->
	<target name="compilecode">
		<mkdir dir="${ear.dir}/APP-INF/classes" />
		<javac srcdir="${src.dir}" destdir="${ear.dir}/APP-INF/classes" verbose="false" debug="true" failonerror="false" encoding="GBK" source="1.6" target="1.6">
			<classpath refid="libpath" />
			<compilerarg line="-Xlint:deprecation -Xlint:unchecked" />
			<include name="**/*.java" />
		</javac>
	</target>
	
	<!--CheckStyle-->
	<target name="checkstyle">
		<delete dir="${checkresults}" />
		<mkdir dir="${checkresults}" />
		<taskdef resource="checkstyletask.properties" classpath="${checkstyle-lib}">
		</taskdef>
		<checkstyle config="D:/eclipse/个人设置/comtop-checkstyle-1.1(200903).xml" failureProperty="checkstyle.failure" failOnViolation="false">
			<formatter type="xml" toFile="${checkresults}/checkstyle_report.xml" />
			<fileset dir="${src.dir}">
				<include name="**/*.java" />
			</fileset>
		</checkstyle>
		<xslt in="${checkresults}/checkstyle_report.xml" 
			out="${checkresults}/simple_checkstyle_report.html" 
			style="${checkstyle.dir}/contrib/checkstyle-simple.xsl" />
		<xslt in="${checkresults}/checkstyle_report.xml" 
			out="${checkresults}/author_checkstyle_report.html" 
			style="${checkstyle.dir}/contrib/checkstyle-author.xsl" />
		<xslt in="${checkresults}/checkstyle_report.xml" 
			out="${checkresults}/noframes_checkstyle_report.html" 
			style="${checkstyle.dir}/contrib/checkstyle-noframes.xsl" />
		<xslt in="${checkresults}/checkstyle_report.xml" 
			out="${checkresults}/noframes_sorted_checkstyle_report.html" 
				style="${checkstyle.dir}/contrib/checkstyle-noframes-sorted.xsl" />
	</target>

	<!--pmd-->
		<target name="pmd">
			<delete dir="pmd-results/xml" />
			<delete dir="pmd-results/html" />
			<mkdir dir="pmd-results/html" />
			<mkdir dir="pmd-results/xml" />
			<pmd shortFilenames="true">
				<ruleset>D:/eclipse/个人设置/comtop-PMD-rules-1.1.xml</ruleset>
				<formatter type="xml" toFile="./pmd-results/xml/FWMS_CHRIST-pmd.xml" toConsole="false" linePrefix=".line" />
				<fileset dir="${src.dir}">
					<include name="**/*.java" />
				</fileset>
			</pmd>
			<xslt in="./pmd-results/xml/FWMS_CHRIST-pmd.xml" out="./pmd-results/html/perclass_pmd_report.html" style="${pmd.home}/etc/xslt/pmd-report-per-class.xslt" />
			<xslt in="./pmd-results/xml/FWMS_CHRIST-pmd.xml" out="./pmd-results/html/wz_pmd_report.html" style="${pmd.home}/etc/xslt/wz-pmd-report.xslt" />
		</target>
	

	<!--复制配置文件-->
	<target name="copyfile">
		<copy todir="${ear.dir}/APP-INF/classes" overwrite="true" includeEmptyDirs="false">
			<fileset dir="${src.dir}/resources">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
		<copy todir="${ear.dir}/APP-INF/classes" overwrite="true" includeEmptyDirs="false">
			<fileset dir="${src.dir}/bussiness">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
		<copy todir="${ear.dir}/APP-INF/classes" overwrite="true" includeEmptyDirs="false">
			<fileset dir="${src.dir}/test">
				<exclude name="**/*.java" />
			</fileset>
		</copy>
	</target>

	<!-- 编译属性文件 -->
	<target name="buildproperties">
		<native2ascii encoding="GBK" src="${src.dir}" dest="${ear.dir}/APP-INF/classes" includes="*.properties" ext="_zh_CN.properties" />
	</target>

	<!-- 删除jar缓存文件 -->
	<target name="deletetmp">
		<delete dir="${domain.dir}/servers/AdminServer/tmp" />
	</target>

	<!-- 预编译JSP -->
	<target name="precompilejsp">
		<delete dir="${jsp.dir}" />
		<java classname="weblogic.jspc" fork="true" jvm="${java160.home}/bin/java">
			<jvmarg line="-Dcom.sun.xml.namespace.QName.useCompatibleSerialVersionUID=1.0 -Xms512m -Xmx1024m" />
			<classpath refid="libpath" />
			<arg line="-encoding GBK -verboseJspc -linenumbers -noImplicitTlds -webapp ${ear.dir}/web -d ${jsp.dir}" />
		</java>
	</target>
		
	<!--关闭weblogic	-->
	<target name="shutdownweblogic">
		<wlserver 
		classpath="${domain.lib}/weblogic.jar" 
		forceshutdown="true"
		dir="${domain.dir}" 
		host="127.0.0.1" 
		port="7777" 
		action="shutdown" 
		servername="AdminServer" 
		weblogichome="${bea.home}" 
		username="weblogic" 
		password="weblogic"
		/>
	</target>

	<!--启动weblogic-->
	<target name="startWebLogic" description="starts a WebLogic">
		<wlserver productionmodeenabled="true" 
			noexit="true" 
			verbose="true" 
			maxmemory="512M" 
			generateconfig="false"
			classpath="${domain.lib}/weblogic.jar" 
			dir="${domain.dir}" 
			host="127.0.0.1" 
			port="7777" 
			action="start" 
			servername="AdminServer" 
			weblogichome="${bea.home}" 
			username="weblogic" 
			password="weblogic"
			>
        	<jvmarg line="-Xms512m -Xmx768m" />
        	<jvmarg value="-XX:MaxPermSize=512m"/>	    	        	
	    </wlserver>	        	
	</target>


	<!--junit测试-->
	<target name="junitTest">
		<mkdir dir="${reports}" />
		<mkdir dir="${reports}/xml" />
		<junit haltonfailure="no" printsummary="on" jvm="${fvt.java.home}/bin/java">
			<classpath refid="libpath" />
			<formatter type="brief" usefile="false" />
			<formatter type="xml" />
			<batchtest>
				<fileset dir="${test.dir}">
					<patternset>
						<include name="**/*Test.java" />
					</patternset>
				</fileset>
			</batchtest>
			<classpath>
				<pathelement location="${ear.dir}/APP-INF/classes" />
			</classpath>
		</junit>
		<move todir="${reports}/xml">
			<fileset dir=".">
				<include name="TEST-*.xml" />
			</fileset>
		</move>
	</target>
	
	 <!--Findbugs检查-->
	 <target name="convert" >
	 				<delete dir="findbugs-results/xml"/>
				    <delete dir="findbugs-results/html"/>
					<mkdir dir="findbugs-results/html"/>
	 				<mkdir dir="findbugs-results/xml"/>
			        <FindBugs  home="${findbugs.home}" output="xml:withMessages" outputFile="findbugs-results/xml/FWMS_CHRIST-fb.xml"  jvmargs="-Xmx1024m">
	 	  				<class location="${ear.dir}/APP-INF/classes" />  
	 					<sourcePath path="${src.dir}" /> 
			        </FindBugs>
			        <convertXmlToText home="${findbugs.home}"
				        input="findbugs-results/xml/FWMS_CHRIST-fb.xml" 
				        output="findbugs-results/html/findbugs.html"
				        format="html:fancy.xsl"
				     >
			        </convertXmlToText>
	</target>

	<target name="test">
		<mkdir dir="${reports}/html" />
		<!--调用junitreport来产生TESTS-TestSuites.xml及web报告-->
		<junitreport todir="${reports}">
			<report todir="${reports}/html" />
		</junitreport>
		<!--避免反馈两份JUNIT测试报告到EMAIL 把总报告[TESTS-TestSuites.xml]剪切到根目录下-->
		<move todir=".">
			<fileset dir="${reports}">
				<include name="TESTS-*.xml" />
			</fileset>
		</move>
	</target>



	<!--构建-->
	<target name="buildTask" depends="stop">
	 	<!--初始化-->
		<antcall target="init">
		</antcall>
	 	<!--获取源代码-->
		<antcall target="CheckOutFromStarTeam">
		</antcall>
	 	<!--checkstyle检查-->
		<antcall target="checkstyle">
		</antcall>
		<!--pmd-->
		<antcall target="pmd">
		</antcall>
	 	<!--编译源码-->
		<antcall target="compilecode">
		</antcall>
	 	<!--Findbugs检查-->
	 	<antcall target="convert">
	 			</antcall>
	 	<!--拷贝配置文件-->
		<antcall target="copyfile">
		</antcall>
	 	<!--编译属性文件-->
		<antcall target="buildproperties">
		</antcall>
	 	<!--JUNIT测试-->
		<antcall target="junitTest">
		</antcall>
	 	<!--拷贝测试报告-->
		<antcall target="test">
		</antcall>
	</target>

	<!--自动化部署-->
	<target name="deployTask">
	 	<!-- 删除jar缓存文件 -->
		<antcall target="deletetmp">
		</antcall>
	 	<!--预编译JSP-->
		<antcall target="precompilejsp">
				</antcall>
	 	<!--启动weblogic
		<antcall target="startWebLogic">
		</antcall>
	 		-->
	</target>
	
	<!--持续集成-->
	<target name="core" depends="buildTask,deployTask" />
		
	<!--启动weblogic-->
	<target name="start" depends="startWebLogic"/>
		
	<!--关闭weblogic-->
	<target name="stop" depends="shutdownweblogic"/>
</project>
分享到:
评论

相关推荐

    持续集成之CruiseControl.rb

    ### 二、CruiseControl.rb的主要组件 1. **Source Control**:CruiseControl.rb支持多种版本控制系统,如Git、Subversion(SVN)、Mercurial等,用于获取最新的代码变更。 2. **Builder**:构建器负责执行编译、...

    cruisecontrol+maven2配置

    标题与描述概述的知识点主要涉及了使用CruiseControl与Maven2进行持续集成的配置流程。这是一项在软件开发过程中非常关键的技术实践,它能够自动检测代码库中的更新,并自动执行构建、测试以及部署等任务,从而确保...

    持续集成及CruiseControl技术交流

    主题:持续集成及CruiseControl技术交流 在提升软件质量、降低研发风险、拒绝浪费方面,处于敏捷实践领域的持续集成(Continuous Integration,CI)起到重要作用。持续集成能够解决研发工作中的80%任务(日常),...

    持续集成实践之CruiseControl

    **持续集成实践之CruiseControl** 在软件开发领域,持续集成(Continuous Integration,简称CI)是一种重要的实践,它强调开发者频繁地将代码更改合并到主分支,以尽早发现并解决问题。CruiseControl是一款开源的...

    CruiseControl使用指南.rar

    4. **使用CruiseControl搭建持续集成环境**:Elvis_Chen的技术博客文章可能提供了更深入的实践指导,讲解了如何将CruiseControl整合到实际的开发环境中,包括项目导入、构建脚本编写以及测试结果的展示。 5. **...

    CruiseControl使用总结

    通常,你需要下载CruiseControl的二进制包,然后根据项目需求配置XML配置文件。配置文件包含了项目源码位置、构建命令、测试脚本、邮件通知等信息。例如,你可以设置CruiseControl在每次构建后发送邮件通知,以便...

    CruiseControl学习教程.pdf

    **第一章 CruiseControl实践** 1.1 CruiseControl架构 CruiseControl的核心是一个服务器,它负责监听源代码仓库的变更,并在检测到变更时触发构建过程。这个过程包括编译代码、运行单元测试以及执行其他自动化任务...

    CruiseControl

    - **CruiseControl.doc**:可能是一份CruiseControl的入门教程或者详细使用指南,涵盖安装配置、基本概念、常用命令和最佳实践等内容。 - **CruiseControl2.doc**:可能是关于CruiseControl的进阶使用,可能涉及...

    CruiseControl简介及使用举例

    **CruiseControl简介** CruiseControl是一款开源的持续集成工具,最初由ThoughtWorks公司开发,现在由一个活跃的开源社区维护。它的主要功能是监控和自动化软件构建过程,确保项目在开发过程中始终保持可构建状态。...

    Cruisecontrol

    ### Cruisecontrol:持续集成平台与分布式构建实践 #### 一、CruiseControl简介 CruiseControl是一个开源的持续集成平台,旨在帮助企业实现自动化构建过程,提高软件开发效率和质量。项目采用Apache许可证发布,...

    CruiseControl入门

    CruiseControl是一款开源的持续集成工具,主要用于自动化软件构建、测试和发布流程。它通过监控代码库的变更...通过学习和实践CruiseControl,开发者可以更好地掌握持续集成的理念和技术,从而提升整个团队的开发效能。

    CruiseControl持续集成

    CruiseControl是CI服务器的老者,诞生已是多年,在许多方面,CruiseControl服务器已经成为持续集成实践的同义词。而现在,CruiseControl已发展成为一个家族式系统,包括CruiseControl.java、CruiseControl.net、...

    SVN+cruisecontrol 搭建持续集成开发环境

    SVN+cruisecontrol 搭建持续集成开发环境 持续集成开发环境是软件开发过程中的一种实践,它能够自动地构建、测试和部署软件,提高开发效率和软件质量。SVN(Subversion)是一种版本控制系统,能够帮助开发团队管理...

    pyant及Cruisecontrol中的试用

    综合使用PyAnt和CruiseControl,可以极大地提高Python项目的构建效率,实现持续集成的最佳实践,确保项目的稳定性和质量。对于大型团队或者需要频繁迭代的项目,这样的工具组合尤其重要。通过阅读文档、源代码和API...

    基于 CruiseControl 和 Rational 统一变更管理实现的软件开发中的自动化持续构建.mht

    综上所述,实现基于CruiseControl和Rational统一变更管理的自动化持续构建是一个高效而现代的软件开发实践,它对于提高软件项目的质量和迭代速度具有显著的效果。通过深入理解这两个工具的功能和集成方式,开发团队...

    持续集成(CruiseControl-2.7.3)

    CruiseControl是一款开源的持续集成服务器,版本2.7.3提供了自动化构建、测试和部署的功能,帮助团队高效协作,确保软件质量。 安装CruiseControl非常简单,可以下载exe安装文件直接安装,并通过`cruisecontrol.bat...

    Automatic Integration with CruiseControl.NET, NAnt, and NUnit

    ### 自动化集成CruiseControl.NET、NAnt与NUnit:构建持续集成环境 #### 概述 在软件开发过程中,回归测试是一个重要的但经常被忽视的环节。回归测试是指在对已有代码进行修改后重新运行之前的测试用例,以确保...

Global site tag (gtag.js) - Google Analytics