Ant使用

一、build.xml

<?xml version="1.0" encoding="UTF-8"?>

<project name="iCore_acss" basedir="." default="main" xmlns:ivy="antlib:fr.jayasoft.ivy.ant">
<!-- =================================================================== -->
<!-- 变量设置 -->
<!-- =================================================================== -->
<property environment="env" />
<property name="project.root" value="${basedir}" />
<property name="prop.tmp" value="prop_tmp" />
<native2ascii src="${project.root}" dest="${prop.tmp}" includes="build.properties" />
<property file="${prop.tmp}/build.properties" />
<delete dir="${prop.tmp}" />


<!-- 代码目录 -->
<property name="src.dir" value="${project.root}/src" />
<property name="src.java.dir" value="${src.dir}/java" />
<property name="src.test.dir" value="${src.dir}/test" />
<!-- 存放单元测试的配置文件 -->
<property name="src.test.config.dir" value="${src.test.dir}/config" />
<!-- 存放单元测试的测试数据 -->
<property name="src.test.data.dir" value="${src.test.dir}/data" />
<property name="src.jsp.dir" value="${src.dir}/webroot" />
<property name="src.config.dir" value="${src.dir}/config" />
<property name="src.config.cache.dir" value="${src.config.dir}/cache" />
<property name="src.script.dir" value="${src.dir}/script" />
<property name="exlib.dir" value="${src.config.dir}/exlib" />
<!-- 临时编译目录 -->
<property name="build.dist" value="${project.root}/dist" />
<property name="build.dir" value="${project.root}/build" />
<property name="build.lib.dir" value="${project.root}/lib" />
<property name="build.classes.dir" value="${build.dir}/classes" />
<property name="build.test.dir" value="${build.dir}/test" />
<!-- 单元测试结果和代码覆盖率报告存放目录 -->
<property name="build.coverage.dir" value="${build.dir}/coverage" />
<property name="build.doc.junit.dir" value="${project.root}/doc/junit" />
<property name="build.doc.coverage.dir" value="${project.root}/doc/coverage" />
<!-- jar包注册入库 -->
<property name="pubjar.dir" value="${project.root}/pubjar">
</property>
<!--新增以下 ex-zhuyu001 -->
<property name="app.ear" value="${deploy.exploded.dir}/app.ear" />
<property name="web.ear" value="${deploy.exploded.dir}/web.ear" />
<property name="job.ear" value="${deploy.exploded.dir}/job.ear" />

<!-- ===============start 缓存相关定义================ -->
<property name="cache.job.dir" value="${build.dist}/icore_acss_job" />
<property name="cache.store.dir" value="${build.dist}/icore_acss_store" />

<!--cache job 打包路径 -->
<property name="cache.job.bin" value="${cache.job.dir}/bin" />
<property name="cache.job.config" value="${cache.job.dir}/config" />
<property name="cache.job.lib" value="${cache.job.dir}/lib" />

<!-- cache store 打包路径 -->
<property name="cache.store.bin" value="${cache.store.dir}/bin" />
<property name="cache.store.config" value="${cache.store.dir}/config" />
<property name="cache.store.lib" value="${cache.store.dir}/lib" />

<property name="acss.cache.framework.jar.dir" value="${rel.dir}/${acss.cache.framework.jar}" />
<property name="acss.cache.job.jar.dir" value="${build.lib.dir}/${acss.cache.job.jar}" />
<property name="build.temp.dir" value="${build.dir}/temp" />
<property name="cache.job.tar.gz.dir" value="${rel.dir}/${cache.job.tar.gz}" />
<property name="cache.store.tar.gz.dir" value="${rel.dir}/${cache.store.tar.gz}" />
<property name="acss.cache.client.jar.dir" value="${rel.dir}/${acss.cache.client.jar}" />
<!-- ================end 缓存相关定义================= -->

<!-- 检查工具是否安装 -->
<available classname="fr.jayasoft.ivy.Ivy" property="ivy.present" />
<fail unless="ivy.present" message="第三方包依赖工具没有安装,请把ivy-1.4.jar,ivy-core-1.4.jar拷贝到${env.ANT_HOME}/lib" />

<available classname="net.sf.antcontrib.AntContribVersion" property="antcontrib.present" />
<fail unless="antcontrib.present" message="ANT扩展工具AntContrib没有安装,请把ant-contrib.jar拷贝到${env.ANT_HOME}/lib" />

<available file="weblogic.jar" property="weblogic.present" filepath="${lib.wls.dir}"/>
<fail unless="weblogic.present" message="Weblogic没有安装,或WL_HOME系统环境变量没有设置" />


<available file="emma.jar" property="emma.present" filepath="${env.ANT_HOME}/lib" />
<fail unless="emma.present" message="emma没有安装,请把emma.jar和emma_ant.jar拷贝到${env.ANT_HOME}/lib" />
<!-- 定义weblogic的任务 -->
<taskdef name="wlserver" classname="weblogic.ant.taskdefs.management.WLServer" classpath="${weblogic.jar}" />
<taskdef name="wlconfig" classname="weblogic.ant.taskdefs.management.WLConfig" classpath="${weblogic.jar}" />
<taskdef name="wldeploy" classname="weblogic.ant.taskdefs.management.WLDeploy" classpath="${weblogic.jar}" />

