~~
~~ Copyright 2005-2006 The Apache Software Foundation.
~~
~~ Licensed 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.
~~
 
 ------
 Getting Started
 ------
 David H. DeWolf
 ------
 23 Nov 2005
 ------

Getting Started

  The Pluto Ant Tasks have been created to assist those not using
  maven with the assembly, deployment, and publishing of Maven.
  A usage example is shown below:

---------------

  <path id="classes">
    <!--
      Pluto Ant Tasks depend upon the following libraries:
        * pluto-ant-tasks-${version}.jar
        * pluto-util-${version}.jar
        * pluto-descriptor-api-${version}.jar
        * pluto-descriptor-util-${version}.jar
        * commons-logging-1.0.4.jar
        * castor-0.9.6
      -->
    <fileset dir="/path/to/pluto-libraries" includes="**/*.jar"/>
    <fileset dir="/path/to/commons-logging" includes="**/*.jar"/>
    <fileset dir="/path/to/castor" includes="**/*.jar"/>
  </path>

  <typedef name="passemble" classname="org.apache.pluto.ant.AssembleTask"
		  classpathref="classes"/>

   <target name="passemble">
     <passemble 
       webxml="src/config/web.xml" 
       portletxml="src/config/portlet.xml" 
       destfile="src/webapp/WEB-INF/web.xml"/>
   </target>

---------------

