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