`

c-build.xml

    博客分类:
  • Ant
阅读更多
<?xml version="1.0" encoding="UTF-8"?>
<project name="webclients2" default="" basedir=".">
	<!--${ant.project.name}-->
	<!-- 链接库目录 -->
	<property name="lib.dir" value="${basedir}/lib" />
	<!--工程目录-->
	<property name="src" value="${basedir}/src" />
	<property name="test" value="${basedir}/test" />
	<property name="function" value="${basedir}/function" />
	<!-- 工程编译目录 -->
	<property name="build.dir" value="${basedir}/build" />
	<property name="desc.dir" value="${build.dir}/desc" />
	<property name="classes.dir" value="${build.dir}/classes" />
	<property name="function.dir" value="${build.dir}/function" />
	<!-- Tomcat 目录 -->
	<property name="tomcat.dir" value="/opt/javaworkspace/tomcat" />
	<property name="tomcatlib.dir" value="${tomcat.dir}/lib" />
	<!-- Selenium 目录-->
	<property name="selenium.dir" value="/opt/java/selenium/selenium-server-1.0-beta-1" />
	<!-- 测试编译目录 -->
	<property name="test.dir" value="${build.dir}/test" />
	<property name="function.dir" value="${build.dir}/function" />
	<property name="report.dir" value="${build.dir}/Report" />
	<property name="junitreport.dir" value="${report.dir}/JunitReport" />
	<property name="finalreport.dir" value="${report.dir}/FinalReport" />
	<!-- 数据库 -->
	<property file="${basedir}/config/datasource.properties" />
	<property name="changelog" value="${basedir}/database/database.changelog.xml" />
	<!-- 链接库(jar;class文件) -->
	<path id="base.classpath">
		<fileset dir="${lib.dir}">
			<include name="**/*.jar" />
		</fileset>
	</path>
	<!-- ant-contrib.jar -->
	<taskdef resource="net/sf/antcontrib/antlib.xml">
		<classpath>
			<pathelement location="${tomcatlib.dir}/ant-contrib-0.6.jar" />
		</classpath>
	</taskdef>
	<!-- Clean 编译的文件-需要修改-->
	<target name="clean" depends="tomcat.stop">
		<delete dir="${build.dir}" />
		<delete dir="${basedir}/classes">
		</delete>
		<delete>
			<fileset dir="${tomcat.dir}/webapps">
				<include name="${ant.project.name}.war" />
			</fileset>
		</delete>
		<delete dir="${tomcat.dir}/webapps/${ant.project.name}" />
		<delete dir="${tomcat.dir}/work/Catalina/localhost/${ant.project.name}" />
	</target>
	<!-- 生成编译文件目录 --需要改-->
	<target name="init" depends="clean">
		<mkdir dir="${build.dir}" />
		<mkdir dir="${report.dir}" />
		<mkdir dir="${test.dir}" />
		<mkdir dir="${function.dir}" />
		<mkdir dir="${desc.dir}" />
		<mkdir dir="${classes.dir}" />
		<mkdir dir="${report.dir}" />
		<mkdir dir="${junitreport.dir}" />
		<mkdir dir="${finalreport.dir}" />
		<copy todir="${desc.dir}">
			<fileset dir="${basedir}/WebRoot" />
		</copy>
		<copy todir="${classes.dir}">
			<fileset dir="${basedir}/config">
				<include name="*.xml" />
				<include name="*.properties" />
			</fileset>
		</copy>
		<copy todir="${test.dir}">
			<fileset dir="${basedir}/config">
				<include name="*.xml" />
				<include name="*.properties" />
			</fileset>
		</copy>
	</target>
	<!-- 编译src -->
	<target name="compile-src" depends="init">
		<javac srcdir="${src}" destdir="${classes.dir}">
			<classpath refid="base.classpath" />
		</javac>
		<copy todir="${classes.dir}/com/goodhope/pojo">
			<fileset dir="${basedir}/src/com/goodhope/pojo">
				<include name="*.xml" />
			</fileset>
		</copy>
		<copy todir="${classes.dir}/com/goodhope/action">
			<fileset dir="${basedir}/src/com/goodhope/action">
				<include name="*.xml" />
			</fileset>
		</copy>
	</target>
	<!-- 编译test -->
	<target name="compile-test" depends="compile-src">
		<javac srcdir="${test}" destdir="${test.dir}">
			<classpath path="${classes.dir}" />
			<classpath refid="base.classpath" />
		</javac>
	</target>
	<!-- 编译function -->
	<target name="compile-function" depends="compile-src,compile-test">
		<javac srcdir="${function}" destdir="${function.dir}">
			<classpath path="${classes.dir}" />
			<classpath refid="base.classpath" />
		</javac>
	</target>

	<!--生成 War 包 -->
	<target name="war" depends="compile-function">
		<war warfile="${build.dir}/${ant.project.name}.war" webxml="${desc.dir}/WEB-INF/web.xml">
			<lib dir="${basedir}/lib" />
			<classes dir="${classes.dir}" />
			<fileset dir="${desc.dir}">
			</fileset>
		</war>
	</target>
	<!-- 部署 War 到 Tomcat -->
	<target name="deploy" depends="war">
		<copy todir="${tomcat.dir}/webapps">
			<fileset dir="${build.dir}">
				<include name="${ant.project.name}.war" />
			</fileset>
		</copy>
		<antcall target="tomcat.start" />
	</target>

	<!--启动 Tomcat -->
	<target name="tomcat.start">
		<ant antfile="${tomcat.dir}/tomcat-build.xml" target="tomcat.start" inheritall="false" />
	</target>
	<!--停止 Tomcat -->
	<target name="tomcat.stop">
		<ant antfile="${tomcat.dir}/tomcat-build.xml" target="tomcat.stop" inheritall="false" />
	</target>
	
	<!-- 单元测试-生成单元测试报告 -->
	<target name="junit-test" depends="deploy">
		<junit printsummary="on" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
			<classpath>
				<pathelement location="${test.dir}" />
				<pathelement location="${classes.dir}" />
				<path refid="base.classpath" />
			</classpath>
			<formatter type="xml" />
			<batchtest todir="${junitreport.dir}" fork="true">
				<fileset dir="${test.dir}">
					<include name="**/*Test.*" />
				</fileset>
			</batchtest>
		</junit>
		<junitreport todir="${junitreport.dir}">
			<fileset dir="${junitreport.dir}">
				<include name="TEST-*.xml" />
			</fileset>
			<report format="frames" todir="${junitreport.dir}" />
		</junitreport>
		<fail if="tests.failed">
		</fail>
	</target>
	
	<!--启动 Selenium 服务器 -->
	<target name="selenium.start">
		<if>
			<not>
				<socket server="localhost" port="4444" />
			</not>
			<then>
				<java jar="${selenium.dir}/selenium-server.jar" fork="true" spawn="true" />
				<waitfor maxwait="5" maxwaitunit="minute" checkevery="3" checkeveryunit="second">
					<and>
						<socket server="localhost" port="4444" />
					</and>
				</waitfor>
			</then>
		</if>
	</target>
	<!-- 停止 Selenium 服务器 -->
	<target name="selenium.stop">
		<if>
			<socket server="localhost" port="4444" />
			<then>
				<get taskname="selenium-shutdown" dest="${functionTest.report.dir}/selenium-result.txt" src="http://localhost:4444/selenium-server/driver/?cmd=shutDown" ignoreerrors="true" />
			</then>
		</if>
	</target>
	<!-- test-all -->
	<target name="function-test" depends="junit-test">
		<!-- 并行容器节点,一边同时打开tomcat 和selenium server,一边等待两者打开后执行JUnit测试。
	   如果不使用并行节点,而是用spawn=yes属性后台启动tomcat,则屏幕里看不到tomcat信息,如果测试意外终止的话,也不能关闭tomcat -->
		<parallel>
			<antcall target="tomcat.start" />
			<antcall target="selenium.start" />
			<sequential>
				<waitfor maxwait="5" maxwaitunit="minute" checkevery="3" checkeveryunit="second">
					<and>
						<socket server="localhost" port="8099" />
					</and>
				</waitfor >
				<waitfor maxwait="5" maxwaitunit="minute" checkevery="3" checkeveryunit="second">
					<and>
						<socket server="localhost" port="4444" />
					</and>
				</waitfor >
				<!-- Junit Test All -->
				<junit printsummary="on" fork="true" haltonfailure="false" failureproperty="tests.failed" showoutput="true">
					<classpath>
						<pathelement path="${function.dir}" />
						<path refid="base.classpath" />
					</classpath>
					<formatter type="xml" />
					<batchtest todir="${finalreport.dir}">
						<fileset dir="${function.dir}">
							<include name="**/*Test.*" />
						</fileset>
					</batchtest>
				</junit>
				<!-- 生成总测试报告 -->
				<junitreport todir="${finalreport.dir}">
					<fileset dir="${finalreport.dir}">
						<include name="TEST-*.xml" />
					</fileset>
					<report format="frames" todir="${finalreport.dir}" />
				</junitreport>
				<fail if="tests.failed">
				</fail>
				<antcall target="tomcat.stop" />
			</sequential >
		</parallel>
		<antcall target="selenium.stop" />
	</target>
	
	<target name="all">
		<antcall target="function-test"></antcall>
	</target>
	
	<!-- 刷数据库 -->
	<!-- 更新数据-->
	<target name="update-database">
		<taskdef name="updateDatabase" classname="liquibase.ant.DatabaseUpdateTask" classpathref="base.classpath" />
		<updateDatabase changeLogFile="${changelog}" driver="org.postgresql.Driver" url="jdbc:postgresql://localhost:5432/atm" username="goodhope" password="goodhope" dropFirst="true" classpathref="base.classpath" />
	</target>
	<!-- 配置文件 -->
	<taskdef resource="migratortasks.properties" classpathref="base.classpath" />
	<!-- 指定执行文件位置 -->
	<macrodef name="excuteScript">
		<attribute name="dir" />
		<attribute name="dropFirst" default="false" />
		<sequential>
			<migrateDatabase defaultschemaname="public" changeLogFile="@{dir}/script_suite.xml" driver="${dirver}" url="${url}" username="${username}" password="${password}" dropFirst="@{dropFirst}" classpathref="base.classpath" />
		</sequential>
	</macrodef>
	<!-- 删除数据库表,并重新建立数据表 -->
	<target name="fresh.atm.data" description="drop all table and rebuild schema">
		<excuteScript dir="${basedir}/database/script/before" dropFirst="true" />
		<excuteScript dir="${basedir}/database/script/create_table" />
		<excuteScript dir="${basedir}/database/data" />
	</target>
</project>

分享到:
评论

相关推荐

    Jmeter+ant实现测试报告build.xml和报告模板jmeter-results-newreport.xsl

    3. **build.xml文件详解**:`build.xml`是Ant的构建文件,其中包含了一系列的任务和目标。例如,你可以定义一个目标来启动JMeter,另一个目标来生成测试报告,甚至还有一个目标用来发送测试结果的邮件通知。在描述中...

    jstl-1.2.jar standard-1.1.2.jar

    如果你的项目使用了Maven或Gradle等构建工具,可以在pom.xml或build.gradle文件中添加对应的依赖项,以自动管理这些库。 总的来说,`jstl-1.2.jar`和`standard-1.1.2.jar`是Java Web开发中不可或缺的两个库,它们为...

    一个常用的ant的build.xml

    Ant是基于XML的,它的核心在于`build.xml`文件,这个文件是项目的构建脚本,详细定义了构建过程中的各种任务和依赖关系。 标题“一个常用的ant的build.xml”暗示了我们讨论的是一个标准且常见的Ant构建配置文件。...

    build.xml详解

    ### build.xml详解 #### 概述 `build.xml` 是 Apache Ant 构建工具的核心配置文件,用于自动化软件构建过程中的各种任务。本篇将基于提供的 `build.xml` 文件示例,详细介绍其结构、语法以及如何通过配置实现自动化...

    官网下载:Windows-KB841290-x86-ENU.zip

    fciv.exe -v -bp c:\mydir -sha1 -xml db.xml 4.Database storage format: -------------------------- xml file. The hash is stored in base 64. &lt;?xml version="1.0" encoding="utf-8"?&gt; &lt;name&gt; ...

    incredibuild_ndk-build.rar

    标题"Incredibuild_ndk-build.rar"涉及到的是一个与Android NDK开发相关的工具包,它包含两个关键文件:`ndk-build.cmd`和`profile.xml`。这些文件在Android原生开发过程中扮演着重要角色。 **NDK**是Android ...

    apache-ant-1.9.4-bin.tar.gz (适用于LINUX系统)

    4. **Ant的构建文件**:Ant的核心在于它的构建文件,通常命名为`build.xml`。这个XML文件定义了构建过程中的各个任务,包括编译、测试、打包等。用户可以根据项目的具体需求自定义这些任务。 5. **任务(Tasks)**...

    gradle-6.8.1-bin.zip

    例如,如果你将Gradle解压到`C:\Gradle\gradle-6.8.1`,则应添加`C:\Gradle\gradle-6.8.1\bin`到PATH。 3. 重启终端或命令提示符,然后输入`gradle -v`检查是否正确安装和配置。 使用Gradle构建项目时,你可以在...

    xerces-c-build.zip

    总的来说,通过这个“xerces-c-build.zip”项目,开发者可以轻松地在VS2013环境中利用Xerces-C++库进行XML文档的SAX解析。这个项目不仅提供了编译所需的源码和项目配置,还方便了开发者自定义解析行为,以满足XML...

    expat-2.0.0.tar.gz

    Expat 是由 James Clark 开发的一个小型、快速且可移植的 XML 解析器,它不依赖于特定的编程语言,提供了 C 接口供其他程序调用。Expat 不支持完整的 XML 规范,而是专注于基础的解析任务,如解析文档结构、识别...

    cobertura-1.9.4.1-bin.zip

    2. **配置**:根据项目需求,配置 Cobertura 的 XML 配置文件,例如 `cobertura.properties` 或 `build.xml`(如果使用 Ant)。 3. **运行测试**:首先,确保你的项目已经编写了足够的单元测试,并使用 JUnit 或其他...

    最新版windows apache-maven-3.6.3-bin.zip

    插件通过`&lt;build&gt;&lt;plugins&gt;`部分在POM.xml中配置。 8. **生命周期与阶段**:Maven有三个主要生命周期,分别是clean、default和site。default生命周期包括validate、compile、test、package、install和deploy六个...

    ant-xalan1-1.6.1.jar.zip

    Ant通过读取名为build.xml的配置文件来执行各种构建任务,如编译源代码、打包JAR文件、运行测试等。它的灵活性和可扩展性使得开发者能够定制自己的构建流程。Ant的核心由一系列任务组成,每个任务都负责执行特定的...

    pinyin4j-2.5.1.jar

    在Eclipse中,可以右键点击项目 -&gt; Build Path -&gt; Configure Build Path -&gt; Libraries,然后添加外部JARs;在IntelliJ IDEA中,可以在Project Structure -&gt; Modules -&gt; Dependencies中添加JAR。 3. **Maven/Gradle...

    common-2.12.4.aar

    在Android Studio中,aar文件可以直接作为依赖添加到项目中,通过在build.gradle文件中声明依赖项,例如: ```groovy dependencies { implementation 'com.example.common:common:2.12.4' } ``` 这样,项目就可以...

    ant-xalan1-1.6.3.jar.zip

    在Ant构建脚本(通常是build.xml)中,可以通过标签定义Xalan的任务,例如: ```xml &lt;taskdef resource="net/sf/antcontrib/antlib.xml"&gt; &lt;pathelement location="path/to/ant-xalan1-1.6.3.jar"/&gt; ``` 然后...

    apache-ant-1.9.2-bin.tar.gz

    Apache Ant 工具的核心是基于XML的构建文件,称为build.xml,它定义了构建项目的步骤和规则。通过这些XML指令,开发者可以控制编译、测试、打包、部署等过程。在描述中提到,这个工具包是为VLC媒体播放器的编译过程...

    ImageMagick-6.8.9-build-MinGW.7z

    标签"MingW"指出了这个压缩包的关键编译工具,它提供了GCC(GNU Compiler Collection)和其他GNU工具,如make,用于在Windows上进行C/C++编程。 压缩包内的文件夹结构通常是ImageMagick编译后的组件分布,包括: 1...

    apache-ant-1.9.3-src.tar

    每个ant脚本(缺省叫build.xml)中设置了一系列任务(target):比如对于一个一般的项目可能需要有以下任务。 * 任务1:usage 打印本脚本的帮助信息(缺省) * 任务2:clean &lt;-- init 清空初始化环境 * 任务3:...

    gradle-6.6.1-all.zip和gradle-6.6.1-bin.zip

    - 在持续集成服务器上,如Jenkins、Travis CI或GitLab CI/CD,可以轻松集成Gradle构建,通过执行`./gradlew build`命令完成构建和测试。 7. **Gradle的版本管理**: - 选择特定版本的Gradle对于维护项目的一致性和...

Global site tag (gtag.js) - Google Analytics