论坛首页 入门技术论坛

[转]使用Ant进行项目构建之二:规划我们的项目目录结构

浏览 1743 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-06-02  

前面已经把ant的基本运行环境搭建好了,在接下来的工作中,将一步一步的开始构建我们的项目。

选择项目目录结构:

一个项目开始的时候,选择一个合适的项目目录结构,是一件很重要的事情,可能你会很习惯由IDE自动创建的目录结构,如Elcipse或JB,但有些时候,这样的目录结构可能并不是最好的,所以,在项目开始的时候,我们要对我们的目录结构进行合理的规划,这样,我们的项目在向前推动的过程中,才会井然有序。我个人比较推崇按项目模块来划分目录结构,这样整个项目不管进行到什么时候,也不管项目中有多少类,都可以很方便的找到你想要的资源。当然,对于一个项目来说,都有一个核心支撑模块来构成整个项目的骨架,那我们就从这个骨架开始,来构建我们的项目。

1.在你工作的任意硬盘上创建目录:x:/project,并在x:/project 下新建四个xml文件,文件名分别命名为:build-basic-environment.xml,build-common-java.xml,build.xml.build-common.xml

2.其中,builde-basic-environment.xml为进行系统构建的基础环境变量的设置,当然,可能有些ant用户喜欢使用.properties文件进行这些变量的描述,但我们个更喜欢以标准的xml格式来描述,并推荐使用这一方式。本文件的基本形式如下:

<!---->

<!---->
xml 代码
  1. <!---->xml version="1.0" encoding="UTF-8"?>  
  2. <project name="basic-environment" basedir=".">  
  3.     <property name="project.name" value="myproject">  
  4.     property>  
  5.     <property environment="env" />  
  6.     <property name="template.dir" value="${basedir}/template"/>  
  7. project>  

<project basedir="." name="basic-environment"></project>

当然 ,以后我们的全局信息,可以不断的添加到本文件中。

3.build-common.xml,在本构建文件中,书写与模块相关的基础信息,虽然这些都是一些很简单的基础信息,但对整个项目来说,却像骨架一样。文件如下:

<!---->
<project name="common"></project>

<!---->
<project name="common"></project>

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="common">  
  3.   
  4.     <property name="project.dir" value=".."></property>  
  5.     <property name="project.version" value="1.0.0"></property>  
  6.     <property name="packages" value="com.myproject"></property>  
  7. <!-- ================================================================ -->  
  8.     <property name="build.dir" value="${basedir}/build" />  
  9.     <property name="dist.dir" value="${basedir}/dist" />  
  10.     <property name="bak.dir" value="${basedir}/bak" />  
  11.     <property name="doc.dir" value="${basedir}/doc" />  
  12.     <property name="class.dir" value="${build.dir}/classes"></property>  
  13.     <property name="javac.debug" value="true"></property>  
  14.     <property name="src.dir" value="${basedir}/src"></property>  
  15.   
  16.   
  17.     <property name="test.dir" value="${basedir}/test"></property>  
  18.     <property name="test.data.dir" value="${test.dir}/data"></property>  
  19.     <property name="test.reports.dir" value="${test.dir}/reports">  
  20.     </property>  
  21.     <property name="test.src" value="${test.dir}/src"></property>  
  22.     <property name="build.test.dir" value="${build.dir}/test">  
  23.     </property>  
  24.     <property name="build.web.dir" value="${build.dir}/web"></property>  
  25.     <property name="WebRoot.dir" value="${basedir}/WebRoot"></property>  
  26.     <property name="generator.dir" value="${basedir}/generator">  
  27.     </property>  
  28.     <property name="metada.dir" value="${basedir}/metada"></property>  
  29.        
  30.     <property name="lib.dir" value="${project.dir}/lib" />  
  31.        
  32.     <!-- =================================    
  33.         target:  系统路径                    
  34.         =================================   -->  
  35.     <path id="project.class.path">  
  36.         <pathelement path="${classpath}" />  
  37.         <fileset dir="${lib.dir}">  
  38.             <include name="*.jar" />  
  39.         </fileset>  
  40.     </path>  
  41.     <!-- =================================    
  42.         target:  测试路径                    
  43.         =================================   -->  
  44.     <path id="test.class.path">  
  45.         <path refid="project.class.path"></path>  
  46.         <pathelement path="${lib.dir}/junit.jar" />  
  47.         <pathelement path="${build.test.dir}" />  
  48.         <pathelement path="${class.dir}" />  
  49.     </path>  
  50. </project>  





4.接下来,我们来看build-common-java.xml文件,在这个文件里面,我们主要进行编译,打包,测试,发布等工作。今天发布的只是与项目目录结构构建相关的脚本。

