标签:
Tomcat的编译打包采用了传统的ant编译,相对于c里面的makefile文件,ant采用build.xml文件来制定编译规则。
先来尝试看看简单的ROOT工程里的编译规则。
<?xml version="1.0" encoding="UTF-8"?> <!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. --> <project name="ROOT" default="build-main" basedir="."> <!-- ===================== Initialize Property Values =================== --> <!-- See "build.properties.sample" in the top level directory for all --> <!-- property values you must customize for successful building!!! --> <property file="build.properties"/> <property file="../build.properties"/> <property file="../../build.properties"/> <property file="${user.home}/build.properties"/> <property name="build.compiler" value="modern"/> <property name="webapps.build" value="../build"/> <property name="webapps.dist" value="../dist"/> <property name="webapp.name" value="ROOT"/> <!-- =================== BUILD: Create Directories ====================== --> <target name="build-prepare"> <mkdir dir="${webapps.build}"/> <mkdir dir="${webapps.build}/${webapp.name}"/> </target> <!-- ================ BUILD: Copy Static Files ========================== --> <target name="build-static" depends="build-prepare"> <copy todir="${webapps.build}/${webapp.name}"> <fileset dir="."> <exclude name="build.*"/> </fileset> </copy> </target> <!-- ================= BUILD: Compile Server Components ================= --> <target name="build-main" depends="build-static"/> <!-- ==================== BUILD: Rebuild Everything ===================== --> <target name="all" depends="build-clean,build-main" description="Clean and build ROOT webapp"/> <!-- ======================= BUILD: Clean Directory ===================== --> <target name="build-clean"> <delete dir="${webapps.build}/${webapp.name}"/> </target> <!-- ======================= DIST: Create Directories =================== --> <target name="dist-prepare"> <mkdir dir="${webapps.dist}"/> </target> <!-- ======================= DIST: Create Distribution Files ============ --> <target name="dist" depends="build-main,dist-prepare" description="Create ROOT webapp binary distribution"> <jar jarfile="${webapps.dist}/${webapp.name}.war" basedir="${webapps.build}/${webapp.name}" includes="**"/> </target> <!-- ======================= DIST: Clean Directory ====================== --> <target name="dist-clean"> <delete dir="${webapps.dist}/${webapp.name}"/> </target> <!-- ====================== Convenient Synonyms ========================= --> <target name="clean" depends="build-clean,dist-clean" description="Clean build and dist directories"/> </project>
当我们在shell里敲入ant命令后,编译的默认target是build-main
<project name="ROOT" default="build-main" basedir=".">
----------
build-main做了什么?
<!-- ================= BUILD: Compile Server Components ================= -->
<target name="build-main" depends="build-static"/>
所以直接去看build-static就好了。
--------------
<!-- ================ BUILD: Copy Static Files ========================== -->
<target name="build-static" depends="build-prepare">
<copy todir="${webapps.build}/${webapp.name}">
<fileset dir=".">
<exclude name="build.*"/>
</fileset>
</copy>
</target>
看来需要兵分两路,一路去build-prepare,一路去执行自己的脚本,先后顺序。
----------
第一路
<!-- =================== BUILD: Create Directories ====================== -->
<target name="build-prepare">
<mkdir dir="${webapps.build}"/>
<mkdir dir="${webapps.build}/${webapp.name}"/>
</target>
这个简单,创建两个文件夹,没啥好说的。
第二路:
<copy todir="${webapps.build}/${webapp.name}">
<fileset dir=".">
<exclude name="build.*"/>
</fileset>
</copy>
复制当前文件夹,去掉一些名字,然后复制到指定文件夹。
运行ant,查看效果,简单。
这样就完成了ant的入门操作。
查看shell
标签:
原文地址:http://my.oschina.net/qiangzigege/blog/471069