● AppFuse的ant构建使用非常复杂,功能也非常强大,怎样能够充分的利用它,为我所用,在今后的开发中大幅度的减轻开发量,顾做此详细研究(其中不包括测试任务)。 build.xml的正常运行依赖以下文件i) propertie..
● AppFuse的ant构建使用非常复杂,功能也非常强大,
Ø build.xml的正常运行依赖以下文件
i) properties.xml
该文件定义build.xml所需的属性值,主要完成通过build.properties 产生
database.properties 文件、定义构建工具需要的Classpath属性等工作。
ii) app-settings.xml
该文件定义设置应用程序状态的一些属性值
iii) build.properties
定义一些全局设置属性
Ø build.xml文件具体分析
]>
—XML DTD定义properties 和app-settings -->
—导入配置文件properties.xml(其中主要处理classpath,jar文件位置定义)-->
&properties;
—导入配置文件app-settings.xml-->
&app-settings;
—定义一些自定义任务,-->
……
—建立所需的目录:build/dudu;build/dudu/WEB-INF;dist/webapps-->
……
—用定义的名字新建一个项目 -->
—使用方法ant new -Dapp.name=NAME -Ddb.name=NAME -->
—该任务会在上层目录中构建自定义名字应用程序,内容与本目录中的大致相同-->
……
—拷贝资源和配置文件:将web/WEB-INF/classes下的ApplicationResources_zh_CN.properties;log4j.properties等配置文件拷贝到build/web/classes下.
拷贝src/dao/packageName/applicationContext-hibernate.xml 到dudu/WEB-INF目录下,
拷贝src/service/packageName/applicationContext-service.xml到dudu/WEB-INF目录下.
在此任务中会进行native2ascii 的转码工作.
此任务比较有用,以后可以复用.
-->
dest="${build.dir}/web/classes"
includes="ApplicationResources_zh_CN.properties" encoding="gb2312"/>
……
—拷贝web目录下footer.jsp; pages/*.jsp;**/classes/**;**/*-resources.xml到
build/dudu/的对应目录下,拷贝时会自动建立相应的目录结构
-->
……
—拷贝所有页面与配置文件以形成web应用程序-->
depends="copy-resources,copy-web-files"
description="Calls other targets to gather static resources"/>
—利用XDoclet根据POJO生成对应的hiberante映射文件
根据src/dao中的POJO生成映射文件,存放于build/dao/gen目录中.
此任务比较有用,以后可以复用.
执行此任务之前,需执行ant clean删除build目录
-->
unless="hibernatedoclet.unnecessary"
description="Generate Hibernate mapping files">
classname="xdoclet.modules.hibernate.HibernateDocletTask"
classpathref="http://dev.csdn.net/article/"xdoclet.classpath"/>
destdir="${build.dir}/dao/gen"
mergedir="metadata/dao"
excludedtags="@version,@author"
addedtags="@xdoclet-generated at ${TODAY}"
force="${xdoclet.force}">
—编译dao模块-->
……
—将编译好的dao模块打包成对应的jar文件,生成的jar文件存放在dist目录下-->
……
—编译service模块-->
description="Compile service module">
torefid="http://dev.csdn.net/article/"compile.classpath"/>
torefid="test.classpath"/>
—打包service模块,日后开发自定义的模块可以参考此任务编译和打包-->
value="${webapp.name}-dao.jar ${webapp.name}-service.jar"/>
—根据POJO生成Struts 的ActionForms,生成的FormBean存放在build/web/gen下
此任务比较有用,以后可以复用
-->
……
—利用webdoclet生成web.xml;struts-config.xml等web应用程序配置文件
生成的文件放在build/dudu/WEB-INF下
此任务比较有用,以后可以复用
-->
unless="webdoclet.unnecessary">
……
—打包web模块,处理build/dudu/WEB-INF/web.xml文件;
根据metadata/conf/tomcat-context.xml 产生dist/webapps/context.xml;
改变build/dudu/WEB-INF/ applicationContext-hibernate.xml中的路径,以便
dudu-dao.jar可以找到.hbm文件,
拷贝src/web/**/*.properties和*.xml文件到build/web/classes中,
将build/dudu下的文件打包成dist/dudu.war,其中包括build/web/classes中的文件
生成WEB-INF/classes中的文件,
dist/*.jar生成WEB-INF/lib中的文件
此任务比较有用,以后可以复用
-->
……
—所有编译任务都要调用的基本编译,接收其他任务的参数,编译相应的模块
输入参数:待编译模块名称,编译所需的路径.
编译后的文件存放于build/moduleName/classes中.
此任务比较有用,以后可以复用
-->
destdir="${build.dir}/${module}/classes"
debug="${compile.debug}"
deprecation="${compile.deprecation}"
optimize="${compile.optimize}"
classpathref="http://dev.csdn.net/article/"compile.classpath"/>
—
将数据库中的数据导出为xml文件
此任务比较有用,以后可以复用
-->
……
—利用dbunit工具,根据metadata/sql/sample-data.xml 填充数据库表记录-->
……
—
根据metadata/sql/${database.type}-create.sql中的sql语句建立数据库和用户
此任务比较有用,以后可以复用
-->
……
—
根据映射hibernate映射文件生成数据库表
此任务比较有用,以后可以复用
-->
description="creates database tables">
classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask">
properties="database.properties" output="create-tables.sql">
—删除数据库中的表-->
……
—删除目录-->
—生成JavaDoc,生成文件存放在E:\dudu\build\docs\api -->
……
—
将build/dudu下的文件拷贝到tomcat-home/webapps/dudu/,包括完整的目录和所有的
Jsp文件,但不包括jar文件和WEB-INF/classes中的文件,也不包括web.xml文件和
spring的配置文件这些文件不在build/dudu目录下.
-->
……
—部署web应用,并解包war文件-->
dest="${tomcat.home}/webapps/${webapp.name}"/>
—删除web应用 -->
—将war文件拷贝到tomcat容器-->
todir="${tomcat.home}/webapps"/>
Ø properties.xml文件分析
该文件定义build.xml所需的属性值。
—导入lib.properties 文件,其中包括了构建时所需的jar文件定义-->
—加载build.properties 文件-->
—加载运行unit tests所需的tomcat配置属性文件 -->
—如果build.properties 不存在时,定义数据库的基本配置-->
……
—定义建立数据库时所用到的database URL,它被用在db-create任务中-->
value="jdbc:mysql://localhost/jpetstore"/>
……
—通过build.properties 产生database.properties 文件-->
—由于build.properties 中的属性被注释了,所以这些属性会从properties.xml中取得-->
file="${basedir}/database.properties">
……
—初始化属性值-->
……
—properties.xml文件的主要工作:定义构建工具需要的Classpath属性-->
……
……
……
……
……
……
……
……
Ø app-settings.xml文件分析
该文件定义设置应用程序状态的一些属性值
Øbuild.properties文件分析
build.compiler=modern
webapp.name=dudu
webapp.version=1.7
webapp.war=${webapp.name}.war
compile.deprecation=true
build.dir=${basedir}/build
dist.dir=${basedir}/dist
test.dir=${build.dir}/test
javac.debug=true
junit.fork=true
xdoclet.force=false
error.mailHost=localhost
error.server=localhost
ftp.server=upload.sourceforge.net
ftp.remoteDir=incoming
ftp.user=anonymous
Ø tomcat.properties文件分析
tomcat.server=localhost
tomcat.manager.url=http://${tomcat.server}:8080/manager
tomcat.username=admin
tomcat.password=admin