专注于 JAVA WEB开发
« »
2009/12/14IT技术

387 views

使用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]

日志信息 »

该日志于2009-12-14 17:20由 tj4c 发表在IT技术分类下, 你可以发表评论。除了可以将这个日志以保留源地址及作者的情况下引用到你的网站或博客,还可以通过RSS 2.0订阅这个日志的所有评论。

相关日志 »

Related Posts

  • 暂无相关日志

没有评论

发表评论 »

返回顶部