Ant 生成 JAR 文件
编译完你的 java 源文件后,接下来就构建 java 存档,例如: JAR 文件。创建 Ant 中的 JAR 文件十分简单,运用 jar 任务来生成 jar 包。在 jar 任务中常用的属性如下所示:
属性 | 描述 |
basedir | 表示输出 JAR 文件的基目录。默认情况下,为项目的基目录。 |
compress | 表示告知 Ant 对于创建的 JAR 文件进行压缩。 |
keepcompression | 表示 project 基目录的绝对路径。 |
destfile | 表示输出 JAR 文件的名字。 |
duplicate | 表示发现重复文件时 Ant 执行的操作。可以是添加、保存、或者是使该重复文件失效。 |
excludes | 表示移除的文件列表,列表中使用逗号分隔多个文件。 |
excludesfile | 与上同,但是使用模式匹配的方式排除文件。 |
inlcudes | 与 excludes 正好相反。 |
includesfile | 表示在被归档的文件模式下,打包文件中已有的文件。与 excludesfile 相反。 |
update | 表示告知 Ant 重写已经建立的 JAR 文件。 |
继续我们的 Hello World 传真应用项目,通过添加一个新的目标 target 来产生 jar 文件。 但是在此之前,让我们先来考虑下面给出的 jar 任务。
<jar destfile = "${web.dir}/lib/util.jar"
basedir = "${build.dir}/classes"
includes = "faxapp/util/**"
excludes = "**/Test.class" />
这里,web.dir 属性指出了 web 源文件的路径。在我们的案例中, web 源文件路径也就是存放 util.jar 的地方。
在我们的案例中,build.dir 属性指出了配置文件夹的存储路径,也就是存放 util.jar 类文件的地方。
在上面的代码中,我们利用来自 faxapp.util 包中的类文件创建了一个名为 util.jar 的 jar 包。然而,我们排除名字为 Test 的类文件。输出的 jar 文件将会存放在 web 应用的配置文件 lib 中。
如果我们想 util.jar 成为可执行文件,只需在 Main-Class 元属性中加入manifest.
这样,上面给出的代码,在加入 Main-Class 元属性后,可以更新为如下形式:
<jar destfile = "${web.dir}/lib/util.jar"
basedir = "${build.dir}/classes"
includes = "faxapp/util/**"
excludes = "**/Test.class">
<manifest>
<attribute name = "Main-Class" value = "com.tutorialspoint.util.FaxUtil"/>
</manifest>
</jar>
为了执行 jar 任务,将它包装在目标 target 中,最常见的情况是,将 jar 任务包装在配置目标或者打包目标中(build 目标或 package 目标),并执行包装后的目标。
<target name="build-jar">
<jar destfile="${web.dir}/lib/util.jar"
basedir="${build.dir}/classes"
includes="faxapp/util/**"
excludes="**/Test.class">
<manifest>
<attribute name="Main-Class" value="com.tutorialspoint.util.FaxUtil"/>
</manifest>
</jar>
</target>
在上述文件上运行 Ant ,就能创建出 util.jar。
上述文件运行 Ant 后,得到以下的输出:
C:\>ant build-jar
Buildfile: C:\build.xml
BUILD SUCCESSFUL
Total time: 1.3 seconds
最后得到的输出 util.jar 将被存储在输出文件夹中。