<!--
/*
 * $Id$
 *
 * Copyright 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.
 */
-->

<assembly>
  <id>src</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>
  <dependencySets>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <scope>optional</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <scope>compile</scope>
    </dependencySet>
    <dependencySet>
      <outputDirectory>lib</outputDirectory>
      <scope>provided</scope>
    </dependencySet>
  </dependencySets>
  <fileSets>

      <fileSet>
          <directory>src/main/resources</directory>
          <outputDirectory></outputDirectory>
          <includes>
              <include>README*</include>
              <include>LICENSE*</include>
              <include>NOTICE*</include>
              <include>build.xml</include>
          </includes>
      </fileSet>

      <!-- Include the source code in the assembly -->
      <fileSet>
        <directory>../</directory>
        <outputDirectory>src/</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
        <fileSet>
          <directory>../api</directory>
          <outputDirectory>src/api</outputDirectory>
          <includes>
            <include>pom.xml</include>
            <include>src/</include>
          </includes>
        </fileSet>
      <fileSet>
        <directory>../apps</directory>
        <outputDirectory>src/apps</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
      <fileSet>
        <directory>../apps/blank</directory>
        <outputDirectory>src/apps/blank</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
      <fileSet>
        <directory>../apps/portlet</directory>
        <outputDirectory>src/apps/portlet</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
      <fileSet>
        <directory>../apps/showcase</directory>
        <outputDirectory>src/apps/showcase</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
      <fileSet>
        <directory>../assembly</directory>
        <outputDirectory>src/assembly</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
      </fileSet>
      <fileSet>
        <directory>../core</directory>
        <outputDirectory>src/core</outputDirectory>
        <includes>
          <include>pom.xml</include>
          <include>src/</include>
        </includes>
     </fileSet>

  </fileSets>
</assembly>
