Apache Ant Tasks - Javac
描述
Javac 任务编译 Java 源代码树。 将递归扫描源目录和目标目录以查找要编译的 Java 源文件。 只有没有对应 .class 文件或 .class 文件比 .java 文件旧的 .java 文件才会被编译。
属性
| 序号 | 属性 & 描述 |
|---|---|
| 1 | Srcdir java 文件的位置。 |
| 2 | Destdir 存储类文件的位置。 |
| 3 | Includes 必须包含的文件模式的逗号或空格分隔列表。 |
| 4 | Includesfile 文件的名称。 该文件的每一行都被视为一个包含模式。 |
| 5 | Excludes 必须排除的文件模式的逗号或空格分隔列表。 |
| 6 | Excludesfile 文件的名称。 该文件的每一行都被视为一个排除模式。 |
| 7 | Defaultexcludes 指示是否应使用默认排除项(yes|no)。 |
| 8 | Classpath 要使用的类路径。 |
| 9 | Sourcepath 要使用的源路径。 要禁止 sourcepath 切换,请使用 sourcepath=""。 |
| 10 | Bootclasspath 引导类文件的位置。 |
| 11 | Classpathref 要使用的类路径,作为对其他地方定义的路径的引用。 |
| 12 | Sourcepathref 要使用的源路径,作为对其他地方定义的路径的引用。 |
| 13 | Bootclasspathref 要使用的引导类路径,作为对其他地方定义的路径的引用。 |
| 14 | Extdirs 已安装扩展的位置。 |
| 15 | Encoding 源文件的编码。 |
| 16 | NSowarn 指示是否应将 -nowarn 开关传递给编译器。 |
| 17 | Debug 指示是否应使用调试信息编译源。 如果设置为 off,则 -g:none 将在支持它的编译器的命令行上传递(对于其他编译器,将不使用命令行参数)。 如果设置为 true,则 debuglevel 属性的值将确定命令行参数。 |
| 18 | Debuglevel 要附加到 -g 命令行开关的关键字列表。 合法值是 none 或以下关键字的逗号分隔列表:lines、vars 和 source。 |
| 19 | Optimize 指示是否应使用优化编译源代码。 请注意,自 JDK 1.3 起 Sun 的 javac 将忽略此标志(因为不需要编译时优化)。 |
| 20 | Deprecation 指示是否应使用弃用信息编译源。 |
| 21 | Verbose 询问编译器的详细输出。 |
| 22 | Depend 为支持此功能的编译器启用依赖项跟踪(jikes 和经典)。 |
| 23 | includeAntRuntime 是否在类路径中包含 Ant 运行时库。 通常最好将此设置为 false,这样脚本的行为对其运行的环境不敏感。 |
| 24 | includeJavaRuntime 是否在类路径中包含来自正在执行的 JVM 的默认运行时库。 |
| 25 | Fork 是否在外部使用 JDK 编译器执行 javac。 |
| 26 | Executable 在 fork 的情况下使用的 javac 可执行文件的完整路径是 yes。 |
| 27 | memoryInitialSize 如果 javac 在外部运行,则为底层 JVM 的初始内存大小。 (例如:83886080、81920k 或 80m) |
| 28 | memoryMaximumSize 底层 JVM 的最大内存大小,如果 javac 在外部运行的话; 否则忽略。 (例如:83886080、81920k 或 80m) |
| 29 | Failonerror 指示编译错误是否会使构建失败。 |
| 30 | Errorproperty 如果编译失败,则设置为 true 的属性。 |
| 31 | Source 编译器接受的 Java 语言功能,由 -source 命令行开关指定。 有效的功能版本是 1.3、1.4、1.5 或 5 等。 |
| 32 | Target 为特定的 JVM 版本生成类文件(交叉编译)。 |
| 33 | Compiler 要使用的编译器实现。 |
| 34 | listfiles 指示是否将列出要编译的源文件。 |
| 35 | TempDir Ant 应该放置临时文件的位置。 这仅在任务被分叉并且命令行参数长度超过 4 kB 时使用。 |
| 36 | updatedProperty 如果编译已经发生并且已经成功,则设置为 true 的属性。 |
| 37 | includeDestClasses 此属性控制是否在给编译器的类路径中包含目标类目录。 如果设置为 true(默认),则以前编译的类位于编译器的类路径中。 |
| 38 | createMissingPackageInfoClass package-info.java 文件中的一些包级别注释不会创建任何 package-info.class 文件,因此 Ant 每次都会重新编译同一个文件。 |
| 39 | MSodulepath 指定在哪里可以找到应用程序模块。 模块、模块文件或分解模块的目录列表。 |
| 40 | Modulepathref 要使用的模块路径,作为对其他地方定义的路径的引用。 |
| 41 | Modulesourcepath 指定在哪里可以找到用于多模块编译的输入源文件。 |
| 42 | Modulesourcepathref 要使用的模块源路径,作为对其他地方定义的路径的引用。 |
| 43 | Upgrademodulepath 指定替换运行时映像中可升级模块的模块的位置。 |
| 44 | Upgrademodulepathref 要使用的升级模块路径,作为对其他地方定义的路径的引用。 |
| 45 | NSativeheaderdir 指定放置生成的本机头文件的位置。 |
| 46 | Release 指定 --release 开关的值。 在 JDK 9+ 上设置和运行时,源和目标属性以及引导类路径将被忽略。 |
用法
示例
在 src 目录中创建具有以下内容的 TestMessage.java:
public class TestMessage {
public static void main(String[] args) {
System.out.println("Welcome to www.cainiaomax.com");
}
}
使用以下内容创建 build.xml:
<?xml version="1.0"?>
<project name="TutorialPoint" default="info">
<target name="info">
<javac srcdir="src" destdir="build"/>
</target>
</project>
上面的脚本将运行一个 java 类文件来打印输出。
输出
在上述构建文件上运行 Ant 会产生以下输出 −
F:\tutorialspoint\ant>ant Buildfile: F:\tutorialspoint\ant\build.xml info: [javac] F:\tutorialspoint\ant\build.xml:4: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds [javac] Compiling 1 source file to F:\tutorialspoint\ant\build BUILD SUCCESSFUL Total time: 0 seconds

