zoukankan      html  css  js  c++  java
  • Ant 打包 问题

    Ant 打包问题及解决归纳总结:

         1.build.xml注意设置basedir:

         <project name="s2si"  default="dist" basedir=".">

         --->>这里basedir="."意思是基础目录是与build.xml同级目录,比如说src或 s2si,后续新建目录都是在此基础上进行,为了方便打包,可以根据自己需要放置 build.xml,比如我就放在了工程s2si根目录下.

     

         2.build.xml注意设置<war>命令中的basedir:

          <war destfile="${build.dir}/${ant.project.name}.war"  basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>

    打包是将编译好的class文件和相关配置文件集体打包,所以应该选择   "${build.dir}",开始自己犯错basedir="${basedir}",直接导致打出的war包下 面很乱,即使打包过程没出错,但部署到tomcat上就会报一大堆问题.

     

         3.打包时需要注意编码和jdk版本:

        <javac   destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on" 
        deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
       <compilerarg line="-encoding UTF-8"/>
       <classpath refid="project.classpath" ></classpath>
        </javac>

     

    --->>字符编码要和web项目编码一致,jdk版本要和本地安装版本一致.如果不致,myeclipse中运行build.xml打包编译不过,本地手工ant打包会报如下错:

     eclipse 出现警告: [options] 未与 -source 1.6 一起设置引导类路径.

     

      4.build.xml拷贝页面文件和配置文件时注意excludes使用:

      <copy todir="${build.web.class.dir}">

           <!-- 复制源代码目录中所有的非java文件 -->

            <fileset dir="${src.dir}"  excludes="**/*.java">

            </fileset>

        </copy>

      

        <copy todir="${build.dir}">

            <!-- WebRoot目录中所有的非java文件 -->

            <fileset dir="${webRoot.dir}" excludes="**/*.class" >

        </fileset>
     </copy>

     

     

    --->>说明:

     ${src.dir}=s2si/src

     ${webRoot.dir}=s2si/WebRoot

    这里需要注意的是要排除指定目录中某些规则的文件必须用:excludes="**/*.java"或excludes="**/*.class",**/*.*这是ant里的规则,不是指两级目录后的规则筛选.

    --->> classpath备忘:

    <classpath refid="project.classpath" ></classpath>

    这里用classpath标签,指定路径时用classpathref还是用path还是用refid有不同的情况,这里用的是refid,注意根据自己情况而定.
    ---->> ant打包核心build.xml内容如下:
     <?xml version="1.0" encoding="UTF-8"?>
    <project name="s2si"  default="dist" basedir=".">
    <property name="build.dir" value="build" description="输出目录"/>
    <property name="build.web.dir" value="${build.dir}/WEB-INF" description="web配置输出目录"/>
    <property name="build.web.class.dir" value="${build.web.dir}/classes" description="web类输出目录"/>
    <property name="build.web.lib.dir" value="${build.web.dir}/lib" description="web引用jar输出目录"/>
    <property name="src.dir" value="src" description="源代码目录"/>
    <property name="webRoot.dir" value="${basedir}/WebRoot" />  
    <property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib" /> 
    <property name="encoding" value="utf-8" description="文件编码"/>

    <path id="project.classpath">
    <fileset dir="${lib.dir}">  
               <include name="*.jar" />  
    </fileset>  
    <pathelement path="${basedir}/WebRoot/WEB-INF/lib"/>
    </path>

    <target name="init">
    <delete dir="${build.dir}"/>
    <mkdir dir="${build.dir}"/>
    <mkdir dir="${build.web.dir}"/>
    <mkdir dir="${build.web.lib.dir}"/>
    <mkdir dir="${build.web.class.dir}"/> 
    </target>

    <target name="compile" depends="init">

    <javac   destdir="${build.web.class.dir}" source="1.6" target="1.6" debug="on" 
    deprecation="false" optimize="false" failonerror="true" srcdir="${src.dir}" >
       <compilerarg line="-encoding UTF-8"/>
       <classpath refid="project.classpath" ></classpath>
    </javac> 

    <copy todir="${build.web.class.dir}">
    <!-- 复制源代码目录中所有的非java文件 -->
    <fileset dir="${src.dir}"  excludes="**/*.java">
    </fileset>
    </copy>
      
    <copy todir="${build.dir}">
    <!-- WebRoot目录中所有的非java文件 -->
    <fileset dir="${webRoot.dir}" excludes="**/*.class" >
    </fileset>
    </copy>

    </target>

    <target name="main" depends="init,compile" />
    <target name="dist" depends="main" description="将工程打成war包">
    <war destfile="${build.dir}/${ant.project.name}.war" basedir="${build.dir}" webxml="${build.web.dir}/web.xml"/>
    </target>
    </project>

  • 相关阅读:
    算法学习-顺序查找
    EF框架中Attach与Entry
    EntityFramework更新实体绑定实体字段简便方法
    C# 快速写入本地文件
    Vue 3.0初探
    二维管线生成三维管线,转换3DTiles 思路
    Civil3d中 如何用管轴线的变坡点桩号控制其他纵断面数据的显示?
    jupyter
    jenkins
    ambari
  • 原文地址:https://www.cnblogs.com/sdream/p/5151601.html
Copyright © 2011-2022 走看看