<?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 xmlns="http://maven.apache.org/ASSEMBLY/2.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.1.0 http://maven.apache.org/xsd/assembly-2.1.0.xsd">
  <id>source</id>
  <formats>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>
  <files>
    <file>
      <source>src/assembly/shared/mvnwDebug.cmd</source>
      <outputDirectory>.</outputDirectory>
      <lineEnding>dos</lineEnding>
    </file>
    <file>
      <source>src/assembly/shared/mvnwDebug</source>
      <outputDirectory>.</outputDirectory>
      <lineEnding>unix</lineEnding>
      <fileMode>0755</fileMode>
    </file>
    <file>
      <sources>
        <source>src/assembly/maven/validate.cmd</source>
        <source>src/assembly/maven/init.cmd</source>
        <source>src/assembly/shared/mvnwlauncher.cmd</source>
        <source>src/assembly/source/download.cmd</source>
        <source>src/assembly/maven/run.cmd</source>
      </sources>
      <destName>mvnw.cmd</destName>
      <outputDirectory>.</outputDirectory>
      <lineEnding>dos</lineEnding>
      <filtered>true</filtered>
    </file>
    <file>
      <sources>
        <source>src/assembly/maven/validate</source>
        <source>src/assembly/maven/init</source>
        <source>src/assembly/shared/mvnwlauncher</source>
        <source>src/assembly/source/download</source>
        <source>src/assembly/maven/run</source>
      </sources>
      <destName>mvnw</destName>
      <outputDirectory>.</outputDirectory>
      <lineEnding>unix</lineEnding>
      <fileMode>0755</fileMode>
      <filtered>true</filtered>
    </file>
  </files>
  <fileSets>
    <fileSet>
      <directory>src/assembly/shared/mvn</directory>
      <outputDirectory>.mvn</outputDirectory>
      <filtered>true</filtered>
    </fileSet>
    <fileSet>
      <directory>src/assembly/source/mvn</directory>
      <outputDirectory>.mvn</outputDirectory>
      <filtered>true</filtered>
    </fileSet>
  </fileSets>
</assembly>
