Ant ---- javac task 使用

javac

功能: 它编译两种java文件 1 ,没有被编译过的 2,以前编译的 (have no corresponding .class file or where the class file is older than the .java file will be compiled),可以使用includes, includesfile, excludes, and excludesfile 等来提高匹配度。使用javac的compiler属性可以设置不同的编译器。

属性:

1. srcdir:java源文件的文件夹,除非用了嵌套的<src>标签

2. destdir:用于存放编译后class文件的文件夹,默认是当前文件夹。

3. includes:必须包括的文件模式的列表,以逗号或空格分隔。如果忽略,将包括所有文件。

4. includesfile:指定一个包含很多include的文件,同样可以用通配符来指定。

5. excludes:必须排除的文件模式的列表,以逗号或空格分隔。如果忽略,将不排除任何文件。

6. excludesfile: 指定一个包含很多exclude的文件,同样可以用通配符来指定。

7. classpath: class中导入需要使用的jar包。

8. sourcepath: 指定源资源文件夹。默认指向srcdir 。

9. bootclasspath: 编译过程中需要导入class文件会被导入。(不太明白)

10. classpathref: class中需要使用的jar包, 以引用的形式给出。

11. sourcepathref:资源文件夹,同上以引用得形式。

12. bootclasspathref: 编译过程中需要引用的class文件夹目录。

13. extdirs:扩展文件的路径。

14. encoding:编码格式

15. nowarn:为真时将忽略所有警告信息

16. debug: 是否产生调试信息,默认off。

17. debuglevel: 相当于命令行中要追加到 -g 命令行开关后面的关键字列表。这将会被除 modern 和 classic(ver >=

1.2) 以外的所有实现忽略。合法值是 none 或(lines,vars ,source:只生成一部分调试信息)。

如果不指定 debuglevel,则默认情况下,将不会在 -g 的后面追加任何关键字。如果不打开 debug,

该特性将被忽略。

18. optimize: 指出是否应该用优化方式编译源代码,默认为 off。

19. deprecation:假如为真,将会给出不建议使用的API,默认值false。

20. target: 根据特定的vm版本生成class文件
21. verbose:要求编译器输出详细信息,默认no。

22. depend: 当运行这个任务时,首先按照顺序依次执行完依赖的任务,如果出错将停止执行。

23. includeAntRuntime:指出是否应在类路径中包括 Ant 运行时程序库,默认为 yes。

24. includeJavaRuntime: 指出是否应在类路径中包括来自执行 VM 的默认运行时程序库,默认为 no。

25. fork:是否执行外部的javac,默认no。

26. executable:当fork="yes"时,所执行的javac的完整路径。默认的是当前跑ant的java版本,fork="no"就忽略

27. memoryInitialSize:当是外部javac的时候,获得基本vm的初始内存大小。否则忽略。

28. memoryMaximumSize: 同上只不过是获得最大的内存大小。

29. failonerror: Ant 任务在出现编译错误的情况下是否继续执行,默认值为 True,这意味着即使遇到错误

也要继续执行。

30. errorProperty:当编译失败的时候要设置的属性。

31. source:命令行-source的开关。 假如设置为1.4,将激活断言。默认是1.3。默认不使用-source。

Note that the default value depends on the JVM that is running Ant. We highly

recommend to always specify this attribute.

32. compiler:设置用来选择编译器,如果不设置,将使用默认的编译器。

33. listfiles:是否显示被编译文件列表,默认是no。

34. tempdir:指定存放临时文件的地方,这个只在设置了fork和命令行超过参数长度超过4k的时候使用。

(default is java.io.tmpdir.)

35. updatedProperty:编译发生并成功要设置的属性。

36. includeDestClasses:是否包含目标class文件夹包含到classpath。默认是true。意思是之前生成的class文

件自动加到classpath。

实例:

1. 将src下的java文件编译到build下去,classpath中包括xyz.jar包,并显示调试信息,source是1.4,激活断言(assert)

<javac srcdir="${src}"
destdir="${build}"
classpath="xyz.jar"
debug="on"
source="1.4"
/>

2. 将src下的java文件编译到build下去,使用外部的javac。source的等级是1.2,并且class文件是根据jdk1.2+版本生成

<javac srcdir="${src}"
destdir="${build}"
fork="true"
source="1.2"
target="1.2"
/>

3. 此例同上,只是使用fork指定executable的javac名称为 java$javac.exe

<javac srcdir="${src}"
destdir="${build}"
fork="java$$javac.exe"
source="1.5"
/>

4. 将src下的java文件编译到build下去,但是只包含mypackage/p1/和mypackage/p2/下的java文件,并排除mypackage/p1/testpackage/下的文件,

<javac srcdir="${src}"
destdir="${build}"
includes="mypackage/p1/**,mypackage/p2/**"
excludes="mypackage/p1/testpackage/**"
classpath="xyz.jar"
debug="on"
/>

5. 指定使用特定的jdk来编译

<javac srcdir="${src}"
destdir="${build}"
fork="yes"
executable="/opt/java/jdk1.1/bin/javac"
compiler="javac1.1"
/>

6. 使用指定的CompilerAdapter

<javac srcdir="${src.dir}"
       destdir="${classes.dir}"
       compiler="org.example.MyAdapter"/>

or

<componentdef classname="org.example.MyAdapter"
name="myadapter"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}">
<myadapter/>
</javac>

你可能感兴趣的:(javac)