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

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <name>Apache Jena - Fuseki Server Standalone Jar</name>
  <artifactId>jena-fuseki-fulljar</artifactId>

  <parent>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena-fuseki</artifactId>
    <version>3.17.0-SNAPSHOT</version>
    <relativePath>../</relativePath>
  </parent> 

  <packaging>jar</packaging>
  <description>Fuseki server - combined jar with built-in webserver.</description>

  <dependencies>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-fuseki-webapp</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.apache.logging.log4j</groupId>
          <artifactId>log4j-web</artifactId>
        </exclusion>
      </exclusions>
    </dependency>

    <!-- Illustration: include the Jena Text ElasticSearch code
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-text-es</artifactId>
      <version>${project.version}</version>
      <exclusions>
        <exclusion>
          <groupId>org.hdrhistogram</groupId>
          <artifactId>HdrHistogram</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    -->

    <!-- Include jena-cmds in the server jar so 
         "java -cp server-jar jena.cmd ..." works
         as a convenience in deployments.
    -->
    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-cmds</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j-impl</artifactId>
    </dependency>

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <configuration>
          <shadedArtifactAttached>false</shadedArtifactAttached>
          <transformers>
            <!--
                 https://issues.apache.org/jira/browse/LOG4J2-954 - fixed at 3.0.0
                 Multiple Log4j2Plugins.dat
                 jena-fuseki-fulljar picks up one Log4j2Plugins.dat from 
                 org.apache.logging.log4j:log4j-core and, unless excluded,
                 one via jena-fuseki-webapp which has org.apache.logging.log4j:log4j-core-web
                 If it becomes necessary, see: https://github.com/edwgiz/maven-shaded-log4j-transformer
            -->
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass>org.apache.jena.fuseki.cmd.FusekiCmd</mainClass>
              <!-- https://issues.apache.org/jira/browse/LOG4J2-2537  -->
              <manifestEntries>
                <Multi-Release>true</Multi-Release>
              </manifestEntries>
            </transformer>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
            <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheLicenseResourceTransformer" />
            <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
              <addHeader>false</addHeader>
            </transformer>
          </transformers>
          <filters>
            <filter>
              <artifact>*:*</artifact>
              <excludes>
                <!-- Some jars are signed but shading breaks that.
                     Don't include signing files.
                -->
                <exclude>META-INF/*.SF</exclude>
                <exclude>META-INF/*.DSA</exclude>
                <exclude>META-INF/*.RSA</exclude>
              </excludes>
            </filter>
          </filters>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <!--<phase /><!- - Switch off -->
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>
  
</project>
