<!--
  ~ 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>bin</id>
    <includeBaseDirectory>true</includeBaseDirectory> 
    <baseDirectory>axis2-${version}</baseDirectory>
    <formats>
        <!--<format>tar.gz</format>  //uncomment,if tar.gz archive needed-->
        <format>zip</format>
    </formats>

    <fileSets>
        <!--********************** creating the repository ********************** -->
        <fileSet>
            <directory>target/tmp-repository</directory>
            <outputDirectory>repository</outputDirectory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileSet>

        <!--********************** creating the bin ********************** -->
        <!-- Copy bin scripts -->
        <fileSet>
            <directory>../../modules/tool/script</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>*.bat</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>../../modules/tool/script</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>*.sh</include>
            </includes>
            <fileMode>755</fileMode>
        </fileSet>

        <!--********************** creating the conf ********************** -->
        <!-- copy axis2.xml and axis2.policy into conf directoy -->
        <fileSet>
            <directory>../../modules/kernel/conf</directory>
            <outputDirectory>conf</outputDirectory>
            <includes>
                <include>axis2.xml</include>
            </includes>
        </fileSet>
        <fileSet>
            <directory>src/main/files/conf</directory>
            <outputDirectory>conf</outputDirectory>
        </fileSet>

        <!--********************** creating the webappp ********************** -->
        <!-- copy the build.xml into webapp directory -->
        <fileSet>
            <directory>../../modules/webapp/scripts</directory>
            <outputDirectory>webapp</outputDirectory>
            <includes>
                <include>build.xml</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>../../legal</directory>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>**/*.txt</include>
            </includes>
        </fileSet>

        <!-- TODO: Need to rename this file to INSTALL.txt -->
        <fileSet>
            <directory>../../release-docs/readme-files</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>README-std-bin.txt</include>
                <include>installation-std-bin.txt</include>
            </includes>
            <filtered>true</filtered>
        </fileSet>

        <fileSet>
            <directory>../../modules/kernel/conf</directory>
            <outputDirectory>conf</outputDirectory>
            <includes>
                <include>log4j.properties</include>
                <include>commons-logging.properties</include>
            </includes>
        </fileSet>

        <fileSet>
            <directory>../..</directory>
            <outputDirectory></outputDirectory>
            <includes>
                <include>LICENSE.txt</include>
                <include>NOTICE.txt</include>
                <include>README.txt</include>
                <include>release-notes.html</include>
            </includes>
            <filtered>true</filtered>
        </fileSet>

        <!-- copy samples -->
        <fileSet>
            <directory>../../modules/samples</directory>
            <outputDirectory>samples</outputDirectory>
            <includes>
                <include>databinding/**/*</include>
                <include>faulthandling/**/*</include>
                <include>jaxws-calculator/**/*</include>
                <include>jaxws-addressbook/**/*</include>
                <include>jaxws-samples/**/*</include>
                <include>java_first_jaxws/**/*</include>
                <include>jaxws-interop/**/*</include>
                <include>jaxws-dynamic/**/*</include>
                <include>jaxws-version/**/*</include>
                <include>mtom/**/*</include>
                <include>pojo/**/*</include>
                <include>pojoguide/**/*</include>
                <include>pojoguidespring/**/*</include>
                <include>quickstart/**/*</include>
                <include>quickstartadb/**/*</include>
                <include>quickstartaxiom/**/*</include>
                <include>quickstartjibx/**/*</include>
                <include>quickstartxmlbeans/**/*</include>
                <include>servicelifecycle/**/*</include>
                <include>soapwithattachments/**/*</include>
                <include>userguide/**/*</include>
                <include>version/**/*</include>
                <include>wsdl/**/*</include>
                <include>yahoojsonsearch/**/*</include>
                <include>yahoorestsearch/**/*</include>            
            </includes>
            <excludes>
                <exclude>**/*.iml</exclude>
            </excludes>
        </fileSet>
    </fileSets>
    
    <dependencySets>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib</outputDirectory>
            <includes>
                <include>*:*:jar</include>
            </includes>
            <excludes>
                 <exclude>org.apache.geronimo.specs:geronimo-activation_1.1_spec:jar</exclude>
                 <exclude>org.apache.geronimo.specs:geronimo-javamail_1.4_spec:jar</exclude>
                 <exclude>org.springframework:spring-beans:jar</exclude>
                 <exclude>org.springframework:spring-context:jar</exclude>
                 <exclude>org.springframework:spring-core:jar</exclude>
                 <exclude>org.springframework:spring-web:jar</exclude>
                 <exclude>org.apache.ant:ant:jar</exclude>
                 <exclude>org.apache.ant:ant-launcher:jar</exclude>
                 <exclude>aopalliance:aopalliance:jar</exclude>
                 <exclude>bsf:bsf:jar</exclude>
                 <exclude>com.sun.xml.fastinfoset:FastInfoset:jar</exclude>
                 <exclude>rhino:js:jar</exclude>
                 <exclude>javax.servlet:servlet-api</exclude>
            </excludes>
        </dependencySet>
        <dependencySet>
            <!-- This is necessary to use JAX-WS 2.2 on Java 1.6 -->
            <useProjectArtifact>false</useProjectArtifact>
            <outputDirectory>lib/endorsed</outputDirectory>
            <includes>
                <include>javax.xml.bind:jaxb-api:jar</include>
                <include>org.apache.geronimo.specs:geronimo-saaj_1.3_spec:jar</include>
                <include>org.apache.geronimo.specs:geronimo-jaxws_2.2_spec:jar</include>
            </includes>
        </dependencySet>
        <dependencySet>
            <useProjectArtifact>false</useProjectArtifact>
            <includes>
                <include>org.apache.axis2:axis2-webapp</include>
            </includes>
            <unpack>true</unpack>
            <outputDirectory>webapp</outputDirectory>
            <unpackOptions>
                <includes>
                    <include>WEB-INF/classes/**/*</include>
                    <include>WEB-INF/web.xml</include>
                    <include>axis2-web/**/*</include>
                </includes>
            </unpackOptions>
        </dependencySet>
    </dependencySets>
</assembly>
