使用Ant
<project name="PROJECT_NAME" basedir="../.." default="LocalDeployPROJECT_NAME"> <property file="build/properties/common-devel.properties" /> <property name="local-PROJECT_NAME-properties" value="build/properties/local-PROJECT_NAME.properties" /> <property name="stg-PROJECT_NAME-properties" value="build/properties/stg-PROJECT_NAME.properties" /> <path id="java.classpath"> <fileset dir="WebContent/WEB-INF/lib" includes="**/*.jar" /> <fileset dir="lib" includes="**/*.jar" /> <fileset dir="dist" includes="**/WEB-INF/lib/*.jar" /> </path> <target name="buildManifest" if="exist.manifest" description="Use a common manifest for distribution"> <tstamp> <format property="build.day" pattern="yyyy-MM-dd HH:mm:ss" /> </tstamp> <manifest file="${basedir}/output/MANIFEST.MF"> <attribute name="Built-By" value="${user.name}" /> <attribute name="Built-Date" value="${build.day}" /> </manifest> </target> <target name="jarPROJECT_NAMERelated"> <delete dir="${basedir}/output" /> <mkdir dir="${basedir}/output" /> <javac destdir="${basedir}/output" debug="true" debuglevel="lines,vars,source" target="1.5" failonerror="true" srcdir="${src.main.dir}/java"> <include name="com/**/PROJECT_NAME/**/*.properties" /> <include name="com/**/PROJECT_NAME/**/*.xml" /> <include name="com/**/PROJECT_NAME/**/*.java" /> <exclude name="com/**/PROJECT_NAME/**/test/**/*.*"/> <classpath refid="java.classpath" /> </javac> <copy todir="${basedir}/output"> <fileset dir="${src.main.dir}/java"> <include name="**/*.xml" /> <include name="**/*.properties" /> </fileset> <fileset dir="${src.main.dir}/resources/"> <include name="**" /> </fileset> </copy> <condition property="exist.manifest"> <not> <available file="${basedir}/output/MANIFEST.MF" /> </not> </condition> <antcall target="buildManifest" /> <jar destfile="${basedir}/output/${project.PROJECT_NAME}-${project.version}.jar" basedir="${basedir}/output" manifest="${basedir}/output/MANIFEST.MF"> <include name="com/**/PROJECT_NAME/**/*.class" /> <include name="com/**/PROJECT_NAME/**/*.xml" /> <include name="com/**/PROJECT_NAME/**/*.properties" /> </jar> </target> <target name="copyPROJECT_NAMERelated" depends="jarPROJECT_NAMERelated" if="param.replacefilterfile"> <delete dir="${basedir}/${tomcat.dir.PROJECT_NAME}" /> <!-- Copy all required file to the tomcat/PROJECT_NAME --> <copy overwrite="true" preservelastmodified="true" todir="${tomcat.dir.PROJECT_NAME}/"> <fileset dir="WebContent" excludes="**/classes/**,**/WEB-INF/lib/**/*.jar" /> </copy> <copy overwrite="true" preservelastmodified="true" todir="${tomcat.dir.PROJECT_NAME}/WEB-INF/classes"> <fileset dir="${basedir}/output"> <exclude name="**/com/**" /> <include name="**/*.xml" /> <include name="**/*.properties" /> </fileset> </copy> <replace dir="${tomcat.dir.PROJECT_NAME}/WEB-INF" replacefilterfile="${param.replacefilterfile}"> <include name="**/*.properties" /> </replace> <replace dir="${tomcat.dir.PROJECT_NAME}" replacefilterfile="${param.replacefilterfile}"> <include name="**/*.html" /> <include name="**/*.jsp" /> </replace> <!-- lib --> <copy overwrite="true" preservelastmodified="true" todir="${tomcat.dir.PROJECT_NAME}/WEB-INF/lib"> <fileset dir="${basedir}/output"> <include name="${project.PROJECT_NAME}-${project.version}.jar" /> </fileset> </copy> </target> <target name="backupAndDeleteFile" > <echo message="backup and delete the files" /> <tstamp> <format property="currentDate" pattern="yyyyMMdd-HHmmss" timezone="GMT+8"/> </tstamp> <zip destfile="${param.install.dir}/${param.backupFile}-${currentDate}.zip" basedir="${param.install.dir}" includes="${param.includes}" /> <delete includeEmptyDirs="true"> <fileset dir="${param.install.dir}" includes="${param.includes}" excludes="**/lib/*.jar"/> </delete> </target> <target name="LocalDeployPROJECT_NAME" description="Deploys PROJECT_NAME to Local Server and delete and backup the static files"> <antcall target="copyPROJECT_NAMERelated"> <param name="param.replacefilterfile" value="${local-PROJECT_NAME-properties}" /> </antcall> <antcall target="backupAndDeleteFile"> <param name="param.includes" value="PROJECT_NAME/**/**,PROJECT_NAME/**/**/*.jsp" /> <param name="param.install.dir" value="${PROJECT_NAME.local.deploy.tomcat.webapp.dir}"/> <param name="param.backupFile" value="BackupPROJECT_NAME"/> </antcall> <copy overwrite="true" preservelastmodified="true" todir="${PROJECT_NAME.local.deploy.tomcat.webapp.dir}/PROJECT_NAME"> <fileset dir="${tomcat.dir.PROJECT_NAME}"> <include name="**/**" /> </fileset> </copy> </target> <!-- scp to staging server --> <target name="StgScpPROJECT_NAME"> <scp file="${basedir}/output/${project.PROJECT_NAME}-${server.stg.deploy}.zip" verbose="true" trust="yes" todir="${server.stg.PROJECT_NAME.user}@${server.stg.PROJECT_NAME.host}:" password="${server.stg.PROJECT_NAME.password}"> </scp> </target> <target name="StgDeployMgtStompCAE" description="Deploys PROJECT_NAME Server's Content to Staging Server"> <antcall target="copyPROJECT_NAMERelated"> <param name="param.replacefilterfile" value="${stg-PROJECT_NAME-properties}" /> </antcall> <!-- zip file --> <zip destfile="${basedir}/output/${project.PROJECT_NAME}-${server.stg.deploy}.zip" basedir="${tomcat.dir.PROJECT_NAME}" includes="**/*" /> <antcall target="StgScpPROJECT_NAME" /> </target> </project> |
基本上都可以见名知意,这里解释下这个
<replace dir="a/b" replacefilterfile="aaa.properties"> <include name="**/*.properties" /> </replace> |
这段命令的意思是用aaa.properties中的值替换a/b/**/*.properties文件中的相应值,这个相应属性是通过@符号引用的,例如
aaa.properties文件内容如下
@keyA@ = 3
a/b/下有一个文件bbb.properties
key = @keyA@
执行上述命令后,bbb.properties中的key值将被替换为3
key = 3
关于SCP命令,需要Ant1.6+版本,同时你也要在http://www.jcraft.com/jsch/index.html下载一个依赖包jsch-0.1.24.jar(文件名因版本而不同),jsch同样也是http://www.sourceforge.net下的一个项目。
你需要把下载的jsch-0.1.24拷贝到$ANT_HOME/lib下,如果是Eclipse下的Ant环境必须在Window->Preferences->Ant->Runtime->Classpath中加入jsch-0.1.24。[via]
没有评论▼