/运用Ant编译Eclipse项目
//Ant学习
这里,我们的目标是以Eclipse创建一个新的Java项目,运用Ant来编译,并将最后的.class文件存储在JAR文件中。
1.先创建一个JAVA项目
比如创建了一个Ch05_02的项目,项目中只有如下一个类:
package org.eclipsebook.ch05;
public class Ch05_02 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("This code was built using Ant.");
}
}
2.对“Package Explorer”视图中的项目按鼠标右键,选“New”->“File”选项来创建build.xml文件。在“File Name”字段中输入
“build.xml”,点击“Finish”按钮,创建build.xml完毕。
3.写“build.xml”文件。我们要创建对应到即将使用的目录的诸多属性(property):src、bin、一个放JAR文件的目录jardir(我们会在bin
目录下建一个lib目录来存储JAR文件)、JAR文件本身jarfile(我们称此文件为Ch05_02.jar)。依次发设定这些属性,可以让你在此编译文件
中的其他地方,以此引用这些目录名称。我们也会设定build.compiler的属性,指向Ant日后会使用的JDT编译器的适配器(adapter)--
org.eclipse.jdt.core.JDTCompilerAdapter。
build.xml完整内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<project name="Ch05_02" default="Main Build" basedir=".">
<property name="bin" location="bin"/>
<property name="src" location="src"/>
<property name="jardir" location="${bin}/lib"/>
<property name="jarfile" location="${jardir}/Ch05_02.jar"/>
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
<target name="Main Build" depends="Initialize,Compile,Jar">
<echo message="Ant at work!"/>
</target>
<target name="Initialize">
<delete dir="${bin}"/>
<delete dir="${jardir}"/>
<mkdir dir="${bin}"/>
<mkdir dir="${jardir}"/>
</target>
<target name="Compile" depends="Initialize">
<javac srcdir="${src}" destdir="${bin}">
</javac>
</target>
<target name="Jar" depends="Initialize,Compile">
<jar destfile="${jarfile}" basedir="${bin}"/>
</target>
</project>
以上就是build.xml。
但是你直接选定项目中build.xml并单击鼠标右键,选“Run As -- Ant Build”选项,会报告一个“Class not found:
org.eclipse.jdt.core.JDTCompilerAdapter”。这时你需要选“Run As -- Ant Build...”选项,在弹出的对话框中选择“JRE”选项卡,在
“Runtime JRE”栏中选择“Run in the same JRE as the workspace”,此时就能用Ant成功编译Eclipse工程了。这也许不是最好的方法,需
要大家共同探索
我们经常使用ant来编译我们的Eclipse项目,但有时ant中javac任务往往只能编译一部分代码。当代码有编译错误时,ant就停止编译,不再继续编译剩下的代码。这种方式给一些单元测试或者脚本类的工程带来了麻烦,因为这类工程中的错误往往只是一个脚本的语法问题,并不影响其他脚本。所以这类工程希望尽可能多的编译全部代码,而不是因为一个编译错误而停止。
但我们在Eclipse里面编译工程时,却没有这样的问题,Eclipse将会把所有的代码都编译一遍,最后显示所有的错误。这是因为这时编译的是Eclipse自己实现的Java编译器。我们可以利用Eclipse自带的编译器,改进我们的ant脚本。
实现起来很简单:
1. 在ant脚本中加入一行:
<property name="build.compiler" value="org.eclipse.jdt.core.JDTCompilerAdapter"/>
如果javac任务中有这么一行,则删之:
compiler="javac1.5"
2. 下载ecj.jar,可以从http://download.eclipse.org/eclipse/downloads/下载,选择eclipse的版本号,然后在"
JDT Core Batch Compiler"这个类别中就可以下载对应版本的ecj.jar了。
3. 运行ant命令,加上如下参数:
ant -f build.xml -lib ecj.jar
4. 如果遇到OutOfMemory的错误在编译过程中,则加上如下的环境变量:
set ANT_OPTS=-Xmx1024m