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.w3ccoo.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