<!-- emma代码覆盖工具 -->
<path id="emma.path">
<pathelement location="${env.ANT_HOME}/lib/emma.jar" />
<pathelement location="${env.ANT_HOME}/lib/emma_ant.jar" />
</path>
<taskdef resource="emma_ant.properties" classpathref="emma.path" />

<!-- Java编译CLASSPATH -->
<path id="master-classpath">
<fileset dir="${build.lib.dir}" />
<fileset file="${weblogic.jar}" />
<!--<fileset file="${javaee.jar}"/> -->
</path>

<!-- =================================================================== -->
<!-- 编译JAVA文件 -->
<!-- =================================================================== -->
<target name="compile" description="编译Java文件" depends="init,info">
<available classname="com.paic.pafa.app.lwc.core.context.support.PafaCoreContexton" classpathref="master-classpath" property="lib.present" />
<fail unless="lib.present" message="第三方包还没有下载,请配置ivy.xml文件,并执行get-lib任务,您使用的JBOSS平台,请指定下载PAFA3.2版本,以前版本不支持JBoss" />
<javac destdir="${build.classes.dir}" encoding="UTF-8" target="1.6" debug="true" deprecation="false" optimize="false" failοnerrοr="true">
<src path="${src.java.dir}" />
<classpath refid="master-classpath" />
</javac>
<!--编译测试代码 -->
<javac destdir="${build.test.dir}" debug="on" encoding="UTF-8" deprecation="false" failοnerrοr="true">
<src path="${src.test.dir}" />
<classpath refid="master-classpath" />
<classpath location="${build.classes.dir}" />
</javac>
<!-- 测试中可能会用到的peroperties文件拷贝到测试类文件 -->
<copy todir="${build.test.dir}">
<fileset dir="${src.test.dir}" includes="**/*.properties" />
<fileset dir="${src.test.dir}" includes="*.xml" />
<fileset dir="${src.test.dir}" includes="config/**/**" />
<fileset dir="${src.test.dir}" includes="data/**/**" />
</copy>
<copy todir="${build.classes.dir}">
<!-- 打印模板文件 -->
<!--
<fileset dir="${src.config.dir}/templet" />
-->
<fileset dir="${src.java.dir}" includes="**/templet/**" />
</copy>
</target>

<!-- =================================================================== -->
<!-- 发布供其他项目使用的内部第三方包 -->
<!-- =================================================================== -->
<target name="jar" description="构建给其他项目使用的jar文件,用户根据需要修改该任务" >
<echo level="info" message="${project.name}没有需要发布给其他项目使用的公共jar文件" />
</target>

<!-- =================================================================== -->
<!-- 创建展开目录形式的EAR应用 -->
<!-- =================================================================== -->
<target name="info" description="显示项目构建信息">
<echo level="info">
+-------------------------您正在构建的项目信息-----------------------------+
+--------------------------------------------------------------------------+
项目名称|${project.name}
项目描述!${project.discription}
项目版本|${project.revision}
项目联系人|${project.contact}
+--------------------------------------------------------------------------+
</echo>
</target>

<!-- =================================================================== -->
<!-- 初始化,创建目录 -->
<!-- =================================================================== -->
<target name="init" description="创建目录" depends="info">
<mkdir dir="${build.classes.dir}" />
<mkdir dir="${build.test.dir}" />
<mkdir dir="${rel.dir}" />
<mkdir dir="${publish.apps.dir}" />
<mkdir dir="${publish.libs.dir}" />
<mkdir dir="${build.dist}"/>
</target>

<!-- =================================================================== -->
<!-- 清空所有输出文件包括build和部署目录 -->
<!-- =================================================================== -->
<target name="clean" description="清空所有输出文件包括build和部署目录">
<property name="build.classes.dir" value="${build.dir}/classes" />
<property name="build.test.dir" value="${build.dir}/test" />
<delete dir="${build.dir}" />
<delete dir="${build.classes.dir}" />
<delete dir="${build.test.dir}" />
<delete dir="${deploy.exploded.dir}" />
<delete dir="${rel.dir}" />
<delete dir="${build.dist}"/>
<delete file="${deploy.ear.dir}/${project.name}.ear" />
</target>

<!-- =================================================================== -->
<!-- 清空第三方包本地缓存 -->
<!-- =================================================================== -->
<target name="clean-lib-cache" description="清空第三方包本地缓存">
<delete dir="${build.lib.dir}/" />
</target>

<!-- =================================================================== -->
<!-- 设置第三方包下载配置文件 -->
<!-- =================================================================== -->
<target name="configure-lib" description="设置第三方包配置文件">
<ivy:configure url="${ivy.config.url}" />
</target>

<target name="ex-lib" description="获取外部包">
<copy todir="${build.lib.dir}">
<fileset dir="${exlib.dir}" />
</copy>
</target>

<target name="add-ext-lib" description="将extlib下的jar包拷贝到lib目录下(临时解决方案,之后需要删掉)">
<property name="ext.lib" value="${src.dir}/config/exlib" />

<copy todir="${build.lib.dir}">
<fileset dir="${ext.lib}">
</fileset>
</copy>
</target>

