Ant Javac任务用于编译Java源文件。 它扫描源和目标目录以编译源文件,只在.class不存在或.class比Java文件旧时才编译。
如果Java源文件位于任何包中,则源文件应具有目录层次结构。
注意: javac只编译java文件,对于非java文件不会进行copy道classes文件目录下,这些内容依然需要手动处理.
1. Apache Ant Javac属性
属性 | 描述 | 必需 |
---|---|---|
srcdir | 源Java文件 | 是 |
destdir | 存储类文件的目标 | 否 |
includes | 必须包含的文件模式列表 | 否 |
includesfile | 文件的每一行都被视为包含模式 | 否 |
excludes | 必须排除的文件模式列表 | 否 |
excludesfile | 文件的每一行都被视为排除模式 | 否 |
classpath | 要使用的类路径 | 否 |
bootclasspath | 引导类文件的路径 | 否 |
extdirs | 已安装扩展的路径 | 否 |
encoding | 编码源文件 | 否 |
nowarn | 用于将-nowarn 开关传递给编译器 | 否 |
debug | 在编译期间调试文件 | 否 |
debuglevel | 设置调试文件的级别 | 否 |
optimize | 指示是否应使用优化编译源 | 否 |
deprecation | 与弃用信息一起编译 | 否 |
verbose | 询问编译器是否有详细输出 | 否 |
depend | 为支持它的编译器启用依赖关系跟踪 | 否 |
includeAntRuntime | 是否在类路径中包含Ant运行时库 | 否 |
fork | 是否在外部使用JDK编译器执行javac | 否 |
executable | javac可执行文件的完整路径 | 否 |
memoryInitialSize | 设置初始内存大小 | 否 |
memoryMaximumSize | 底层JVM的最大内存大小 | 否 |
2. Apache Ant Javac示例
以下代码编译Java源文件并将类文件存储到目标目录中。
<project name="java-ant project" default="compile">
<target name="compile">
<javac includeantruntime="false" srcdir="./src" destdir = "test"></javac>
</target>
</project>
- 示例:将调试模式设置为true
此示例将编译位于srcdir中的所有Java源文件,并将.class存储到destdir目录中。 它将在调试模式下编译Java源代码,因为调试模式已打开。
<project name="java-ant project" default="run">
<target name="run">
<javac srcdir="${src}" destdir="${build}"
classpath="xyz.jar" debug="on" source="1.4"/>
</target>
</project>
- 示例:设置源级别和目标版本此示例将编译位于srcdir中的所有Java源文件,并将.class存储到destdir目录中。
源级别为1.8,.class文件将在Jdk 1.8下运行。
<project name="java-ant project" default="run">
<target name="run">
<javac srcdir="${src}" destdir="${build}"
classpath="xyz.jar" fork="true" source="1.8" target="1.8"/>
</target>
</project>
- 示例:依赖多个jar的编译
<?xml version="1.0"?>
<project name="Hello World Project" default="packagejar" basedir=".">
<property name="jar.name" value="yveshe-api.jar"/>
<!-- 一般Jar包的依赖 -->
<path id="common.lib.path">
<fileset dir="yveshe-api/target/yveshe-api/WEB-INF/lib" erroronmissingdir="false">
<include name="*.jar" />
</fileset>
</path>
<property name="compile.version" value="1.7"/>
<property name="compile.encoding" value="UTF-8"/>
<property name="classpath" refid="common.lib.path"/>
<property name="src.dir" value="yveshe-api/src"/>
<property name="class.destdir" value="yveshe-api/out"/>
<target name="compilejava" >
<javac includeAntRuntime="false" source="${compile.version}" target="${compile.version}" encoding="${compile.encoding}" classpath="${classpath}"
srcdir="${src.dir}" destdir="${class.destdir}" debug="true" debuglevel="lines,vars,source"/>
</target>
</project>
测试结果:
C:\Users\User\Desktop\ant>ant compilejava
Buildfile: C:\Users\User\Desktop\ant\build.xml
compilejava:
[javac] Compiling 5 source files to C:\Users\User\Desktop\ant\yveshe-api\out
[javac] 警告: [options] 未与 -source 1.7 一起设置引导类路径
[javac] 注: C:\Users\User\Desktop\ant\yveshe-api\src\main\java\com\yveshe\endpoint\UserExampleEndpoint.java使用了未 经检查或不安全的操作。
[javac] 注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
[javac] 1 个警告
BUILD SUCCESSFUL
Total time: 8 seconds