整理了一下编译JDK源码的Ant脚本。发现用新一点的JDK编译旧的版本更容易,比如用jdk1.6.0_25编译jdk1.6.0_21。如果直接用jdk1.6.0_21编译自身代码,不是缺这个就是没那个,颇为麻烦。切到jdk1.6.0_25后,一下就编译通过了。
<project name="create rt_debug.jar" default="createJar" basedir=".">
<!-- *************************************************************** -->
<!-- Set-Up of propertys -->
<!-- *************************************************************** -->
<property name="project.build" location="build" />
<property name="project.src" location="${project.build}/src" />
<property name="project.classes" location="${project.build}/classes" />
<property name="project.dist" location="${project.build}/dist" />
<property name="JAVA_SOURCE" value="C:/Dev/Software/Java/jdk1.6.0_21" />
<property name="JAVA_COMPILER" value="C:/Dev/Software/Java/jdk1.6.0_25/fastdebug" />
<property name="debuglevel" value="source,lines,vars" />
<property name="target" value="1.6" />
<property name="source" value="1.6" />
<property environment="env" />
<!-- *************************************************************** -->
<!-- Initialize the bulid environment. -->
<!-- *************************************************************** -->
<target name="init">
<!-- Create the time stamp -->
<tstamp />
</target>
<!-- *************************************************************** -->
<!-- Set-Up of classpath -->
<!-- *************************************************************** -->
<path id="JavaLibraries">
<pathelement location="${project.classes}" />
<fileset dir="${JAVA_COMPILER}/lib">
<include name="**/*.jar" />
</fileset>
<fileset dir="${JAVA_COMPILER}/jre/lib">
<include name="**/*.jar" />
</fileset>
</path>
<path id="project.classpath">
<path refid="JavaLibraries" />
</path>
<!-- *************************************************************** -->
<!-- Clean the bulid environment. -->
<!-- *************************************************************** -->
<target name="clean" depends="init">
<delete dir="${project.build}" quiet="true" />
<mkdir dir="${project.build}" />
</target>
<!-- *************************************************************** -->
<!-- Unpacd the source code package. -->
<!-- *************************************************************** -->
<target name="unpack" depends="init, clean">
<unzip src="${JAVA_SOURCE}/src.zip" dest="${project.src}" />
</target>
<!-- ****************************************************************** -->
<!-- Compile the source code. -->
<!-- ******************************************************************* -->
<target name="build" depends="unpack">
<echo message="Compile ${ant.project.name}" />
<mkdir dir="${project.classes}" />
<javac classpathref="project.classpath" srcdir="${project.src}" destdir="${project.classes}" debug="true" debuglevel="${debuglevel}" source="${source}" target="${target}" fork="true" memoryMaximumSize="512m">
<include name="**/*.java" />
</javac>
</target>
<!-- ****************************************************************** -->
<!-- Create jar package. -->
<!-- ******************************************************************* -->
<target name="createJar" depends="build">
<mkdir dir="${project.dist}" />
<jar jarfile="${project.dist}/rt_debug.jar" compress="false">
<fileset dir="${project.classes}" />
</jar>
</target>
</project>