<!-- =================================================================== -->
<!-- 下载或从本地缓存获取第三方包 -->
<!-- =================================================================== -->
<target name="get-lib" depends="init,clean-lib-cache,configure-lib,add-ext-lib" description="下载或从本地缓存获取第三方包">
<mkdir dir="${build.lib.dir}" />
<ivy:retrieve pattern="${build.lib.dir}/[artifact].[ext]" />
</target>

<!-- =================================================================== -->
<!-- 创建用于发布的EAR包文件 张云鹏 2014-03-13 app ear包和web ear包分开部署-->
<!-- =================================================================== -->
<target name="ear" depends="clean,exploded-ear,icore.acss.voucher_dto_sources_jar,icore.acss.voucher_dto_jar" description="创建用于发布的EAR包文件">
<!-- 创建app ear包 begin -->
<jar jarfile="${deploy.ear.dir}/${project.name}-ejb.jar" basedir="${app.ear}/${project.name}-ejb.jar">
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<jar jarfile="${deploy.ear.dir}/${project.name}-app-gateway.war" basedir="${app.ear}/${project.name}-app-gateway.war">
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<jar jarfile="${deploy.ear.dir}/${project.name}-app.ear">
<fileset dir="${app.ear}">
<!-- properties文件不能打在ear包内 -->
<exclude name="APP-INF/classes/context-${project.name}.properties" />
<exclude name="APP-INF/classes/context-${project.name}-test.properties" />
<exclude name="APP-INF/classes/app-gateway.properties" />
<exclude name="APP-INF/classes/context-quartzmanage.properties" />
<exclude name="APP-INF/classes/log4j.properties" />
<include name="APP-INF/**" />
<include name="META-INF/**" />
</fileset>
<fileset dir="${deploy.ear.dir}">
<include name="${project.name}-ejb.jar" />
</fileset>
<fileset dir="${deploy.ear.dir}">
<include name="${project.name}-app-gateway.war" />
</fileset>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<!-- 创建app ear包 end -->
<!-- 创建web ear包 begin -->
<jar jarfile="${deploy.ear.dir}/${project.name}.war" basedir="${web.ear}/${project.name}.war">
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<jar jarfile="${deploy.ear.dir}/${project.name}-web.ear">
<fileset dir="${web.ear}">
<!-- properties文件不能打在ear包内 -->
<exclude name="APP-INF/classes/context-${project.name}.properties" />
<exclude name="APP-INF/classes/context-${project.name}-test.properties" />
<exclude name="APP-INF/classes/app-gateway.properties" />
<exclude name="APP-INF/classes/context-quartzmanage.properties" />
<exclude name="APP-INF/classes/log4j.properties" />
<include name="APP-INF/**" />
<include name="META-INF/**" />
</fileset>
<fileset dir="${deploy.ear.dir}">
<include name="${project.name}.war" />
</fileset>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<!-- 创建web ear包 end -->
<!-- 提取properties文件,它们需要单独配置到CLASSPATH -->
<copy file="${src.config.dir}/core/context-${project.name}.properties" todir="${deploy.ear.dir}" />
<copy file="${src.config.dir}/core/log4j.properties" todir="${deploy.ear.dir}" />
<copy file="${src.config.dir}/core/devlog.properties" todir="${deploy.ear.dir}" />
<copy file="${src.config.dir}/core/app-gateway.properties" todir="${deploy.ear.dir}" />
<copy file="${src.config.dir}/core/context-quartzmanage.properties" todir="${deploy.ear.dir}" />

<echo message="删除临时生成的ejb文件" />
<delete>
<fileset dir="${deploy.ear.dir}">
<include name="${project.name}-ejb.jar" />
</fileset>
</delete>
<echo message="删除临时生成的war文件" />
<delete>
<fileset dir="${deploy.ear.dir}">
<include name="${project.name}.war" />
</fileset>
</delete>
<echo level="info" message="删除临时生成的目录" />
<delete dir="${deploy.exploded.dir}" />
<copy todir="${publish.apps.dir}">
<fileset dir="${deploy.ear.dir}">
<include name="*.ear" />
</fileset>
</copy>
<copy todir="${rel.dir}">
<fileset dir="${deploy.ear.dir}">
<include name="*.ear" />
</fileset>
</copy>
<copy todir="${rel.dir}">
<fileset dir="${publish.libs.dir}">
<include name="*.jar" />
</fileset>
</copy>
<mkdir dir="${pubjar.dir}"/>

<echo level="info" message="复制jar包开始" />
<copy todir="${pubjar.dir}">
<!--拷贝icore.acss.voucher_dto.jar和icore.acss.voucher_dto_sources.jar到pubjar -->
<fileset dir="${publish.libs.dir}" >
<include name= "icore.acss.voucher_dto.jar"/>
</fileset>
<fileset dir="${publish.libs.dir}" >
<include name= "icore.acss.voucher_dto_sources.jar"/>
</fileset>
</copy>
<echo level="info" message="复制jar包结束" />
</target>

<!-- =================================================================== -->
<!-- 创建展开目录形式的EAR应用 modify ex-zhuyu001-->
<!-- =================================================================== -->
<target name="exploded-ear" depends="compile" description="创建展开目录形式的EAR应用(开发模式)">
<!-- 创建app ear包
-->
<mkdir dir="${app.ear}/APP-INF/classes" />
<mkdir dir="${app.ear}/APP-INF/lib" />
<mkdir dir="${app.ear}/META-INF" />
<mkdir dir="${app.ear}/${project.name}-ejb.jar/META-INF" />
<mkdir dir="${app.ear}/${project.name}-app-gateway.war/WEB-INF" />

