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

  <dependencySets>
    <!-- Standalone JAR -->
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>org.apache.jena:jena-fuseki-fulljar:jar</include>
      </includes>
      <outputFileNameMapping>fuseki-server.jar</outputFileNameMapping>

    </dependencySet>
    <!-- WAR file -->
    <dependencySet>
      <useProjectArtifact>false</useProjectArtifact>
      <includes>
        <include>org.apache.jena:jena-fuseki-war:war</include>
      </includes>
      <outputFileNameMapping>fuseki.war</outputFileNameMapping>

    </dependencySet>
  </dependencySets>

  <files>
    
    <file>
      <source>dist/LICENSE</source>
      <destName>LICENSE</destName>
    </file>
    <file>
      <source>dist/NOTICE</source>
      <destName>NOTICE</destName>
    </file>
    <file>
      <source>dist/README</source>
      <destName>README</destName>
    </file>
  </files>

  <fileSets>
    <fileSet>
      <outputDirectory></outputDirectory>
      <includes>
        <include>templates/*</include>
        <include>README*</include>
        <include>DEPENDENCIES*</include>
      </includes>
    </fileSet>

    <fileSet>
      <outputDirectory></outputDirectory>
      <includes>
        <include>log4j2.properties</include>
        <include>fuseki</include>
        <include>fuseki.service</include>
        <include>fuseki-server.bat</include>
      </includes>
    </fileSet>

    <fileSet>
       <!-- Exeutables -->
       <outputDirectory></outputDirectory>
       <fileMode>0755</fileMode>
       <includes>
         <include>fuseki-server</include>
         <include>fuseki-backup</include>
         <include>bin/*</include>
       </includes>
     </fileSet>

    <fileSet>
      <directory>../jena-fuseki-webapp/src/main/webapp</directory>
      <outputDirectory>webapp</outputDirectory>
    </fileSet>

  </fileSets>
</assembly>
