cruiseControl config

<cruisecontrol>
    <!-- xxx-->
    <project name="xxx">
        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
        </listeners>
        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>
        <modificationset quietperiod="60">
            <svn localWorkingCopy="projects/${project.name}" />
        </modificationset>
        <schedule interval="300">
            <maven2 mvnhome="/usr/share/maven2" pomfile="projects/${project.name}/pom.xml" goal="clean package sonar:sonar" />
        </schedule>
        <log>
            <merge dir="projects/${project.name}/target"/>
            <merge dir="projects/${project.name}/target/site"/>
            <merge dir="projects/${project.name}/target/test-results"/>
            <merge file="projects/${project.name}/target/checkstyle-result.xml"/>
            <merge file="projects/${project.name}/target/pmd.xml"/>
            <merge file="projects/${project.name}/target/findbugsXml.xml"/>
            <merge file="projects/${project.name}/target/jdepend-report.xml"/>
            <merge file="projects/${project.name}/target/javancss-raw-report.xml"/>
        </log>
        <publishers>
            <onsuccess>
                <artifactspublisher dir="projects/${project.name}/target" dest="artifacts/${project.name}" />
            </onsuccess>
        </publishers>
    </project>

    <!-- xxx-->
    <project name="xxx">
        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
        </listeners>
        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>
        <modificationset quietperiod="60">
            <svn localWorkingCopy="projects/${project.name}" />
        </modificationset>
        <schedule interval="300">
            <maven2 mvnhome="/usr/share/maven2" pomfile="projects/${project.name}/pom.xml" goal="clean package sonar:sonar" />
        </schedule>
        <log>
            <merge dir="projects/${project.name}/target"/>
            <merge dir="projects/${project.name}/target/site"/>
            <merge dir="projects/${project.name}/target/test-results"/>
            <merge file="projects/${project.name}/target/checkstyle-result.xml"/>
            <merge file="projects/${project.name}/target/pmd.xml"/>
            <merge file="projects/${project.name}/target/findbugsXml.xml"/>
            <merge file="projects/${project.name}/target/jdepend-report.xml"/>
            <merge file="projects/${project.name}/target/javancss-raw-report.xml"/>
        </log>
        <publishers>
            <onsuccess>
                <artifactspublisher dir="projects/${project.name}/target" dest="artifacts/${project.name}" />
            </onsuccess>
        </publishers>
    </project>

    <!--xxx-->
    <project name="xxx">
        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt" />
        </listeners>
        <bootstrappers>
            <svnbootstrapper localWorkingCopy="projects/${project.name}" />
        </bootstrappers>
        <modificationset quietperiod="60">
            <svn localWorkingCopy="projects/${project.name}" />
        </modificationset>
        <schedule interval="300">
            <maven2 mvnhome="/usr/share/maven2" pomfile="projects/${project.name}/pom.xml" goal="clean package sonar:sonar" />
        </schedule>
        <log>
            <merge dir="projects/${project.name}/target"/>
            <merge dir="projects/${project.name}/target/site"/>
            <merge dir="projects/${project.name}/target/test-results"/>
            <merge file="projects/${project.name}/target/checkstyle-result.xml"/>
            <merge file="projects/${project.name}/target/pmd.xml"/>
            <merge file="projects/${project.name}/target/findbugsXml.xml"/>
            <merge file="projects/${project.name}/target/jdepend-report.xml"/>
            <merge file="projects/${project.name}/target/javancss-raw-report.xml"/>
        </log>
        <publishers>
            <onsuccess>
                <artifactspublisher dir="projects/${project.name}/target" dest="artifacts/${project.name}" />
            </onsuccess>
        </publishers>
    </project>

    <!--xxx-->
    <!--<project name="xxx">
        <listeners>
            <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
        </listeners>
        <bootstrappers>
            <antbootstrapper anthome="/usr/share/ant" buildfile="projects/${project.name}/build.xml" target="clean test" />
        </bootstrappers>
        <modificationset quietperiod="30">
            <filesystem folder="projects/${project.name}"/>
        </modificationset>
        <schedule interval="300">
            <ant anthome="/usr/share/ant" buildfile="projects/${project.name}/build.xml"/>
        </schedule>
        <log>
            <merge dir="projects/${project.name}/target/test-results"/>
        </log>
        <publishers>
            <onsuccess>
                <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/${project.name}.war"/>
            </onsuccess>
        </publishers>
    </project>-->
