使用了jdk6中sun api的非maven项目,用ant进行构建

公司项目使用的jdk1.6进行开发,其中ftp功能用了sun api。想把这个项目使用jenkins自动构建,因此需要使用构建工具自动构建项目。

我选择了ant。但是在使用ant进行构建的时候,先后出现了warning: FtpClient is internal proprietary API and may be removed in a future release 和 泛型报错。

当然项目如果使用idea进行开发的时候,也需要把java compiler 从javac改成eclipse,项目如果直接导入到eclipse中把jdk版本改成1.6_45 是直接没问题的,eclipse中编译器默认是eclipse。所以,我的做法是把ant的编译器从javac改成eclipse:

向ant 目录下的lib文件夹中加入ecj-4.6.1.jar jar包从maven仓库直接下载。

第二步在build.xml 中加入如下一行配置<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"></property>

最后还要在compile中加上 failonerror="false" 这个是让ant出现编译报错不会中断执行

最后附上我的build.xml配置,供参考

<?xml version="1.0" encoding="UTF-8"?>
<project name="cmp" default="deploy" basedir=".">
    <property environment="env" />
    <property name="webapp.name" value="cmp" />
    <property name="catalina.home" value="D:/apache-tomcat-7.0.82" />
    <property name="dist.dir" value="${basedir}/dist" />
	<!---->
    <property name="ant.dir" value="D:/java/apache-ant-1.9.7" />
	
    <property name="webRoot.dir" value="${basedir}/WebContent" />
    <property name="src.dir" value="${basedir}/src" />
    <property name="resources.dir" value="${src.dir}/resources" />
    <property name="lib.dir" value="${webRoot.dir}/WEB-INF/lib" />
    <property name="build.dir" value="${basedir}/build" />
	<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"></property>
    <!-- 使用eclipse jdt进行编译,而不使用JDK编译  -->
    <!-- <property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter" />  -->
    <!-- <property name="build.compiler" value="/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-3.b13.el6_10.x86_64" /> -->

    <!-- 初始化classpath -->
    <path id="project.classpath">
        <fileset dir="${lib.dir}">
            <include name="**/*.jar" />
        </fileset>
        <!-- 添加tomcat类路径 -->
        <fileset dir="${catalina.home}/lib">
            <include name="*.jar" />
        </fileset>
        <!-- ant lib包  -->
        <fileset dir="${ant.dir}">
            <include name="**/*.jar" />
        </fileset>
    </path>
 
    <!-- get the source compile classpath in a printable form -->
    <pathconvert pathsep="${line.separator}|   |-- "
             property="echo.path.compile"
             refid="project.classpath">
    </pathconvert>
    
    <!-- show classpath jars -->
    <target name="print_classpath">
        <echo message="|-- compile classpath"/>
        <echo message="|   |"/>
        <echo message="|   |-- ${echo.path.compile}"/>
    </target>
    
    
    <!-- 删除之前的目录结构 -->
    <target name="clear" description="清理旧文件">
        <delete dir="${build.dir}" />
        <delete dir="${dist.dir}" />
        <delete file="${catalina.home}/webapps/${webapp.name}.war" />
        <delete dir="${catalina.home}/webapps/${webapp.name}" />
    </target>
 
    <!-- 创建目录结构 -->
    <target name="init" depends="clear" description="创建初始化目录结构">
        <mkdir dir="${build.dir}/classes" />
        <mkdir dir="${dist.dir}" />
    </target>
 
    <!-- 编译java -->
    <target name="compile" depends="init" description="编译java文件">
        <echo message="begin compile..." />
        <javac srcdir="${src.dir}" destdir="${build.dir}/classes" 
            includeantruntime="false" nowarn="on" fork="true" executable="C:/Program Files/Java/jdk1.6.0_45/bin/javac" 
            source="1.6" target="1.6" deprecation="true" debug="true" 
            encoding="UTF-8" classpathref="project.classpath" failonerror="false"
            >
            <!-- <compilerarg line="-XDignore.symbol.file"/> -->
            <compilerarg line="-Xlint:unchecked" />
            <!-- <classpath refid="project.classpath" /> -->
        </javac>
    	<mkdir dir="${build.dir}/classes/resources"/>
        <copydir dest="${build.dir}/classes/resources" src="${resources.dir}" /> 
        <copy todir="${build.dir}/classes">
            <fileset dir="${src.dir}">
                <include name="*.*" />
            </fileset>
        </copy>
    	<copy todir="${build.dir}/classes/com/compass/utils">
            <fileset dir="${src.dir}/com/compass/utils">
                <exclude name="*.java" />
            </fileset>
        </copy>
        <echo message="end compile..." />
    </target>
 
    <!-- 将class文件打成 jar包 -->
    <!--  
        <target name="pack" depends="compile"> 
            <jar jarfile="${build.dir}/${webapp.name}.jar"> 
                <fileset dir="${build.dir}/classes"> 
                    <include name="**/*.class"/> 
                </fileset> 
            </jar> 
        </target> 
    -->
 
    <!-- 打成war包, 名称默认为 项目名 -->
    <target name="war" depends="compile"  description="将工程打成war包">
        <echo message="begin war..." />
        <war destfile="${dist.dir}/${webapp.name}.war" basedir="${webRoot.dir}" duplicate="preserve" 
            webxml="${webRoot.dir}/WEB-INF/web.xml">
            <lib dir="${lib.dir}"/>
            <classes dir="${build.dir}/classes" />
            <fileset dir="${webRoot.dir}">
                <include name="***.*" />
            </fileset>
        </war>
        <echo message="end war..." />
    </target>
 
    <!-- copy war包 tomcat的deploy目录 -->
    <target name="deploy" depends="war" description="部署项目">
        <echo message="begin deploy..." />
        <copy file="${dist.dir}/${webapp.name}.war" todir="${catalina.home}/webapps" />
        <echo message="end deploy..." />
    </target>
 
</project>

  

 

posted @ 2019-05-09 21:40  margo  阅读(176)  评论(0编辑  收藏  举报