<?xml version='1.0' encoding='UTF-8'?>
<!-- 
 Copyright 2019 - 2025 Acosix GmbH

 Licensed 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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>de.acosix.alfresco.keycloak</groupId>
        <artifactId>de.acosix.alfresco.keycloak.parent</artifactId>
        <version>1.2.0-rc1</version>
    </parent>

    <artifactId>de.acosix.alfresco.keycloak.repo</artifactId>
    <name>Acosix Alfresco Keycloak - Repository Module</name>

    <dependencies>

        <dependency>
            <groupId>org.alfresco</groupId>
            <artifactId>alfresco-remote-api</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.keycloak</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        
        <dependency>
			<groupId>jakarta.servlet</groupId>
			<artifactId>jakarta.servlet-api</artifactId>
		</dependency>
		
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-adapter-core</artifactId>
            <exclusions>
                <!-- don't include activation standalone JAR - rely on JDK inclusion since Java 6 -->
                <exclusion>
                    <groupId>com.sun.activation</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <!-- use default from Alfresco Repository -->
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-jakarta-servlet-adapter-spi</artifactId>
            <exclusions>
                <!-- don't include activation standalone JAR - rely on JDK inclusion since Java 6 -->
                <exclusion>
                    <groupId>com.sun.activation</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <!-- use default from Alfresco Repository -->
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-jakarta-servlet-filter-adapter</artifactId>
            <exclusions>
                <!-- don't include activation standalone JAR - rely on JDK inclusion since Java 6 -->
                <exclusion>
                    <groupId>com.sun.activation</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.bouncycastle</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.apache.httpcomponents</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

    </dependencies>

    <build>
        <pluginManagement>
            <plugins>

                <plugin>
                    <artifactId>maven-source-plugin</artifactId>
                    <configuration>
                        <classifier>sources-unshaded</classifier>
                    </configuration>
                </plugin>

                <plugin>
                    <artifactId>maven-shade-plugin</artifactId>
                    <executions>
                        <execution>
                            <phase>package</phase>
                            <goals>
                                <goal>shade</goal>
                            </goals>
                            <configuration>
								<!-- generating using `sources` classifier, which conflicts with the main `sources` -->
                                <createSourcesJar>true</createSourcesJar>
                                <shadeSourcesContent>true</shadeSourcesContent>
                                <keepDependenciesWithProvidedScope>false</keepDependenciesWithProvidedScope>
                                <artifactSet>
                                    <includes>
                                        <include>org.keycloak:*</include>
                                        <include>org.jboss.logging:*</include>
                                    </includes>
                                </artifactSet>
                                <relocations>
                                    <relocation>
                                        <pattern>org.keycloak</pattern>
                                        <shadedPattern>de.acosix.alfresco.keycloak.deps.keycloak</shadedPattern>
                                    </relocation>
                                    <relocation>
                                        <pattern>org.jboss.logging</pattern>
                                        <shadedPattern>de.acosix.alfresco.keycloak.deps.jboss.logging</shadedPattern>
                                    </relocation>
                                </relocations>
                                <transformers>
                                    <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>org.keycloak:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/MANIFEST.MF</exclude>
                                        </excludes>
                                    </filter>
                                    <filter>
                                        <artifact>org.jboss.logging:*</artifact>
                                        <excludes>
                                            <exclude>META-INF/MANIFEST.MF</exclude>
                                        </excludes>
                                    </filter>
                                </filters>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <artifactId>maven-dependency-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>unpack-shaded-jar</id>
                            <phase>package</phase>
                            <goals>
                                <goal>unpack</goal>
                            </goals>
                            <configuration>
                                <artifactItems>
                                    <artifactItem>
                                        <groupId>${project.groupId}</groupId>
                                        <artifactId>${project.artifactId}</artifactId>
                                        <version>${project.version}</version>
                                    </artifactItem>
                                </artifactItems>
                                <outputDirectory>${project.build.outputDirectory}</outputDirectory>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>

                <!-- need to exclude shaded class files from API validation -->
                <plugin>
                    <groupId>de.thetaphi</groupId>
                    <artifactId>forbiddenapis</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>de/acosix/alfresco/keycloak/deps/**/*.class</exclude>
                        </excludes>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>findbugs-maven-plugin</artifactId>
                    <configuration>
                        <onlyAnalyze>de.acosix.alfresco.keycloak.repo.*</onlyAnalyze>
                    </configuration>
                </plugin>

            </plugins>
        </pluginManagement>

        <plugins>

            <plugin>
                <artifactId>maven-shade-plugin</artifactId>
            </plugin>

            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>

            <!-- explicitly listed to be ordered after dependency + shade -->
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
            </plugin>

        </plugins>
    </build>
</project>