</cruisecontrol>

 build.xml

<?xml version="1.0" encoding="utf-8"?>
<project name="xxx" default="war" basedir=".">
	<!-- properties -->

	<property name="classpath" value="" />
	<property name="src.dir" value="${basedir}/src" />
	<property name="lib.dir" value="${basedir}/lib" />
	<property name="java-src.dir" value="${src.dir}/main/java" />
	<property name="test-src.dir" value="${src.dir}/main/test" />
	<property name="build.dir" value="${basedir}/target" />
	<property name="build.classes.dir" value="${build.dir}/classes" />
	<property name="build.test-classes.dir" value="${build.dir}/test-classes" />
	<property name="report.dir" value="${build.dir}/report" />
	<property name="doc.dir" value="${build.dir}/doc" />
	<!--sonar-->
	<property name="sonar.host.url" value="http://xxx.xxx.xxx.xxx:9000/sonar" />
	<property name="sonar.jdbc.url" value="jdbc:mysql://localhost:3306/sonar?useUnicode=true&amp;characterEncoding=utf8" />
	<property name="sonar.jdbc.driverClassName" value="com.mysql.jdbc.Driver" />
	<property name="sonar.jdbc.username" value="sonar" />
	<property name="sonar.jdbc.password" value="sonar" />
	

	<path id="master-classpath">
		<fileset file="${lib.dir}/*.jar">
		</fileset>
	</path>

	<path id="test-classpath">
		<fileset file="${lib.dir}/*.jar">
		</fileset>
		<fileset file="${build.classes.dir}">
			<include name="**/*.class" />
		</fileset>
		<fileset file="java-src.dir">
			<include name="**/*.java"/>
		</fileset>
	</path>

	<!-- init -->
	<target name="init">
		<delete dir="${build.dir}">
		</delete>
	</target>

	<!-- compile -->
	<target name="compile" depends="init" description="compile the source files">
		<mkdir dir="${build.classes.dir}" />
		<javac srcdir="${java-src.dir}" destdir="${build.classes.dir}" target="1.6" includeantruntime="true">
			<compilerarg line="-encoding utf-8" />
			<classpath refid="master-classpath" />
		</javac>
	</target>

	<!-- compiletest -->
	<target name="compiletest" depends="compile" description="compile the test files">
		<mkdir dir="${build.test-classes.dir}" />
		<javac srcdir="${test-src.dir}" destdir="${build.test-classes.dir}" target="1.6" includeantruntime="true">
			<compilerarg line="-encoding utf-8" />
			<classpath>
				<fileset file="${lib.dir}/*.jar" />
				<pathelement path="${build.classes.dir}" />
				<pathelement path="${build.test-classes.dir}" />
				<pathelement path="${java.class.path}/" />
			</classpath>
		</javac>
	</target>
	
	<target name="rmi-compile" depends="compiletest">
		<rmic base="${build.classes.dir}" verify="true">
			<classpath>
				<pathelement path="${build.classes.dir}" />
				<pathelement path="${java.class.path}/" />
			</classpath>
			<include name="**/*.class" />
			<exclude name="**/test/*.class" />
		</rmic>
	</target>


	<!-- test -->
	<target name="test" depends="rmi-compile" description="run junit test">
		<mkdir dir="${report.dir}" />
		<junit printsummary="true" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
			<classpath>
				<fileset file="${lib.dir}/*.jar" />
				<pathelement location="lib/***.jar" />
				<pathelement location="lib/***.jar" />
				<pathelement path="${build.classes.dir}" />
				<pathelement path="${build.test-classes.dir}" />
				<pathelement path="${java.class.path}/" />
			</classpath>
			<formatter type="plain" />
			<batchtest fork="yes" todir="${report.dir}">
				<fileset dir="${test-src.dir}">
					<include name="**/*JUnitTest.java" />
				</fileset>
			</batchtest>
		</junit>
		<fail if="tests.failed">
			-
			****************************************************
			***  One or more tests failed! Check the Output  ***
			****************************************************
		</fail>
	</target>

	<!-- pack -->
	<target name="pack" depends="test" description="make jar file">
		<copy todir="${build.classes.dir}">
			<fileset dir="${basedir}">
				<exclude name="build.xml" />
				<exclude name="复件**" />
				<include name="*.xml" />
				<include name="*.properties" />
				<include name="*.dat" />
			</fileset>
		</copy>
		<jar destfile="${build.dir}/${ant.project.name}.jar" basedir="${build.classes.dir}">
			<exclude name="**/*Test.class" />
		</jar>
	</target>

	<!-- doc -->
	<target name="doc" depends="pack" description="create api doc">
		<mkdir dir="${doc.dir}" />
		<javadoc destdir="${doc.dir}" author="true" version="true" use="true" windowtitle="GpsEDAgent_API">
			<classpath refid="test-classpath">
			</classpath>
			<packageset dir="${java-src.dir}" defaultexcludes="yes">
				<include name="cn/eshore/cargps/**" />
			</packageset>
			<doctitle>
				<![CDATA[<h1>Ant_Junit_xxx.com</h1>]]></doctitle>
		<bottom>
			<![CDATA[<i>All Rights Reserved.</i>]]></bottom>
	<tag name="todo" scope="all" description="To do:" />
	</javadoc>
	</target>
	
	<!-- war -->
	<target name="war" depends="doc" description="make war file">
	<mkdir dir="${lib.dir}" />
	<war destfile="${build.dir}/${ant.project.name}.war" needxmlfile="false">
		<fileset dir="${basedir}">
			<exclude name="build.xml" />
			<exclude name="复件**" />
			<include name="*.xml" />
			<include name="*.properties" />
			<include name="*.dat" />
		</fileset>
		<lib dir="${lib.dir}"></lib>
		<classes dir="${build.classes.dir}">
			<exclude name="**/*Test.class" />
		</classes>
	</war>
	</target>
	
	<!-- testreport -->
	<target name="gen-report-junit">
	<mkdir dir="${report.dir}" />
	<junitreport todir="${report.dir}">
		<fileset dir="${report.dir}">
			<include name="*" />
		</fileset>
		<report format="frames" todir="${report.dir}" />
	</junitreport>
	</target>
	
	<!-- testcoverage -->
	<target name="gen-report-coverage">
	<emma>
	
	</emma>
	</target>
	
	<!-- all -->
	<target name="all" depends="war">
	
	</target>
	
	<!-- sonar -->
	<target name="sonar">
		<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
			<classpath>
				<pathelement location="${lib.dir}/sonar-ant-task-1.3.jar"/>
		    </classpath>
		</taskdef>
		
		<!-- list of mandatories Sonar properties -->
		<property name="sonar.sources" value="${java-src.dir}" />
		<property name="sonar.projectKey" value="org.xxx:xxx" />

		<!-- list of optional Sonar properties -->
		<!--
		  <property key="sonar.projectName" value="this value overrides the name defined in Ant root node" />
		  <property key="sonar.binaries" value="list of directories which contain for example the Java bytecode" />
		  <property key="sonar.tests" value="list of test source directories separated by a comma" />
		  <property key="sonar.libraries" value="list of paths to libraries separated by a comma (These libraries are for example used by the Sonar Findbugs plugin)" />
		-->		
		    
	    <sonar:sonar key="${sonar.projectKey}" version="1.0" xmlns:sonar="antlib:org.sonar.ant"/>
	</target>
</project>

猜你喜欢

转载自liming495.iteye.com/blog/1893155