<?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.
-->
<assembly>
    <id></id> <!-- intentionally left blank -> http://jira.codehaus.org/browse/MASSEMBLY-301 -->
    <formats>
        <format>zip</format>
    </formats>
    <fileSets>


      <!-- Copy license and other files from root -->
      <fileSet>
          <directory>..</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
              <include>README.txt</include>
              <include>RELEASE*.txt</include>
          </includes>
          <lineEnding>dos</lineEnding>
      </fileSet>

      <!-- Copy over everything that needs to get dos line endings -->
      <fileSet>
          <directory>src/main/distribution/text</directory>
          <outputDirectory>/</outputDirectory>
          <lineEnding>dos</lineEnding>
      </fileSet>        
      <fileSet>
          <directory>src/main/distribution/windows-text</directory>
          <outputDirectory>/</outputDirectory>
          <lineEnding>dos</lineEnding>
      </fileSet>        
      <fileSet>
          <directory>target/classes/etc</directory>
          <outputDirectory>/etc/</outputDirectory>
          <lineEnding>dos</lineEnding>
      </fileSet>

      <!-- Copy over files that should not get the line endings converted -->
      <fileSet>
          <directory>src/main/distribution/binary</directory>
          <outputDirectory>/</outputDirectory>
      </fileSet>

      <!-- Copy over the files that should not get the line endings converted but need to be chmod to 755 -->
      <fileSet>
          <directory>src/main/distribution/windows-binary</directory>
          <outputDirectory>/</outputDirectory>
      </fileSet>
      
      <!-- Copy over jar files -->
      <fileSet>
          <directory>target/dependencies</directory>
          <outputDirectory>/lib/</outputDirectory>
      </fileSet>

    </fileSets>

    <files>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
            <outputDirectory>/</outputDirectory>
            <destName>LICENSE.txt</destName>
            <fileMode>0644</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
            <outputDirectory>/</outputDirectory>
            <destName>NOTICE.txt</destName>
            <fileMode>0644</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
        <file>
            <source>${basedir}/target/classes/features.xml</source>
            <outputDirectory>/system/org/apache/servicemix/kernel/apache-servicemix-kernel/${version}</outputDirectory>
            <destName>apache-servicemix-kernel-${version}-features.xml</destName>
            <fileMode>0644</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
    </files>

    <dependencySets>

        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/felix/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.felix:org.osgi.compendium</include>
                <include>org.apache.felix:org.apache.felix.configadmin</include>
                <include>org.apache.felix:org.apache.felix.bundlerepository</include>
                <include>org.apache.felix:org.apache.felix.prefs</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/ops4j/pax/logging/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.ops4j.pax.logging:pax-logging-api</include>
                <include>org.ops4j.pax.logging:pax-logging-service</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/ops4j/pax/url/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.ops4j.pax.url:pax-url-mvn</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/springframework/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.springframework:spring-aop</include>
                <include>org.springframework:spring-beans</include>
                <include>org.springframework:spring-context</include>
                <include>org.springframework:spring-core</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/springframework/osgi/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.springframework.osgi:spring-osgi-core</include>
                <include>org.springframework.osgi:spring-osgi-extender</include>
                <include>org.springframework.osgi:spring-osgi-io</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/geronimo/specs/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.geronimo.specs:geronimo-servlet_2.5_spec</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/servicemix/bundles/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.ant</include>
                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.aopalliance</include>
                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.cglib</include>
                <include>org.apache.servicemix.bundles:org.apache.servicemix.bundles.mina</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/servicemix/kernel/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.filemonitor</include>
                <include>org.apache.servicemix.kernel:org.apache.servicemix.kernel.spring</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/servicemix/kernel/gshell/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.core</include>
                <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.osgi</include>
                <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.log</include>
                <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.obr</include>
                <include>org.apache.servicemix.kernel.gshell:org.apache.servicemix.kernel.gshell.features</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <outputDirectory>/system</outputDirectory>
            <unpack>false</unpack>
            <outputFileNameMapping>org/apache/servicemix/kernel/jaas/${artifact.artifactId}/${artifact.baseVersion}/${artifact.artifactId}-${artifact.baseVersion}${dashClassifier?}.${artifact.extension}</outputFileNameMapping>
            <includes>
                <include>org.apache.servicemix.kernel.jaas:org.apache.servicemix.kernel.jaas.config</include>
                <include>org.apache.servicemix.kernel.jaas:org.apache.servicemix.kernel.jaas.keystore</include>
            </includes>
        </dependencySet>

    </dependencySets>

</assembly>