<!-- 创建 app ear META-INF
-->
<copyfile src="${src.config.dir}/app/application-app.xml" dest="${app.ear}/META-INF/application.xml" />
<!-- 创建APP-INF的内容,包含web层和biz层共用的class, jar, xml
-->
<copy todir="${app.ear}/APP-INF/classes">
<fileset dir="${build.classes.dir}/">
<exclude name="**/web/**" />
<exclude name="**/biz/**" />
<exclude name="**/integration/**" />
<exclude name="**/app/gateway/**" />
</fileset>
<fileset dir="${src.config.dir}/core">
<exclude name="devlog.properties" />
</fileset>
</copy>
<copy todir="${app.ear}/APP-INF/classes/sql">
<!-- sql 文件 -->
<fileset dir="${src.config.dir}/biz/sql" />
</copy>
<copy todir="${app.ear}/APP-INF/lib" preservelastmodified="true">
<fileset dir="${build.lib.dir}">
<!-- 单元测试用的包不必打在ear里面
-->
<exclude name="acss_cache_job.jar" />
<exclude name="pafatest.jar" />
<exclude name="easymock.jar" />
</fileset>
</copy>
<!-- 创建EJB的内容
-->
<copy todir="${app.ear}/${project.name}-ejb.jar/META-INF">
<fileset dir="${src.config.dir}/ejb" />
</copy>
<native2ascii src="${src.config.dir}/biz" dest="${app.ear}/${project.name}-ejb.jar" includes="*.properties" />
<copy todir="${app.ear}/${project.name}-ejb.jar">
<fileset dir="${build.classes.dir}/">
<include name="**/biz/**" />
<include name="**/integration/**" />
<include name="**/app/gateway/**" />
</fileset>
<fileset dir="${src.config.dir}/biz">
<exclude name="*.properties" />
<exclude name="sql/*.xml" />
</fileset>
</copy>

<unzip dest="${app.ear}/${project.name}-app-gateway.war/WEB-INF" src="${build.lib.dir}/iCore-fa-app-gateway.jar" />

<!-- 创建web ear包
-->
<mkdir dir="${web.ear}/APP-INF/classes" />
<mkdir dir="${web.ear}/APP-INF/lib" />
<mkdir dir="${web.ear}/META-INF" />
<mkdir dir="${web.ear}/${project.name}.war/WEB-INF/lib" />
<mkdir dir="${web.ear}/${project.name}.war/WEB-INF/classes" />
<!-- 创建 web ear META-INF
-->
<copyfile src="${src.config.dir}/app/application-web.xml" dest="${web.ear}/META-INF/application.xml" />
<!-- 创建APP-INF的内容,包含web层和biz层共用的class, jar, xml
-->
<copy todir="${web.ear}/APP-INF/classes">
<fileset dir="${build.classes.dir}/">
<exclude name="**/web/**" />
<exclude name="**/biz/**" />
<exclude name="**/integration/**" />
<exclude name="**/app/gateway/**" />
</fileset>
<fileset dir="${src.config.dir}/core">
<exclude name="devlog.properties" />
</fileset>
</copy>
<copy todir="${web.ear}/APP-INF/lib" preservelastmodified="true">
<fileset dir="${build.lib.dir}">
<!-- 单元测试用的包不必打在ear里面
-->
<exclude name="acss_cache_job.jar" />
<exclude name="pafatest.jar" />
<exclude name="easymock.jar" />
</fileset>
</copy>
<!-- 创建WAR的内容
-->
<copy todir="${web.ear}/${project.name}.war/WEB-INF">
<fileset dir="${src.config.dir}/web">
<exclude name="*.properties" />
</fileset>
</copy>
<!-- MessageBundle编码转换
-->
<native2ascii src="${src.config.dir}/web" dest="${web.ear}/${project.name}.war/WEB-INF/classes" includes="*.properties" />
<copy todir="${web.ear}/${project.name}.war/WEB-INF/lib" preservelastmodified="true">
<fileset dir="${build.lib.dir}">
<include name="struts.jar" />
</fileset>
<fileset dir="${build.lib.dir}">
<include name="jstl.jar" />
</fileset>
<fileset dir="${build.lib.dir}">
<include name="standard.jar" />
</fileset>
</copy>
<copy todir="${web.ear}/${project.name}.war/WEB-INF/classes">
<fileset dir="${build.classes.dir}/">
<include name="**/web/**" />
</fileset>
</copy>
<copy todir="${web.ear}/${project.name}.war">
<fileset dir="${src.jsp.dir}/" />
</copy>
</target>


<!-- =================================================================== -->
<!-- Weblogic部署,只适用于本地展开目录编译快速部署,仅供开发人员使用 -->
<!-- =================================================================== -->
<target name="deploy" depends="exploded-ear" description="创建并部署目录结构的EAR应用">
<wldeploy user="${weblogic.user}" password="${weblogic.password}" action="deploy" adminurl="${weblogic.adminurl}" source="${deploy.exploded.dir}" name="${weblogic.appname}" />
</target>

<target name="redeploy" depends="exploded-ear" description="重新生成并部署应用">
<wldeploy user="${weblogic.user}" password="${weblogic.password}" action="redeploy" adminurl="${weblogic.adminurl}" name="${weblogic.appname}" />
</target>

