<?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 Jar</name>
  <artifactId>jena-fuseki-server</artifactId>

  <parent>
    <groupId>org.apache.jena</groupId>
    <artifactId>jena-fuseki</artifactId>
    <version>5.0.0-rc1</version>
    <relativePath>../</relativePath>
  </parent> 

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

  <properties>
    <automatic.module.name>org.apache.jena.fuseki.server</automatic.module.name>
  </properties>

  <dependencies>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-fuseki-main</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-text</artifactId>
      <version>5.0.0-rc1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-fuseki-access</artifactId>
      <version>5.0.0-rc1</version>
    </dependency>

    <dependency>
      <groupId>org.apache.jena</groupId>
      <artifactId>jena-cmds</artifactId>
      <version>${project.version}</version>
    </dependency>
    
    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-slf4j2-impl</artifactId>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-api</artifactId>
      <scope>runtime</scope>
    </dependency>

    <dependency>
      <groupId>org.apache.logging.log4j</groupId>
      <artifactId>log4j-core</artifactId>
      <scope>runtime</scope>
    </dependency>

  </dependencies>

  <build>
    <plugins>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <configuration>
          <shadedArtifactAttached>false</shadedArtifactAttached>

          <!-- 
            https://issues.apache.org/jira/browse/LOG4J2-954
            Multiple Log4j2Plugins.dat
            jena-fuseki-server only pick up one Log4j2Plugins.dat (from log4j-core)
            No need to run the transformer to merge them.
            If it becomes necessary, see: https://github.com/edwgiz/maven-shaded-log4j-transformer
          -->

          <transformers>
            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <mainClass>org.apache.jena.fuseki.main.cmds.FusekiMainCmd</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>
