<?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.
-->

<!-- 
The distribution.
Assumes jar made and onejar has been assembled.
-->

<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd">

  <id>distribution</id>

  <formats>
    <format>zip</format>
    <format>tar.gz</format>
  </formats>

  <baseDirectory>${project.artifactId}-${project.version}</baseDirectory>

  <files>
    <file>
      <source>${project.build.directory}/${server.jar.name}.jar</source>
      <outputDirectory></outputDirectory>
      <destName>fuseki-server.jar</destName>
    </file>
    <!-- include sources in binary distribution?
    <file>
      <source>${project.artifactId}-${project.version}-sources.jar</source>
      <outputDirectory></outputDirectory>
    </file>
    -->
    <file>
      <source>dist/LICENSE</source>
      <destName>LICENSE</destName>
    </file>
    <file>
      <source>dist/NOTICE</source>
      <destName>NOTICE</destName>
    </file>
  </files>

  <fileSets>
    <fileSet>
      <outputDirectory></outputDirectory>
      <includes>
        <include>README*</include>
        <include>ReleaseNotes.txt</include>
      </includes>
    </fileSet>

    <fileSet>
      <outputDirectory></outputDirectory>
      <includes>
        <include>log4j.properties</include>
        <include>fuseki</include>
        <include>fuseki-server</include>
        <include>fuseki-server.bat</include>
        <include>config*.ttl</include>
        <include>s-*</include>
        <include>pages/*</include>
        <include>Data/*</include>
      </includes>
    </fileSet>
  </fileSets>
</assembly>