<target name="undeploy" description="卸载整个应用">
<wldeploy user="${weblogic.user}" password="${weblogic.password}" action="undeploy" name="${weblogic.appname}" />
</target>


<target name="test_init">
<mkdir dir="${build.doc.junit.dir}" />
<mkdir dir="${build.coverage.dir}" />
<mkdir dir="${build.doc.coverage.dir}" />
<mkdir dir="${build.doc.junit.dir}" />
</target>

<!-- 将应用的class文件做为测试覆盖做预处理 -->
<target name="emma_precess" description="将应用的class文件做为测试覆盖做预处理" depends="compile,test_init">
<!-- 定义编译后应用类的path变量 -->
<path id="build.classes.path">
<pathelement location="${build.classes.dir}" />
</path>
<emma enabled="true">
<instr instrpathref="build.classes.path" destdir="${build.coverage.dir}" metadatafile="${build.coverage.dir}/metadata.emma" merge="true">
<filter excludes="*Test*" />
</instr>
</emma>
</target>

<!--junit 测试一定要设置fort=true, 因为emma只有在jvm退出时,才会写输出覆盖文件 -->
<target name="unitTest" description="单元测试,并生成报表" depends="emma_precess">
<junit printsummary="true" fork="true">
<classpath>
<!--为junit指定测试类的路径,emma处理后的类路径要放在未处理的类路径前 -->
<pathelement location="${build.test.dir}" />
<pathelement location="${build.coverage.dir}" />
<pathelement location="${build.classes.dir}" />
<fileset file="${env.JAVA_HOME}/lib/tools.jar" />
<fileset dir="${build.lib.dir}" />
<fileset file="${weblogic.jar}" />
<fileset file="${env.ANT_HOME}/lib/emma.jar" />
<fileset file="${env.ANT_HOME}/lib/emma_ant.jar" />
</classpath>
<!-- 为junit的jvm指定参数,将覆盖结果文件放到指定目录 -->
<jvmarg value="-Demma.coverage.out.file=${build.coverage.dir}/coverage.emma" />
<jvmarg value="-Demma.coverage.out.merge=true" />
<jvmarg value="-Dpafa.log.home=${pafaloghome}" />

<!--执行单元测试 -->
<formatter type="xml" usefile="true" />
<batchtest todir="${build.doc.junit.dir}">
<fileset dir="${src.test.dir}">
<include name="**/AllTests.java" />
</fileset>
</batchtest>
</junit>

<!-- 产生单元测试报表文档 -->
<junitreport todir="${build.doc.junit.dir}">
<fileset dir="${build.doc.junit.dir}">
<include name="TEST-*.xml" />
</fileset>
<report format="frames" todir="${build.doc.junit.dir}" />
</junitreport>

<!-- 产生单元测试代码覆盖报表文档 -->
<emma enabled="true">
<report sourcepath="${src.dir}/java" sort="+block,+name,+method,+class" metrics="method:70,block:80,line:80,class:100">
<fileset dir="${build.coverage.dir}">
<include name="*.emma" />
</fileset>
<html outfile="${build.doc.coverage.dir}/coverage.html" depth="method" columns="name,class,method,block,line" />
<xml outfile="${build.doc.coverage.dir}/coverage.xml" depth="method" />
</report>
</emma>
</target>

<!-- =================================================================== -->
<!-- 帮助信息 -->
<!-- =================================================================== -->
<target name="usage">
<echo message="Pafa Application Build File" />
<echo message="用法:ant -[target]" />
<echo message="------------------------------------------------------" />
<echo message="[target]" />
<echo message="clean --> 清空所有输出文件包括build和部署目录" />
<echo message="compile --> 编译Java文件" />
<echo message="ear --> 创建用于发布的EAR包文件(配置文件已提出)" />
<echo message="exploded-ear --> 创建展开目录形式的EAR应用(开发模式)" />
<echo message="------------------------------------------------------" />
</target>

<!-- 用于把前端jar包展开到部署目录中 ex-zhuyu001 -->
<target name="expand-pawa" description="解压前端框架jar包">
<echo message="解压前端框架jar包 开始" />
<unzip dest="${src.jsp.dir}" src="${build.lib.dir}/iCore-pawa.jar">
</unzip>
<!-- delete META-INF -->
<delete dir="${src.jsp.dir}/META-INF" />
<echo message="解压前端框架jar包 完成" />
</target>

<!-- 生成 acss.cache.framework.jar 包-->
<target name="acss_cache_framework.jar" description="生成缓存框架的JAR包(acss_cache_framework.jar)">
<mkdir dir="${build.temp.dir}"/>
<copy todir="${build.temp.dir}">
<fileset dir="${build.classes.dir}">
<include name="com/paic/icore/acss/cache/framework/**/*.class" />
<include name="com/paic/icore/acss/util/constants/ConstantsForAcssBase.class" />
<include name="com/paic/icore/acss/util/LogUtils.class" />
<include name="com/paic/icore/acss/util/CommonFunctions.class" />
<include name="com/paic/icore/acss/util/StringUtils.class" />
<include name="com/paic/icore/acss/util/DateUtils.class" />
<include name="com/paic/icore/acss/util/enumeration/DateStyle.class"/>
</fileset>
</copy>
<jar destfile="${acss.cache.framework.jar.dir}">
<fileset dir="${build.temp.dir}" />
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<delete dir="${build.temp.dir}" />
</target>

