ant 生成 xml

利用 XMLBean 读写 xml 文件非常的方便,主要是通过 xml 文件生成 xsd 即所谓的 Schema 文件,然后利用 scomp (是 XMLBean 提供的一个编译工具 , 它在 bin 的目录下), 通过这个工具,我们可以将以上的 Schema 文件生成 Java Classes 。这一步要如果通过 Ant 来实现,显得非常的方便和简单,如下: (务必注意,要将jsr173_1.0_api.jar加入ant目录下的lib中,否则,会报错)

首先定义 build.properties 文件:

build.dir=classes

jar.dir=jar

xsd.dir=xsd

xbean.dir=lib

这个文件主要定义的是一些路径的名称,放在配置文件里面比较容易修改,下面的是 build.xml 文件:

<project default="build" basedir=".">

<property file="build.properties" description="Transfer property from .properties file"/>

<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="${xbean.dir}\xbean.jar"/>

<xmlbean classgendir="${build.dir}" classpath="${class.path}" failonerror="true">

<fileset dir="${xsd.dir}" includes="**/*.*"/>

</xmlbean>

<xmlbean schema="${xsd.dir}" destfile="${jar.dir}\Schemas.jar"/>

</project>

其中的具体意义,可以参阅:

http://dev2dev.bea.com.cn/download/school/workshop/WorkshopCNHelp/doc/zh/core/index.html

http://dev2dev.bea.com.cn/download/school/workshop/WorkshopCNHelp/doc/zh/core/index.html

示例

请务必在脚本中定义任务,如下所示:

				
						<taskdef name="xmlbean" classname="org.apache.xmlbeans.impl.tool.XMLBean" classpath="path/to/xbean.jar" />
				
		

下面的脚本在 Schema 目录中生成所有 Schema ,并创建一个名为 Schemas.jar jar 文件。

<xmlbean schema="schemas" destfile="Schemas.jar"/>

下面的脚本将 Schema“ourSchema.xsd” 编译成默认 jar“xmltypes.jar” 如果远程 URL 定义了任何导入和包括,将在生成期间下载它们。

<xmlbean schema="schemas/ourSchema.xsd" download="true"/>

使用文件组

<xmlbean classgendir="${build.dir}" classpath="${class.path}"
failonerror="true">
<fileset basedir="src" excludes="**/*.xsd"/>
<fileset basedir="schemas" includes="**/*.*"/>
</xmlbean>

收集 src 目录中除 XSD 文件以外的所有文件,以及 schemas 目录中的每一个文件,并编译它们。文件组可以包括引用了以前所编译的 Schema 组件的 Schema 文件。 文件组还可以包含 JAVA 文件。 classpath 参数定义在解析编译后的 Schema java 引用时所需的类路径。

所生成的类将转入 ${build.dir}

参数

特性

描述

必需

Schema

指向单个 Schema 文件或文件目录的文件。 非路径引用。 如果需要同时生成多个 Schema 文件,应使用嵌套的文件组,而不要设置 Schema

是,除非嵌套了一个文件组元素。

destfile

定义所创建的 jar 文件的名称。 例如, “myXMLBean.jar” 会将该任务的结果输出到同名的 jar 中。

否,默认为 “xmltypes.jar”

download

设置为 true 将允许编译器下载要导入和包括的 URL 默认为 false ,这意味着所有导入和包括的内容都必须在本地进行复制。

否,默认为 false

failonerror

确定当 XMLBean 创建过程遇到生成错误时, ant 目标是否将继续。

否,默认为 true

verbose

控制生成消息的输出量。

否,默认为 true

typesystemname

应在其中生成 TypeSystemHolder 类的包的名称。 通常不应指定该名称。该包中将不会生成 XMLBean 。使用 .xsdconfig 文件可以修改 XMLBean 包或类名。

classgendir

设置用来存放所生成的 CLASS 文件的位置。

srconly

true 值意味着只生成源代码。

否,默认为 false

srcgendir

设置用来存放所生成的 JAVA 文件的位置。

classpath

在下列情况下要用到的类路径:如果文件组中的 Schema 将导入由其他编译后的 XMLBean JAR 文件所提供的定义,或者 JAVA 文件位于 Schema 文件组中。此外,还支持嵌套的类路径。

classpathref

添加类路径,并将其作为对在其他位置所定义的路径的 引用

includes

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

includesfile

文件名。该文件的每一行都将作为一个 include 模式。

excludes

必须排除的文件模式的列表,以逗号或空格分隔。如果忽略,将不会排除任何文件(默认排除的文件除外)。

excludesfile

文件名。该文件的每一行都将作为一个 exclude 模式。

defaultexcludes

指出是否应使用默认排除( “yes”/“no” )。如果忽略,将使用默认排除。

debug

指出是否应该在带调试信息的情况下编译源代码,默认为 off 。如果设置为 off -g:none 将传递到支持它的编译器的命令行(对于其他编译器,将不会使用命令行参数)。如果设置为 true debuglevel 特性的值将决定命令行参数。

debuglevel

要追加到 -g 命令行开关后面的关键字列表。这将会被除 modern classic(ver >= 1.2) 以外的所有实现忽略。合法值是 none 或下列关键字的逗号分隔列表: lines vars source 。如果不指定 debuglevel ,则默认情况下,将不会在 -g 的后面追加任何关键字。如果不打开 debug ,该特性将被忽略。

optimize

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

includeAntRuntime

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

includeJavaRuntime

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

fork

是否应在外部使用 JDK 编译器执行 javac ,默认为 yes

否,默认为 true

executable

fork="yes" 时应使用的 javac 可执行文件的完整路径。默认为当前运行 Ant Java 版编译器。如果 fork="no" ,该参数将被忽略。

memoryInitialSize

如果 javac 在外部运行,则是底层 VM 的初始内存大小;否则将被忽略。默认为标准 VM 内存设置。(例如: 83886080 81920k 80m

memoryMaximumSize

如果 javac 在外部运行,则是底层 VM 的最大内存大小;否则将被忽略。默认为标准 VM 内存设置。(例如: 83886080 81920k 80m

compiler

要使用的编译器实现。如果未设置该特性,将使用 build.compiler 属性的值(如果设置)。否则,将使用当前 VM 的默认编译器。

你可能感兴趣的:(apache,jdk,xml,ant,脚本)