1. 首先下载ant,网上搜一下即可,我下的是apache-ant-1.9.4

2. 下载SSH支持包

能够通过windows直接将文件复制到Linux上是使用Linux的SSH协议完成的,因此首先需要下载SSH的支持jar包:jsch-0.1.51.jar

将该jar包放在apache-ant-1.9.4/lib中

3. 在Eclipse中将Ant导入

Window-->Preferences-->Ant-->Runtime 单击Ant Home Entities,点击Add Folder,选择Ant的解压目录

注:若之后出现  Cause: Could not load a dependent class com/jcraft/jsch/Logger 异常,需要在此处单击Ant Home Entities后点击Add External JARs...然后选择jsch-0.1.51.jar

4. 编写build.xml

 

<?xml version="1.0" encoding="UTF-8" ?>
<project name="MySSH" default="build" basedir=".">
    <description>用ANT将MySSH发布成WAR</description>

    <!-- 定义发布需要用到的属性 -->
    <!-- WEB容器需要用到的属性 -->
    <property name="tomcat.home" value="E:/eclipse/apache-tomcat-7.0.35" />
    <property name="webapps.home" value="E:/eclipse/apache-tomcat-7.0.35/webapps" />

    <property name="app.home" value="." />
    <property name="app.name" value="MySSH" />

    <property name="src.home" value="${app.home}/src" />
    <property name="web.home" value="${app.home}/WebRoot" />
    <property name="lib.home" value="${web.home}/WEB-INF/lib" />
    <property name="classes.home" value="${web.home}/WEB-INF/classes" />

    <!-- 定义构建WEB应用的良好的文件目录 属性 -->
    <property name="build.home" value="${app.home}/build" />
    <property name="build.classes" value="${build.home}/WEB-INF/classes" />
    

    <!-- 定义发布目录 最后工程将WAR文件COPY在该目录下,发布的时候只要将此文件拷贝到${webapps.home}指定的目录下 -->
    <property name="deploy.home" value="${app.home}/deploy" />

    <!-- 应用需要用到的类库支持文件 包括工程本身lib目录下的所有.jar和web容器中lib目录下的所有.jar文件 -->
    <path id="compile.classpath">
        <pathelement location="${classes.home}" />
        <fileset dir="${lib.home}">
            <include name="*.jar" />
        </fileset>

        <fileset dir="${tomcat.home}/lib">
            <include name="*.jar" />
        </fileset>
    </path>

    <!-- 删除历史发布痕迹 -->
    <target name="clean_all">
        <delete dir="${build.home}" />
        
        <delete dir="${classes.home}" />
        <delete dir="${deploy.home}" />
        
        <delete dir="${webapps.home}/${app.name}" failonerror="false">
        </delete>
        <delete dir="${webapps.home}/${app.name}.war">
        </delete>

    </target>

    <!-- 创建新的发布所涉及的路径 它取决于clean_all这个target,也就是说如果要执行它,首先得等clean_all执行完毕 -->
    <target name="prepare" depends="clean_all">
        <echo message="Tomacat Home=${tomcat.home}" />
        <echo message="webapps Home=${webapps.home}" />

        <mkdir dir="${classes.home}" />
        <mkdir dir="${deploy.home}" />

        <mkdir dir="${build.home}" />
        
    </target>

    <!-- 编译工程目录【${src.home}】下的所有java文件,并将编译好的class文件放在【${classes.home}】下面。编译的时候需要类库的支持 -->
    <target name="compile" depends="prepare">
        <javac srcdir="${src.home}" destdir="${classes.home}" debug="yes" includeantruntime="true">
            <classpath refid="compile.classpath" />
        </javac>
    </target>


    <!-- 构建良好的WEB application结构。将工程目录下的对应的文件COPY构建目录下 -->
    <target name="build" depends="compile">
        <copy todir="${build.home}">
            <fileset dir="${web.home}" />
        </copy>
        
        <!-- 打包工程目录下的所有资源文件。如果存在不同后缀名的资源文件则在include里面引入 -->
        <copy todir="${build.classes}">
        <fileset dir="${src.home}">
                <include name="**/*.properties" />
                <include name="**/*.xml" />
            </fileset>
        </copy>

        <!-- 打包BUILD目录下的文件成为一个WAR文件 -->
        <jar jarfile="${deploy.home}/${app.name}.war" basedir="${build.home}" />
    </target>

    <!-- 发布,直接将${deploy.home}/${app.name}.war拷贝至web容器下的发布目录 -->

    <target name="deploy" depends="build">
      <scp file="${deploy.home}/${app.name}.war" todir="root:rootroot@192.168.1.2:/home/jboss-4.2.3.GA\server\default\deploy" trust="true"/>
    </target>
</project>

 

posted on 2014-08-05 09:30  飘花千夜雪  阅读(290)  评论(0编辑  收藏  举报