<!-- 生成 acss.cache.job.jar 包 -->
<target name="acss_cache_job.jar" description="生成缓存JOB包(acss_cache_job.jar)" >
<mkdir dir="${build.temp.dir}"/>
<copy todir="${build.temp.dir}">
<fileset dir="${build.classes.dir}">
<include name="com/paic/icore/acss/cache/remote/**/*.class"/>
<include name="com/paic/icore/acss/cache/switches/**/*.class"/>
<include name="com/paic/icore/acss/cache/dto/**/*.class"/>
<include name="com/paic/icore/acss/cache/app/**/*.class"/>
<include name="com/paic/icore/acss/util/constants/ConstantsForDepartment.class"/>
<include name="com/paic/icore/acss/util/constants/ConstantsForPlan.class"/>
<include name="com/paic/icore/acss/util/constants/ConstantsForPlan.class"/>
<include name="com/paic/icore/acss/util/constants/ConstantsForDocumentType.class"/>
<include name="com/paic/icore/acss/util/constants/ConstantsForPersonnel.class"/>
</fileset>
<fileset dir="${src.config.cache.dir}/core" >
<include name="cache-config.xml" />
<include name="log-config.xml" />
<include name="tangosol-coherence-override.xml" />
</fileset>
<fileset dir="${src.config.cache.dir}/core">
<include name="common-context.xml"/>
<include name="core-context.xml"/>
</fileset>
<fileset dir="${src.config.cache.dir}/biz">
<include name="**/*.xml"/>
</fileset>
</copy>
<jar destfile="${acss.cache.job.jar.dir}">
<fileset dir="${build.temp.dir}" />
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<delete dir="${build.temp.dir}" />
</target>

<target name="acss_cache_client.jar" description="生成缓存客户端JAR包(acss_cache_client.jar)">
<mkdir dir="${build.temp.dir}"/>
<copy todir="${build.temp.dir}">
<fileset dir="${build.classes.dir}">
<include name="com/paic/icore/acss/cache/dto/**/*.class"/>
<include name="com/paic/icore/acss/cache/framework/common/CacheFactory.class" />
<include name="com/paic/icore/acss/cache/framework/filter/EntryFilter.class" />
<include name="com/paic/icore/acss/cache/framework/service/CacheQuery.class" />
<include name="com/paic/icore/acss/cache/remote/utils/DepartmentUtils.class" />
<include name="com/paic/icore/acss/cache/remote/visit/*.class"/>
<include name="com/paic/icore/acss/cache/remote/compare/*.class"/>
<include name="com/paic/icore/acss/util/LogUtils.class" />
<include name="com/paic/icore/acss/util/CommonFunctions.class" />
<include name="com/paic/icore/acss/util/StringUtils.class" />
<include name="com/paic/icore/acss/util/DateUtils.class" />
<include name="com/paic/icore/acss/util/enumeration/DateStyle.class"/>
</fileset>
</copy>
<jar destfile="${acss.cache.client.jar.dir}">
<fileset dir="${build.temp.dir}" />
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<delete dir="${build.temp.dir}" />
</target>

<!-- 生成缓存JOB运行包 job.ear -->
<target name="exploded-job.ear" depends="compile,acss_cache_framework.jar,acss_cache_job.jar" description="生成缓存JOB运行包(job.ear)开发环境使用" >
<!-- 创建app ear包
-->
<mkdir dir="${job.ear}/APP-INF/classes" />
<mkdir dir="${job.ear}/APP-INF/lib" />
<mkdir dir="${job.ear}/META-INF" />
<mkdir dir="${job.ear}/${project.name}-ejb.jar/META-INF" />

<copyfile src="${src.config.cache.dir}/app/application.xml" dest="${job.ear}/META-INF/application.xml" />

<copy todir="${job.ear}/APP-INF/classes">
<fileset dir="${src.config.cache.dir}/core">
<include name="common-context.xml"/>
<include name="core-context.xml"/>
</fileset>
<fileset dir="${src.config.cache.dir}/biz">
<include name="**/*.xml"/>
</fileset>
</copy>
<copy todir="${job.ear}/APP-INF/lib">
<fileset dir="${build.lib.dir}">
<include name="*.jar"/>
<exclude name="pafatest.jar" />
<exclude name="easymock.jar" />
</fileset>
<fileset file="${acss.cache.framework.jar.dir}" />
</copy>
<copy todir="${job.ear}/${project.name}-ejb.jar/META-INF" flatten="true">
<fileset dir="${src.config.cache.dir}/ejb" >
<include name="*.xml"/>
</fileset>
</copy>
</target>

<target name="job.ear" depends="exploded-job.ear" description="上生产缓存job ear包">
<jar destfile="${deploy.ear.dir}/${project.name}-ejb.jar">
<fileset dir="${job.ear}/${project.name}-ejb.jar">
<include name="**/**"/>
</fileset>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
<delete dir="${job.ear}/${project.name}-ejb.jar" />
<delete file="${job.ear}/META-INF/application.xml" />
<copy file="${deploy.ear.dir}/${project.name}-ejb.jar" todir="${job.ear}" />
<ear destfile="${deploy.ear.dir}/${cache.job.ear}" appxml="${src.config.cache.dir}/app/application.xml" >
<fileset dir="${job.ear}" />
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</ear>
<copy file="${deploy.ear.dir}/${cache.job.ear}" todir="${rel.dir}" flatten="true" preservelastmodified="true" />
<delete dir="${job.ear}" />
<delete file="${deploy.ear.dir}/${project.name}-ejb.jar" />
</target>


