<?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>dists</id>
    <formats>
        <format>dir</format>
    </formats>
    <baseDirectory>${project.version}</baseDirectory>
    <files>
        <!-- Standard binary distribution -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-bin.zip</source>
            <destName>axis2-${project.version}-bin.zip</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-bin.zip.md5</source>
            <destName>axis2-${project.version}-bin.zip.md5</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-bin.zip.asc</source>
            <destName>axis2-${project.version}-bin.zip.asc</destName>
        </file>
        <!-- Source distribution -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-src.zip</source>
            <destName>axis2-${project.version}-src.zip</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-src.zip.md5</source>
            <destName>axis2-${project.version}-src.zip.md5</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-src.zip.asc</source>
            <destName>axis2-${project.version}-src.zip.asc</destName>
        </file>
        <!-- WAR distribution -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-war.zip</source>
            <destName>axis2-${project.version}-war.zip</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-war.zip.md5</source>
            <destName>axis2-${project.version}-war.zip.md5</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/distribution/${project.version}/distribution-${project.version}-war.zip.asc</source>
            <destName>axis2-${project.version}-war.zip.asc</destName>
        </file>
        <!-- Documents distribution -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2/${project.version}/axis2-${project.version}-docs.zip</source>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2/${project.version}/axis2-${project.version}-docs.zip.md5</source>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2/${project.version}/axis2-${project.version}-docs.zip.asc</source>
        </file>
        <!-- Eclipse codegen plugin -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.codegen.plugin/${project.version}/axis2.eclipse.codegen.plugin-${project.version}-dist.zip</source>
            <destName>axis2-eclipse-codegen-plugin-${project.version}.zip</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.codegen.plugin/${project.version}/axis2.eclipse.codegen.plugin-${project.version}-dist.zip.md5</source>
            <destName>axis2-eclipse-codegen-plugin-${project.version}.zip.md5</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.codegen.plugin/${project.version}/axis2.eclipse.codegen.plugin-${project.version}-dist.zip.asc</source>
            <destName>axis2-eclipse-codegen-plugin-${project.version}.zip.asc</destName>
        </file>
        <!-- Eclipse service archiver plugin -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.service.plugin/${project.version}/axis2.eclipse.service.plugin-${project.version}-dist.zip</source>
            <destName>axis2-eclipse-service-plugin-${project.version}.zip</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.service.plugin/${project.version}/axis2.eclipse.service.plugin-${project.version}-dist.zip.md5</source>
            <destName>axis2-eclipse-service-plugin-${project.version}.zip.md5</destName>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2.eclipse.service.plugin/${project.version}/axis2.eclipse.service.plugin-${project.version}-dist.zip.asc</source>
            <destName>axis2-eclipse-service-plugin-${project.version}.zip.asc</destName>
        </file>
        <!-- IDEA plugin -->
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2-idea-plugin/${project.version}/axis2-idea-plugin-${project.version}.zip</source>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2-idea-plugin/${project.version}/axis2-idea-plugin-${project.version}.zip.md5</source>
        </file>
        <file>
            <source>${settings.localRepository}/org/apache/axis2/axis2-idea-plugin/${project.version}/axis2-idea-plugin-${project.version}.zip.asc</source>
        </file>
    </files>
</assembly>