1.4 在Ant中编译Java代码
来源:互联网 发布:阿里云短信模板 编辑:程序博客网 时间:2024/06/06 10:45
1.4 在Ant中编译Java代码
原文:http://book.51cto.com/art/201001/177825.htm
在Java开发中,任何构建脚本都需要完成的一个最基本工作就是编译代码。在Ant中,<javac>任务为编译Java代码提供了方便的一次性解决方案。
下面介绍<javac>任务的简单用法。以上示例中使用了这一任务的简单形式来编译src/main目录中的Java类,并将编译好的类放入build/classes目录中:
- <target name="compile" depends="init" description="Compile Java code">
- <javac srcdir="src" destdir="build/classes"/>
- </target>
这相当于用javac工具执行以下命令:
- $ javac -nowarn -d build/classes src/main
不可否认,在现实世界中,极少会编译如此简单的应用程序。在大多数实际应用程序中,应用程序将要编译和运行一组程序库。在Ant项目中,这些程序库通常存储在lib目录中。在编译应用程序时,需要告诉Ant到哪里去找到这些程序库。
Ant提供了一些非常强大的功能来帮助用户完成这一工作。Ant擅长定义和操作“类路径(path-like)”以及其他文件路径定义。在Ant中,这些定义称为“类似于路径”的结构,除了最不重要的创建文件,它们在所有创建文件中被广泛使用。最简单的形式是在<path>标签中使用location属性来标识特定程序库。
- <path id="junit.classpath" location="lib/junit.jar"/>
还可以使用path属性以相同的方式定义该路径。不过,除了定义单个JAR文件或目录,还可以利用path属性,通过组合目录路径和JAR文件来使用更类似于路径的构造,如下所示:
- <path id="junit.classpath" path="build/classes:lib/junit.jar"/>
Ant的路径处理功能的好处之一是路径(与底层Java API一样)可以在不同操作系统间移植。按照惯例,这里使用包含正斜杠(“/”)的Unix样式的路径。例如,在Windows计算机上,Ant会自动将以上路径解释为“build\classes;lib\junit.jar”。
尽管这有助于编写更易读的构建文件,但只有在需要操作大量文件时,Ant路径处理功能的真正好处才会发挥出来。以下示例创建了一个包括lib目录中所有jar文件的路径定义:
- <path id="compile.classpath">
- <fileset dir="lib" includes="*.jar" />
- </path>
在为现实Java构建文件定义类路径时,经常需要进行这类操作,如下所示,可以在<javac>任务中通过classpathref属性来使用这类路径:
- <target name="compile" depends="init" description="Compile Java code">
- <javac srcdir="src"
- destdir="build/classes"
- classpathref="compile.classpath" />
- </target>
如果认为在构建文件的其他位置将不需要此类路径,可以将<classpath>元素直接嵌入在<javac>任务中:
- <target name="compile" depends="init" description="Compile Java code">
- <javac srcdir="src" destdir="build/classes">
- <classpath>
- <fileset dir="lib" includes="*.jar"/>
- </classpath>
- </javac>
- </target>
为了方便,这些路径实际上使用了简化表示。为了更加易读,也可以使用嵌入标签,在需要许多不同的类路径元素时这会有用。如果要想重用在构建文件的其他位置定义的路径,这也很方便。利用<pathelement>标签,可使用JAR文件、目录或者甚至是另一个类路径元素的引用来定义类路径元素:
- <path id="test.classpath">
- <path refid="compile.classpath"/>
- <pathelement location="lib/junit.jar"/>
- <pathelement path="build/test-classes"/>
- </path>
还可以在<javac>任务本身中通过includes和excludes属性使用类似于路径的表达式,告诉Ant在编译过程中包括哪些类或从中排除哪些类。例如,要只编译com.mycompany. myapp.web软件包中(及其之下)的类,可以使用以下命令:
- <javac srcdir="src" destdir="build/classes" includes="com/mycompany/myapp/web/**" />
在编译Java代码时,经常要为特定Java版本进行编译。例如,用户可能在开发计算机上使用Java 6,但需要将代码部署到只支持Java 1.4的环境中,通过将source属性设置为“1.4”,可以确保自己的Java代码与Java 1.4兼容,而不使用Java 5语法。同样,通过将target属性指定为“1.4”,可以告诉Ant生成与Java 1.4 JVM字节兼容的代码。
- <javac srcdir="src" destdir="build/classes" source="1.4" target="1.4" />
有时还需要表明是否想在编译源代码时生成调试信息,这一功能默认是关闭的,但在测试和调试代码时,它可能会派上用场。要打开这一选项,将debug属性设置为on(或true):
- <javac srcdir="src" destdir="build/classes" debug="on" />
尽管名称相同,但<javac>任务并不依赖名称也为javac的标准Sun Java编译器。事实上,通过指定compiler属性,其他编译器如Jikes和GCJ的爱好者可以使用这些编译器或许多其他更特殊的选择:
- <javac srcdir="src" destdir="build/classes" compiler="jikes"/>
还可以通过设置build.compiler属性(参见第1.5节)为整个构建文件定义该值。
可以看到,<javac>任务为编译Java代码提供了强大灵活的工具,这里介绍的许多技术对于很多Ant任务都很典型,后面将看到应用这些技术的更多例子。
- 1.4 在Ant中编译Java代码
- 在myeclipse中使用ant编译报错a java exception has occurred
- 用Ant在编译时删除Debug代码
- 在Eclipse中使用Java代码调用ant出现的异常
- 相同的代码在eclipse中编译成功,但是用ant编译失败。无法确定<T>T的类型参数;对于上限为int,java.lang.Object的类型变量T,不存在唯一最大实例
- 在自己的java代码中编译并运行程序
- ant 编译java文件
- ANT编译JAVA源码
- ant编译java工程
- java ant编译
- 在Eclipse中使用Ant来自动编译J2me程序
- 在maven编译环境中执行ant脚本
- Ant 在Myeclipse8+ 编译java类卡死的解决方案
- 在eclipse中调试ant中的junit测试代码
- Java 代码调用ANT
- Java 代码调用ANT
- Java 代码调用ANT
- Ant ------java编译Application 实践
- misc_register编写框架
- java getMethod与invoke
- hdu2532Engine 字符串模拟
- ios 屏幕,statusbar,状态栏,标签栏尺寸,高度
- 设计模式原则详解
- 1.4 在Ant中编译Java代码
- 解决Ubuntu发热量大的问题
- 黑马程序员————高新技术————内省(了解JavaBean)
- 对于安卓应用开发插入广告的总结
- DES加密与机密(C#)
- protobuf 常用序列化/反序列化 api
- Unix下C语言用于记录日志的方法(自定义)
- Ubuntu下adb在不到Android设备(windows的类似)
- 在排好序的数组中找出给定数字出现的次数