<!-- 生成缓存JOB运行包 icore_acss_job.tar.gz -->
<target name="icore_acss_job.tar.gz" depends="acss_cache_framework.jar,acss_cache_job.jar" description="生成缓存JOB运行包(icore_acss_job.tar.gz)" >
<mkdir dir="${cache.job.bin}" />
<mkdir dir="${cache.job.config}" />
<mkdir dir="${cache.job.lib}" />
<copy todir="${cache.job.bin}">
<fileset dir="${src.script.dir}/job">
<include name="*.sh"/>
</fileset>
</copy>
<copy todir="${cache.job.config}" flatten="true" >
<fileset dir="${src.config.cache.dir}/core">
<include name="cluster-config.xml" />
<include name="context-cachemanage.properties" />
<include name="job/log4j.properties"/>
</fileset>
</copy>
<copy todir="${cache.job.lib}">
<fileset dir="${build.lib.dir}">
<include name="*.jar"/>
<exclude name="castor-xml.jar"/>
<exclude name="castor.jar"/>
<exclude name="jaxp.jar"/>
</fileset>
<fileset file="${acss.cache.framework.jar.dir}" />
</copy>
<tar destfile="${cache.job.tar.gz.dir}" basedir="${cache.job.dir}" compression="gzip">
</tar>
<delete file="${acss.cache.framework.jar.dir}" />
</target>

<!-- 生成缓存store运行包icore_acss_store.tar.gz -->
<target name="icore_acss_store.tar.gz" description="生成缓存store运行包(icore_acss_store.tar.gz)" >
<mkdir dir="${cache.store.bin}" />
<mkdir dir="${cache.store.config}" />
<mkdir dir="${cache.store.lib}" />
<copy todir="${cache.store.bin}">
<fileset dir="${src.script.dir}/store" >
<include name="*.sh" />
</fileset>
</copy>
<copy todir="${cache.store.config}" flatten="true" >
<fileset dir="${src.config.cache.dir}/core">
<include name="cluster-config.xml" />
<include name="cache-config.xml" />
<include name="log-config.xml" />
<include name="tangosol-coherence-override.xml" />
<include name="store/log4j.properties"/>
</fileset>
</copy>
<copy todir="${cache.store.lib}">
<fileset dir="${build.lib.dir}">
<include name="log4j*.jar"/>
<include name="commons-logging*.jar"/>
<include name="coherence*.jar"/>
</fileset>
</copy>
<tar destfile="${cache.store.tar.gz.dir}" basedir="${cache.store.dir}" compression="gzip">
</tar>
</target>

<!-- =================================================================== -->
<!-- 主构建任务, 省却情况调用ear任务,开发人员可以在depends后添加依赖任务
这个任务主要用来实现编译,打包功能, 执行完后,可以生成应用的EAR,以及要发布
给其他项目使用的JAR-->
<!-- =================================================================== -->
<target name="main" depends="clean,get-lib,jar,ear,icore_acss_store.tar.gz,icore_acss_job.tar.gz,job.ear">
<echo message="${project.name}项目构建完成" />
</target>
<target name="icore.acss.voucher_dto_jar" depends="compile">
<jar destfile="${publish.libs.dir}/icore.acss.voucher_dto.jar" update="true">
<fileset dir="${build.classes.dir}/">
<include name="com/paic/icore/acss/base/dto/*.class"/>
</fileset>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
</target>
<target name="icore.acss.voucher_dto_sources_jar">
<jar destfile="${publish.libs.dir}/icore.acss.voucher_dto_sources.jar" update="true">
<fileset dir="${src.dir}/java/">
<include name="com/paic/icore/acss/base/dto/*.java"/>
</fileset>
<manifest>
<attribute name="Built-By" value="${user.name}" />
<attribute name="Specification-Version" value="${project.revision}" />
</manifest>
</jar>
</target>
</project>




二、build.properties





#############################################
# 项目信息
#############################################
build.version=1.2.0
# 名称
project.name=iCore_acss
#项目版本
project.revision=1.1.0
#子系统名称
subject.name=iCore_acss
#项目描述
project.discription=新一代承保公共服务系统
#项目联系人


#源代码存放目录
src.dir=${project.root}/src

#测试代码存放目录
src.test.dir=${src.dir}/test

#项目文档目录, 包括javadoc均在此目录下
doc.dir=${project.root}/doc

#此目录存放编译过程中产生的classes文件, 以及其他编译输出
build.dir=${project.root}/build

#此目录存放编译过程中产生的classes文件
build.classes.dir=${build.dir}/classes

#此目录存放需要发布的文件, 包括正式版本和beta测试版本
publish.apps.dir=${project.root}/app/${subject.name}/apps
publish.libs.dir=${project.root}/app/${subject.name}/lib
rel.dir=${project.root}/rel/

#第三方包和公共JAR包存放目录(weblogic.jar也会存放在此处)
lib.dir=${project.root}/lib