<!----><mkdir></mkdir>
<!----> 

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="build-common-java">  
  3.     <import file="build-common.xml" />  
  4.     <target name="init" description="系统构建目录初始化">  
  5.         <mkdir dir="${build.dir}" />  
  6.         <mkdir dir="${dist.dir}" />  
  7.         <mkdir dir="${bak.dir}" />  
  8.         <mkdir dir="${src.dir}">  
  9.         </mkdir>  
  10.         <mkdir dir="${doc.dir}" />  
  11.         <mkdir dir="${doc.dir}/source" />  
  12.         <mkdir dir="${doc.dir}/api" />  
  13.         <mkdir dir="${class.dir}" />  
  14.         <mkdir dir="${test.dir}" />  
  15.         <mkdir dir="${test.data.dir}" />  
  16.         <mkdir dir="${test.reports.dir}" />  
  17.         <mkdir dir="${test.src}" />  
  18.         <mkdir dir="${build.test.dir}" />  
  19.         <mkdir dir="${WebRoot.dir}" />  
  20.         <mkdir dir="${generator.dir}" />  
  21.         <mkdir dir="${metada.dir}" />  
  22.     </target>  
  23. </project>  


5.下面,我们在x:/project目录下新建文件夹template,并在本文件夹下新增以下结构的xml文件,名为:build.xml

<!---->
<project basedir="." name="modeltemplate"></project>

<!---->

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="modeltemplate" basedir=".">  
  3.     <property name="component.name" value="modeltemplate"></property>  
  4. <import file="../build-common-java.xml" />  
  5.   
  6. </project>  



  <property name="component.name" value="modeltemplate"></property>

6.下面我们开始书写x:/project/build.xml脚本:

<!---->

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <project name="zaodian" basedir=".">  
  3.     <import file="build-basic-environment.xml" />  
  4.   
  5.     <!-- - - - - - - - - - - - - - - - - -    
  6.           target: useage                         
  7.          - - - - - - - - - - - - - - - - - -->  
  8.     <target name="help">  
  9.         <echo message="/**-------------------------------------------------------------------------" />  
  10.         <echo message="* 项目名称:${project.name} 网络支持系统" />  
  11.         <echo message="* 作者:宋海鹏" />  
  12.         <echo message="* 与作者联系:E_Mail:ecsun@sohu.com,QQ:82676683" />  
  13.         <echo message="----------------------------------------------------------------------------*/" />  
  14.   
  15.   
  16.         <echo message="|---> 系统构建任务列表" />  
  17.         <echo message="|-  --> [ init ]               --> 系统构建初始化" />  
  18.            
  19.         <echo message="------------------------------------- END --------------------------------------" />  
  20.     </target>  
  21.     <!-- - - - - - - - - - - - - - - - - -    
  22.               target: init   系统初始化                 
  23.              - - - - - - - - - - - - - - - - - -->  
  24.     <target name="init">  
  25.            
  26.     </target>  
  27.        
  28.     <!-- - - - - - - - - - - - - - - - - -    
  29.           target: create-new-model 创建新模?          
  30.          - - - - - - - - - - - - - - - - - -->  
  31.     <target name="create-new-model">  
  32.         <echo level="info">  
  33. +-------------------------------------------------------------+   
  34. |    -- 欢迎使用${project.name}新模块生成向?!  --                |   
  35. |                                                             |   
  36. |      请正确回答以下问题,这些问题对自对生成新模块非常关键             |   
  37. +-------------------------------------------------------------+   
  38.             </echo>  
  39.         <input message="您希望新模块使用什么名字[model.name]?(注:模块名只能为英文)" addProperty="model.name">  
  40.         </input>  
  41.         <mkdir dir="${basedir}/${model.name}" />  
  42.         <copy todir="${basedir}/${model.name}">  
  43.             <fileset dir="${template.dir}/">  
  44.                 <include name="build.xml" />  
  45.             </fileset>  
  46.         </copy>  
  47.         <ant dir="${basedir}/${model.name}" target="init">  
  48.         </ant>  
  49.         <replaceregexp flags="g">  
  50.             <regexp pattern="modeltemplate" />  
  51.             <substitution expression="${model.name}" />  
  52.             <fileset dir="${basedir}/${model.name}">  
  53.                 <include name="build.xml" />  
  54.             </fileset>  
  55.         </replaceregexp>  
  56.     </target>  
  57.        
  58. </project>  


<project basedir="." name="zaodian"></project>

<target name="create-new-model"></target>

好了,现在我们所有的工作做完了,在目录x:/project键入命令:

ant create-new-model,输入你想要使用的模块名,看会出现什么结果?下载附件试一试?


 

  • article.rar (2.4 KB)
  • 描述: 本附件是目前进行自构建的基础目录结构。
  • 下载次数: 67
    论坛首页 入门技术版

    跳转论坛:
    Global site tag (gtag.js) - Google Analytics