<?xml version="1.0" encoding="UTF-8"?>
<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>

    <artifactId>casa-fips</artifactId>
    <packaging>war</packaging>

    <parent>
        <groupId>io.jans</groupId>
        <artifactId>casa-base</artifactId>
        <version>2.1.0</version>
    </parent>
        
    <dependencies>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>casa-config</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>casa-shared</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- JANS-->
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>agama-model</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-model</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-auth-model</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.jboss.resteasy</groupId>
                    <artifactId>resteasy-jaxb-provider</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>com.fasterxml.jackson.module</groupId>
                    <artifactId>jackson-module-jaxb-annotations</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-auth-persistence-model</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-fido2-client</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-core-service</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-core-cache</artifactId>
            <version>${project.version}</version>
            <exclusions>
                <!-- this dep is giving trouble when sending emails -->
                <exclusion>
                    <groupId>jakarta.activation</groupId>
                    <artifactId>jakarta.activation-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-core-document-store</artifactId>
            <version>${project.version}</version>
            <exclusions>           
                <exclusion>
                    <groupId>org.apache.jackrabbit</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>commons-io</groupId>
                    <artifactId>commons-io</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-hybrid</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-ldap</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-couchbase</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-spanner</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-orm-sql</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- WELD -->
        <dependency>
            <groupId>jakarta.el</groupId>
            <artifactId>jakarta.el-api</artifactId>
            <version>6.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish</groupId>
            <artifactId>jakarta.el</artifactId>
            <version>4.0.2</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.weld.servlet</groupId>
            <artifactId>weld-servlet-shaded</artifactId>
        </dependency>

        <!-- ZKOSS -->
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zul</artifactId>
            <version>${zk.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zkplus</artifactId>
            <version>${zk.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.zk</groupId>
            <artifactId>zhtml</artifactId>
            <version>${zk.version}</version>
        </dependency>
        <dependency>
            <groupId>org.zkoss.common</groupId>
            <artifactId>zel</artifactId>
            <version>${zk.version}</version>
        </dependency>

        <!-- LOGGING -->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>

        <!-- RESTEASY -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-cdi</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-core-spi</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson2-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-servlet-initializer</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-client</artifactId>
            <version>${resteasy.version}</version>
        </dependency>

        <!-- LDAP SDK -->
        <dependency>
            <groupId>com.unboundid</groupId>
            <artifactId>unboundid-ldapsdk</artifactId>
        </dependency>

        <!-- Twilio SDK -->
        <dependency>
            <groupId>com.twilio.sdk</groupId>
            <artifactId>twilio</artifactId>
            <version>11.4.0</version>
        </dependency>

        <!-- OTP -->
        <dependency>
            <groupId>com.lochbridge.oath</groupId>
            <artifactId>oath-otp</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>
        <dependency>
            <groupId>com.lochbridge.oath</groupId>
            <artifactId>oath-otp-keyprovisioning</artifactId>
            <version>0.0.1-SNAPSHOT</version>
        </dependency>

        <!-- PF4J -->
        <dependency>
            <groupId>org.pf4j</groupId>
            <artifactId>pf4j</artifactId>
        </dependency>

        <!-- TIKA -->
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-core</artifactId>
        </dependency>

        <!-- QUARTZ -->
        <dependency>
            <groupId>org.quartz-scheduler</groupId>
            <artifactId>quartz</artifactId>
            <version>2.5.2</version>
        </dependency>

        <!-- JACKSON -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.21</version>
        </dependency>
        
        <dependency>
            <groupId>com.fasterxml</groupId>
            <artifactId>aalto-xml</artifactId>
            <version>1.3.4</version>
        </dependency>

        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>jakarta.mail</artifactId>
            <version>1.6.7</version>
        </dependency>

        <dependency>
            <groupId>com.nimbusds</groupId>
            <artifactId>oauth2-oidc-sdk</artifactId>
            <version>11.37</version>
        </dependency>

        <dependency>
            <groupId>io.jans</groupId>
            <artifactId>jans-doc</artifactId>
            <version>${project.version}</version>
        </dependency>

        <!-- Bouncycastle Fips -->
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bc-fips</artifactId>
            <version>2.1.2</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcpkix-fips</artifactId>
            <version>2.1.10</version>
        </dependency>
        <dependency>
            <groupId>org.bouncycastle</groupId>
            <artifactId>bcmail-fips</artifactId>
            <version>2.1.6</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
        
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>3.2.0</version>
                <executions>
                    <execution>
                        <id>build-casa-fips-war</id>
                        <phase>process-sources</phase>
                        <configuration>
                            <target>
                                <property name="server.webapp.dir" value="${project.basedir}/../app/target/casa-${project.version}"/>
                                <property name="dest.webapp.dir" value="${project.build.directory}/${project.artifactId}-${project.version}"/>
                                <delete dir="${dest.webapp.dir}"/>
                                <mkdir dir="${dest.webapp.dir}"/>
                                <copy todir="${dest.webapp.dir}" preservelastmodified="true" overwrite="true">
                                    <fileset dir="${server.webapp.dir}" includes="**/*"/>
                                </copy>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <artifactId>maven-war-plugin</artifactId>
                <groupId>org.apache.maven.plugins</groupId>
                <version>3.5.1</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                    <archive>
                        <manifest>
                            <addDefaultImplementationEntries>true</addDefaultImplementationEntries>
                        </manifest>
                        <manifestEntries>
                            <Implementation-Build>${buildNumber}</Implementation-Build>
                        </manifestEntries>
                    </archive>
                    <packagingExcludes>
                        WEB-INF/lib/bcpkix-jdk*.jar,
                        WEB-INF/lib/bcprov-jdk*.jar,
                        WEB-INF/lib/bcutil-jdk*.jar,
                        WEB-INF/lib/bcmail-jdk*.jar
                    </packagingExcludes>
                </configuration>
            </plugin>

            <!-- Build number plugin -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>buildnumber-maven-plugin</artifactId>
                <version>3.3.0</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>create</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <doCheck>false</doCheck>
                    <doUpdate>false</doUpdate>
                </configuration>
            </plugin>

            <!-- Remove beans.xml from jans-core-service and jans-core-cache jars. -->
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>truezip-maven-plugin</artifactId>
                <version>1.2</version>
                <executions>
                    <execution>
                        <id>remove-beans-file-jans-core-service</id>
                        <phase>package</phase>
                        <goals>
                            <goal>remove</goal>
                        </goals>
                        <configuration>
                            <fileset>
                                <directory>${project.build.directory}/${project.build.finalName}.war/WEB-INF/lib/jans-core-service-${project.version}.jar</directory>
                                <includes>
                                    <include>META-INF/beans.xml</include>
                                </includes>
                            </fileset>
                        </configuration>
                    </execution>
                    <execution>
                        <id>remove-beans-file-jans-core-cache</id>
                        <phase>package</phase>
                        <goals>
                            <goal>remove</goal>
                        </goals>
                        <configuration>
                            <fileset>
                                <directory>${project.build.directory}/${project.build.finalName}.war/WEB-INF/lib/jans-core-cache-${project.version}.jar</directory>
                                <includes>
                                    <include>META-INF/beans.xml</include>
                                </includes>
                            </fileset>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <compilerArgument>-Amodule=Casa</compilerArgument>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>