#缓存框架
acss.cache.framework.jar=acss_cache_framework.jar

#缓存job.jar
acss.cache.job.jar=acss_cache_job.jar

acss.cache.client.jar=acss_cache_client.jar

#缓存job运行包
cache.job.ear=job.ear
cache.job.tar.gz=icore_acss_job.tar.gz

#缓存存储节点运行包
cache.store.tar.gz=icore_acss_store.tar.gz


#############################################
# 部署目录
#############################################

# 在开发当中,可以把{deploy.exploded.dir}直接发布
deploy.exploded.dir=./dist/weblogic/${project.name}


ivy.config.url=http://ct-int.paic.com.cn/libs/ivyconf.xml
# EAR文件存放目录
deploy.ear.dir=./dist/weblogic


# WebLogic Install home
lib.wls.dir=${env.WL_HOME}/server/lib
#lib.wls.dir=/ci-pkg/apache-ant-1.7.0-jdk1.6-weblogic10/lib
#lib.wls.dir=C:/Oracle/wlserver_10.3/server/lib


#############################################
# Libraries 路径
#############################################
# Pafa相关的jar
pafa.lib=lib

# 项目所需的jar
project.lib=lib
#weblogic.jar的路径
weblogic.jar=${lib.wls.dir}/weblogic.jar
javaee.jar=javaee.jar=${lib.dir}/javaee.jar




#各种报表路径
doc.dir=${project.root}/doc

#集成测试webtest相关参数设置
webtest.dir=${project.root}/lib/webtest


#############################################
# 集成测试远程部署选项
#############################################

#应用部署的测试服务器环境IP,端口参数
#############################################
# weblogic.host参数还做为远程部署集成测试的开关
#一旦这个参数设定了,构建环境将会自动将生成的
#应用部署到远程服务器上,并开始集成启动集成测试
#脚本。weblogic.host参数设定时,必须保证相关
#参数,比如SSH,脚本名等参数正确设置。
#开发人员在确定不需要做集成测试时,可以把这参数
#注解掉
#############################################
#weblogic.host=localhost

#weblogic.port=7001

#应用部署的服务器的SSH用户名密码,测试服务器FTP的目录名
#SSH.user=wls81
#SSH.password=Paic1234
#SSH.remote.deploy.dir=apptestdemo

#在远程测试环境中执行部署,重新部署应用的脚本完整名
#deployshell=~/apptestdemo/deploytestdemo.sh

weblogic.adminurl=t3://localhost:7001
weblogic.user=weblogic
weblogic.password=weblogic
weblogic.appname=iCore_acss
目前包含jar列表如下: ant-1.9.3.jar ant-launcher-1.9.3.jar asm-all-5.0.3.jar bcpg-jdk15on-1.51.jar bcprov-jdk15on-1.51.jar bndlib-2.1.0.jar bsh-2.0b4.jar commons-beanutils-1.7.0.jar commons-cli-1.2.jar commons-codec-1.10.jar commons-codec-1.11-javadoc.jar commons-codec-1.11-sources.jar commons-codec-1.11-test-sources.jar commons-codec-1.11-tests.jar commons-codec-1.11.jar commons-codec-1.4.jar commons-codec-1.6.jar commons-collections-3.2.1.jar commons-collections-3.2.jar commons-httpclient-3.0.1.jar commons-io-1.4.jar commons-io-2.2.jar commons-jexl-2.1.1.jar commons-lang-2.4.jar commons-lang-2.6.jar commons-logging-1.1.1.jar commons-logging-1.1.jar commons-logging-1.2.jar core-3.1.1.jar dom4j-1.6.1.jar ezmorph-1.0.3.jar ezmorph-1.0.4.jar fastjson-1.1.40.jar fluent-hc-4.5.6.jar geronimo-annotation_1.0_spec-1.0.jar gradle-announce-2.3-rc-2.jar gradle-antlr-2.3-rc-2.jar gradle-base-services-2.3-rc-2.jar gradle-base-services-groovy-2.3-rc-2.jar gradle-build-comparison-2.3-rc-2.jar gradle-build-init-2.3-rc-2.jar gradle-cli-2.3-rc-2.jar gradle-code-quality-2.3-rc-2.jar gradle-core-2.3-rc-2.jar gradle-cunit-2.3-rc-2.jar gradle-dependency-management-2.3-rc-2.jar gradle-diagnostics-2.3-rc-2.jar gradle-docs-2.3-rc-2.jar gradle-ear-2.3-rc-2.jar gradle-ide-2.3-rc-2.jar gradle-ide-native-2.3-rc-2.jar gradle-ivy-2.3-rc-2.jar gradle-jacoco-2.3-rc-2.jar gradle-javascript-2.3-rc-2.jar gradle-jetty-2.3-rc-2.jar gradle-language-groovy-2.3-rc-2.jar gradle-language-java-2.3-rc-2.jar gradle-language-jvm-2.3-rc-2.jar gradle-language-native-2.3-rc-2.jar gradle-language-scala-2.3-rc-2.jar gradle-launcher-2.3-rc-2.jar gradle-maven-2.3-rc-2.jar gradle-messaging-2.3-rc-2.jar gradle-model-core-2.3-rc-2.jar gradle-model-groovy-2.3-rc-2.jar gra
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值