`
julylin
  • 浏览: 47924 次
  • 性别: 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技术交流

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

    持续集成实践之CruiseControl

    持续集成实践之CruiseControl

    CruiseControl持续集成

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

    OpenDoc-CruiseControl.rar_Windows编程_C#_

    本文将简单地介绍持续集成的一些基本概念,持 续集成到底是做什么的?持续集成的关键点在什么地方?怎么结合工具进行实践?最后一步步地演示怎么使用 CruiseControl 这个目前最热门的持续集成工具。

    Android手机客户端自动化测试实践

    Android手机客户端自动化测试实践,包含Monkey测试,MonkeyRunner测试,Robotium测试,Cruisecontrol持续集成测试

    自动进行团队构建和单元测试过程

    配置构建服务器初始配置安装CruiseControl让CruiseControl一直运行简化CruiseControl的配置CruiseControlWeb应用程序安全问题结束语下载参考资料极限编程和敏捷方法建议开发过程要包含持续集成和单元测试。...

    Pro .NET Best Practices .net最佳实践 英文版

    10.2.1 CruiseControl.NET 10.2.2 Jenkins 10.2.3 TeamCity 10.2.4 Team Foundation Server 10.3 CI生命周期 10.3.1 重新生成 10.3.2 单元测试 10.3.3 分析 10.3.4 打包 10.3.5 部署 10.3.6 稳定性测试 10.3.7 生成...

    《.NET最佳实践》.((美)Stephen Ritchie)

    10.2.1 CruiseControl.NET 174 10.2.2 Jenkins 175 10.2.3 TeamCity 175 10.2.4 Team Foundation Server 176 10.3 CI生命周期 176 10.3.1 重新生成 177 10.3.2 单元测试 182 10.3.3 分析 184 10.3.4 打包 ...

    Apache Maven 2 Effective Implementation

    - Continuum,一个持续集成的Server,另一个非常著名的开源server是CruiseControl - Archiva,搭建本地repository - EMMA,测试代码覆盖率统计工具,另一个非常注明的工具是Clover,不过是商业的软件 - 代码质量...

    质量之匙:持续集成工具与实践

    编者按:CruiseControl:简称CC,持续集成工具,主要提供了基于版本管理工具(如CVS)感知变化或每天定时的持续集成,并提供持续集成报告、Email、Jabber等等方式通知相关负责人,其要求是  专访Thoughtworks公司...

    持续集成DailyBuild实践

    MicrosoftVisualStudio.NET20053.1CruiseControl.NETversion1.1;项目监控工具。3.2Nantversion0.85;基于.NET的自动化编译工具。3.3NantContrib;增强Nant的工具。3.4NUnitversion2.2.8for.NET2.0;单元测试的一个比较...

    实现持续集成

    它解释了如何用支持工具实现持续集成,这些工具包括IBMRationalClearCase,IBMRationalClearQuest和一个开放源码工具CruiseControl。持续集成在软件开发世界中是一个热门话题。尽管经常与敏捷过程连接在一起,例如...

Global site tag (gtag.js) - Google Analytics