要运用好ant来构建项目,我认为理清项目的目录至关重要:
拿myeclipse为例:WebProject和JavaProject在工作空间的目录结构:
一个WebProject下面会有两个属于我们的目录 /src 、/WebRoot,其余的.classpath .project为IDE工具自己生成的配置文件
/src一般存放项目的各种配置文件和java文件
/WebRoot是Web项目的根目录,存放各种jsp、图片、js库、各种jar包、各类资源等
在/WebRoot目录下有一个WEB-INF目录, 里面有一个文件夹为classes,myeclipse会把/src下的java文件编译后生成的class文件放到这里,如果web应用存在依赖的其他项目,则会把其他项目编译后生成的class文件一并放到这里
一个JavaProject下面也会有两个属于我们的目录 /bin、/src
/src和web项目一样存放java源文件,
/bin目录下就存放着编译java后生成的class文件 这里说的目录均指myeclipse工作空间的目录
myeclipse的部署都完成了哪些任务?
1、编译:我们点击Deploy的时候往往都是部署一个WebProject,myeclipse会先编译项目中的java文件,也就是/src里的java文件(如果有的话)、然后检查项目是否存在依赖关系(通过工作空间里的.classpath配置文件,可以去阅读一下这个配置文件)如果web项目存在依赖关系,就会去编译所依赖的项目中的java文件,对于web项目,编译.java生成的.class会放在/WebRoot/WEB-INF/classes/ 下面,对于java项目, 编译.java生成的.class会放在 /bin下面
2、组合:组合就是把web项目所依赖的其他项目下的class文件放在自己的目录下,因为上传到服务器上的只有WebProject,所以myeclipse会把其他项目/bin下面的class文件copy到自己的classes文件夹下
3、上传:把组合后的WebRoot目录下面的所有内容, 上传到服务器上以项目名命名的目录下。
以上这种部署是我们本地的部署, 但就我的项目经验而言,生产机上的项目目录并非这样:
在生产机上, 项目的classes文件夹下不存放任何class文件,只存放和项目有关的配置文件,而web依赖的class文件会打成相应的jar包放在/WEB-INF/lib/下面,
这样管理起来比较方便, 每次程序如果有更新也比较方便。
其实ant脚本就是按照这个思路,手动的按照生产机上的目录完成编译、打包、放置的过程