`
javafenger
  • 浏览: 246755 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

appfuse配置文件解读

阅读更多

 ● 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文件具体分析

<!DOCTYPE project [

    <!ENTITY properties SYSTEM "properties.xml">

    <!ENTITY app-settings SYSTEM "app-settings.xml">

]>

<!XML DTD定义propertiesapp-settings -->

<project name="dudu" basedir="." default="package-web">

    <!导入配置文件properties.xml(其中主要处理classpath,jar文件位置定义)-->

    <!-- import project-wide properties (classpath, jar file locations) -->

    &properties;

    <!导入配置文件app-settings.xml-->

    &app-settings;

    <!定义一些自定义任务,-->

    <target name="init" description="defines custom tasks">

       

    </target>

    <!建立所需的目录:build/dudu;build/dudu/WEB-INF;dist/webapps-->

    <target name="prepare" depends="build.properties.missing,init"

       

    </target>

    <!用定义的名字新建一个项目 -->

    <!使用方法ant new -Dapp.name=NAME -Ddb.name=NAME -->

    <!该任务会在上层目录中构建自定义名字应用程序,内容与本目录中的大致相同-->

    <target name="new" depends="clean">

       

    </target>

 

 

<!拷贝资源和配置文件:将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 的转码工作.

此任务比较有用,以后可以复用.

-->

    <target name="copy-resources" depends="prepare">

        <native2ascii src="http://dev.csdn.net/article/"web/WEB-INF/classes""

            dest="${build.dir}/web/classes"

            includes="ApplicationResources_zh_CN.properties" encoding="gb2312"/>

    </target>

   

    <!拷贝web目录下footer.jsp; pages/*.jsp;**/classes/**;**/*-resources.xml到

        build/dudu/的对应目录下,拷贝时会自动建立相应的目录结构

-->

    <target name="copy-web-files" depends="prepare">

      

    </target>

   

    <!拷贝所有页面与配置文件以形成web应用程序-->

    <target name="stage-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目录

-->

    <target name="hibernatedoclet" depends="prepare"

        unless="hibernatedoclet.unnecessary"

        description="Generate Hibernate mapping files">

        <taskdef name="hibernatedoclet"

            classname="xdoclet.modules.hibernate.HibernateDocletTask"

            classpathref="http://dev.csdn.net/article/"xdoclet.classpath"/>

        <!-- generate hibernate files -->

        <hibernatedoclet

            destdir="${build.dir}/dao/gen"

            mergedir="metadata/dao"

            excludedtags="@version,@author"

            addedtags="@xdoclet-generated at ${TODAY}"

            force="${xdoclet.force}">

            <fileset dir="src/dao"/>

            <hibernate validatexml="true" version="2.0"/>

        </hibernatedoclet>

    </target>

 

 

<!编译dao模块-->

    <target name="compile-dao" depends="hibernatedoclet">

       

    </target>

 

 

    <!将编译好的dao模块打包成对应的jar文件,生成的jar文件存放在dist目录下-->

    <target name="package-dao" depends="prepare,compile-dao"

      

    </target>

 

 

    <!编译service模块-->

    <target name="compile-service" depends="package-dao"

        description="Compile service module">

        <antcall target="compile-module" inheritAll="true">

            <param name="module" value="service"/>

            <reference refid="service.compile.classpath"

                torefid="http://dev.csdn.net/article/"compile.classpath"/>

            <reference refid="service.test.classpath"

                torefid="test.classpath"/>

        </antcall>

    </target>

 

 

    <!打包service模块,日后开发自定义的模块可以参考此任务编译和打包-->

    <target name="package-service" depends="compile-service">

        <jar destfile="${dist.dir}/${webapp.name}-service.jar">

            <manifest>

                <attribute name="Class-Path"

                    value="${webapp.name}-dao.jar ${webapp.name}-service.jar"/>

            </manifest>

            <fileset dir="${build.dir}/service/classes" includes="**/*.class"/>

        </jar>

    </target>

 

 

    <!根据POJO生成Struts 的ActionForms,生成的FormBean存放在build/web/gen下

        此任务比较有用,以后可以复用

 -->

    <target name="gen-forms" depends="prepare" unless="webdoclet.uptodate">

       

    </target>

 

 

    <!利用webdoclet生成web.xml;struts-config.xml等web应用程序配置文件

        生成的文件放在build/dudu/WEB-INF下

        此任务比较有用,以后可以复用

-->

    <target name="webdoclet" depends="compile-web"

        unless="webdoclet.unnecessary">

        

    </target>

  

    <!打包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中的文件

此任务比较有用,以后可以复用

-->

    <target name="package-web" depends="compile-web,jsp-2">

       

    </target>

  

    <!所有编译任务都要调用的基本编译,接收其他任务的参数,编译相应的模块

        输入参数:待编译模块名称,编译所需的路径.

        编译后的文件存放于build/moduleName/classes中.

        此任务比较有用,以后可以复用

-->

    <target name="compile-module">

        <!-- Inputs: module, compile.classpath, test.classpath -->

        <echo level="info">Compiling ${module}...</echo>

        <mkdir dir="${build.dir}/${module}/classes"/>

        <mkdir dir="${test.dir}/${module}/classes"/>

        <property name="excludes" value=""/>

        <property name="additional.src.dirs" value=""/>

        <javac srcdir="src/${module};${additional.src.dirs}"

            destdir="${build.dir}/${module}/classes"

            debug="${compile.debug}"

            deprecation="${compile.deprecation}"

            optimize="${compile.optimize}"

            classpathref="http://dev.csdn.net/article/"compile.classpath"/>

    </target>

    <!

将数据库中的数据导出为xml文件

    此任务比较有用,以后可以复用

-->

    <target name="db-export" depends="prepare"

       

    </target>

   

    <!利用dbunit工具,根据metadata/sql/sample-data.xml 填充数据库表记录-->

   <target name="db-load" depends="prepare"

     

    </target>

    <!

根据metadata/sql/${database.type}-create.sql中的sql语句建立数据库和用户

此任务比较有用,以后可以复用

-->

    <target name="db-create" depends="init">

       

    </target>

   

    <!

根据映射hibernate映射文件生成数据库表

此任务比较有用,以后可以复用

-->

    <target name="db-prepare" depends="clean,package-dao"

        description="creates database tables">

        <taskdef name="schemaexport"

            classname="net.sf.hibernate.tool.hbm2ddl.SchemaExportTask">

            <classpath>

                <path refid="xdoclet.classpath"/>

                <path refid="hibernate.classpath"/>

            </classpath>

        </taskdef>

        <antcall target="generate.database.properties"/>

        <schemaexport quiet="no" text="no" drop="no" delimiter=";"

            properties="database.properties" output="create-tables.sql">

            <fileset dir="${build.dir}/dao/gen" includes="**/*.hbm.xml"/>

        </schemaexport>

    </target>

 

 

    <!删除数据库中的表-->

<target name="db-drop" depends="hibernatedoclet">

   

    </target>

       

    <!删除目录-->

    <target name="clean" description="Removes build artifacts">

        <delete dir="${build.dir}"/>

    </target>

 

 

    <!生成JavaDoc,生成文件存放在E:\dudu\build\docs\api -->

    <target name="javadoc" depends="java2html">

       

    </target>

  

    <!

将build/dudu下的文件拷贝到tomcat-home/webapps/dudu/,包括完整的目录和所有的

Jsp文件,但不包括jar文件和WEB-INF/classes中的文件,也不包括web.xml文件和

spring的配置文件这些文件不在build/dudu目录下.

-->

    <target name="deploy-web" depends="stage-web" if="tomcat.home">

       

    </target>

    <!部署web应用,并解包war文件-->

    <target name="deploy" depends="package-web" if="tomcat.home">

        <unwar src="http://dev.csdn.net/article/"${webapp.dist}/${webapp.war}"

            dest="${tomcat.home}/webapps/${webapp.name}"/>

    </target>

    <!删除web应用 -->

    <target name="undeploy" if="tomcat.home">

        <delete file="${tomcat.home}/webapps/${webapp.war}"/>

        <delete dir="${tomcat.home}/webapps/${webapp.name}"/>

    </target>

 

 

    <!将war文件拷贝到tomcat容器-->

    <target name="deploy-war" depends="package-web" if="tomcat.home">

        <copy file="${webapp.dist}/${webapp.war}"

            todir="${tomcat.home}/webapps"/>

    </target>

   </project>

 

 

Ø properties.xml文件分析

该文件定义build.xml所需的属性值。

<!导入lib.properties 文件,其中包括了构建时所需的jar文件定义-->

<property name="lib.dir" location="lib"/>

<property file="${lib.dir}/lib.properties"/>

<!加载build.properties 文件-->

<property file="build.properties"/>

<!加载运行unit tests所需的tomcat配置属性文件 -->

<property file="tomcat.properties"/>

<!-- webapp.name被定义在build.properties,在此做检查看该属性是否被定义-->

<target name="build.properties.missing" unless="webapp.name">

    <fail message="missing build.properties file in current directory or in ${user.home}"/>

</target>

<!如果build.properties 不存在时,定义数据库的基本配置-->

<property name="database.jar" location="${mysql.jar}"/>

<!定义建立数据库时所用到的database URL,它被用在db-create任务中-->

<property name="database.url"

    value="jdbc:mysql://localhost/jpetstore"/>

<!通过build.properties 产生database.properties 文件-->

<!由于build.properties 中的属性被注释了,所以这些属性会从properties.xml中取得-->

<target name="generate.database.properties">

    <propertyfile comment="Hibernate Configuration for JUnit tests"

        file="${basedir}/database.properties">

        <entry key="hibernate.dialect" value="${hibernate.dialect}"/>

       

     </propertyfile>

</target>

<!初始化属性值-->

<property environment="env"/>

<property name="env.COMPUTERNAME" value="${env.HOSTNAME}"/>

<!properties.xml文件的主要工作:定义构建工具需要的Classpath属性-->

<path id="xdoclet.classpath">

   

</path>

<path id="hibernate.classpath">

</path>

<path id="dao.compile.classpath">

   

</path>

<path id="dao.test.classpath">

</path>

<path id="service.compile.classpath">

</path>

<path id="service.test.classpath">

   

</path>

<path id="web.compile.classpath">

   

</path>

<path id="web.test.classpath">

   

</path>

  

Ø app-settings.xml文件分析

该文件定义设置应用程序状态的一些属性值

<property name="encrypt.password" value="true"/>

<property name="encrypt.algorithm" value="SHA"/>

<property name="secure.login" value="false"/>

<property name="secure.application" value="false"/>

<property name="rememberMe.enabled" value="true"/>

 

 

Ø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.mailTo=junk@raibledesigns.com

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



分享到:
评论

相关推荐

    appfuse 配置说明 doc 格式

    AppFuse的配置涉及到多个软件的安装与环境变量的设定,以及项目级别的配置文件调整。通过遵循上述步骤,开发者可以有效地设置AppFuse开发环境,利用其提供的模板和工具,快速启动项目开发。对于不同数据库的支持,...

    appfuse

    AppFuse 可以根据选定的技术栈自动生成项目的目录结构、配置文件以及基本的CRUD操作,从而减少开发初期的设置工作。 描述中提到的是使用AppFuse 2.0版本的情况,这可能是指一个基于早期MVC架构的示例项目。在...

    appfuse学习笔记(一)安装部署

    同时,修改 `src/main/resources` 目录下的配置文件(如 `application.properties`),来定制应用的行为。 **6. 开发与扩展** AppFuse 使用 MVC 模式,其核心组件包括 Controller、Service、DAO 和 Model。通过继承...

    AppFuse

    AppFuse旨在帮助开发者简化项目启动过程中的复杂配置工作,提供了一套标准的目录结构、构建文件以及项目类,使得开发者能够专注于业务逻辑的实现而非基础架构的搭建。它支持多种流行的开源工具和技术框架,如Ant、...

    APPFUSE工具研究.doc

    6. **Struts Menu**:根据配置文件自动生成用户可用的功能菜单,有助于构建用户界面。 为了使用AppFuse 2.0,开发者需要安装以下基础工具: 1. **JDK 1.5或更高版本**:作为Java开发的基础环境。 2. **MySQL数据库...

    appfuse 学习笔记

    为了加速构建过程,可以从 Appfuse 的官方网站下载预先打包好的依赖文件 `appfuse-2.0-rc1-dependencies.zip`,解压后放到 `.m2\repository` 目录下,这样 Maven 就可以直接使用这些文件,而无需下载。 #### 五、...

    Appfuse开发教程

    在Spring配置文件中,我们需要配置Manager类,并设置事务管理,以确保在处理多个数据库操作时保持数据一致性。 4. **运行ManagerTest** 运行ManagerTest以验证Manager层的正确性。 **三、(STRUTS) 创建STRUTS ...

    AppFuse项目研究

    AppFuse 的目标是简化项目的初始化过程,通过预配置和整合这些组件,使开发者可以更专注于业务逻辑的实现。 在项目初始化阶段,AppFuse 使用了一个名为 `StartupListener` 的监听器。这个监听器是 Spring 的 `...

    appfuse默认的css模版

    "使用xml配置文件反射机制来更换模版"这部分说明了AppFuse如何灵活地处理模板切换。通过XML配置文件(如Spring的`applicationContext.xml`),AppFuse使用反射机制来识别和加载不同的CSS模板。开发者可以通过修改...

    MAVEN 搭建APPFUSE

    Maven使用XML格式的POM文件,定义了项目的配置信息,包括构建过程、依赖关系、项目信息等。 接下来,我们要了解AppFuse。AppFuse是一个用于创建Java Web应用程序的模板,它提供了多种框架的集成,比如Spring MVC、...

    xdoclet_appfuse打包

    XDoclet则是一个用于Java源代码注解处理的工具,它能够根据类、接口或字段上的注解自动生成相应的配置文件,如Hibernate的映射文件、EJB的部署描述符等。这样可以避免手动编写这些配置文件,提高了开发效率和代码的...

    AppFuse2.1所需包

    AppFuse 是一个开源项目,旨在简化Java Web应用程序的开发。它提供了一个基础架构,开发者...使用AppFuse可以节省大量时间,因为它已经处理了许多常见的配置和集成问题,让开发者能够更加专注于业务逻辑和用户体验。

    appfuse1.4-architecture

    06年时的appfuse,学习SSH架构的经典入门框架。相对比较老的资料,可以欣赏一下当时的架构,向牛人致敬

    appfuse2学习日记

    — 下面的配置文件,其实是用来存放 appfuse 所需 lib 包的 folder --&gt; &lt;localRepository&gt;D:/appfusedeps/repository ``` - **注意**:默认资源库路径为 `~/.m2/repository`,在 Windows 系统下,建议设置为无空格...

    可直接使用的appfuse项目

    AppFuse是一个集成了众多当前最流行开源框架与工具(包括Hibernate、ibatis、Struts、Spring、DBUnit、Maven、Log4J、Struts Menu、Xdoclet、SiteMesh、OSCache、JUnit、JSTL等(现在还有lucene的,无敌了))于一身的...

    appfuse-tutorial-struts-1.6.zip_appfuse

    这个"appfuse-tutorial-struts-1.6.zip"文件是一个基于Struts 1.6的AppFuse教程,用于指导开发者如何构建一个企业级的人员管理系统。Struts是Apache软件基金会下的一个开源框架,专门用于构建基于MVC(Model-View-...

    玩转appfuse--使用appfuse建设MVC网站

    2. **标准化**:AppFuse遵循最佳实践,如Maven构建系统,使得项目的结构和配置文件保持一致,便于团队协作。 3. **可扩展**:AppFuse允许添加自定义模块,可以轻松集成其他第三方库或框架。 4. **测试驱动**:...

Global site tag (gtag.js) - Google Analytics