<?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:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
    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>

    <properties>
        <maven.build.timestamp.format>yyyy-MM-dd-HH-mm</maven.build.timestamp.format>
        <timestamp>${maven.build.timestamp}</timestamp>
    </properties>

    <name>NLPCraft</name>
    <artifactId>nlpcraft</artifactId>

    <parent>
        <groupId>org.apache.nlpcraft</groupId>
        <artifactId>nlpcraft-parent</artifactId>
        <version>0.7.0</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <dependencies>
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-api</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-impl</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-exporter-trace-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-exporter-trace-jaeger</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-exporter-stats-prometheus</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-exporter-trace-stackdriver</artifactId>
        </dependency>
        <dependency>
            <groupId>io.opencensus</groupId>
            <artifactId>opencensus-exporter-stats-stackdriver</artifactId>
        </dependency>
        <dependency>
            <groupId>io.prometheus</groupId>
            <artifactId>simpleclient_httpserver</artifactId>
        </dependency>
        <dependency>
            <groupId>org.antlr</groupId>
            <artifactId>antlr4-runtime</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-text</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-math3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-slf4j-impl</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe.scala-logging</groupId>
            <artifactId>scala-logging_${scala.base}</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.opennlp</groupId>
            <artifactId>opennlp-tools</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
        </dependency>
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
        </dependency>
        <dependency>
            <groupId>org.scala-lang</groupId>
            <artifactId>scala-library</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>com.jsuereth</groupId>
            <artifactId>scala-arm_${scala.base}</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.tika</groupId>
            <artifactId>tika-langdetect</artifactId>
            <!-- Ignite contains 13 version but it contains 12. -->
            <exclusions>
                <exclusion>
                    <groupId>com.intellij</groupId>
                    <artifactId>annotations</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
        </dependency>
        <dependency>
            <groupId>commons-validator</groupId>
            <artifactId>commons-validator</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe</groupId>
            <artifactId>config</artifactId>
        </dependency>
        <dependency>
            <groupId>net.liftweb</groupId>
            <artifactId>lift-json_${scala.base}</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-spring</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-indexing</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.ignite</groupId>
            <artifactId>ignite-log4j2</artifactId>
        </dependency>
        <dependency>
            <groupId>com.mchange</groupId>
            <artifactId>c3p0</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sf.extjwnl</groupId>
            <artifactId>extjwnl</artifactId>
        </dependency>
        <dependency>
            <groupId>net.sf.extjwnl</groupId>
            <artifactId>extjwnl-data-wn31</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-http_2.12</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-stream_2.12</artifactId>
        </dependency>
        <dependency>
            <groupId>com.typesafe.akka</groupId>
            <artifactId>akka-http-spray-json_2.12</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.dataformat</groupId>
            <artifactId>jackson-dataformat-yaml</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-scala_2.12</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.cloud</groupId>
            <artifactId>google-cloud-language</artifactId>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
        </dependency>
        <dependency>
            <groupId>io.github.java-diff-utils</groupId>
            <artifactId>java-diff-utils</artifactId>
        </dependency>
        <dependency>
            <groupId>com.github.vertical-blank</groupId>
            <artifactId>sql-formatter</artifactId>
        </dependency>

        <!-- Test dependencies. -->
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.scalatest</groupId>
            <artifactId>scalatest_${scala.base}</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.jayway.jsonpath</groupId>
            <artifactId>json-path</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/scala</directory>
                <includes>
                    <include>**/*.txt</include>
                    <include>**/*.json</include>
                    <include>**/*.yaml</include>
                    <include>**/*.sql</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>com.bazaarvoice.maven.plugins</groupId>
                <artifactId>process-exec-maven-plugin</artifactId>
                <version>${maven.bazaarvoice.plugin.ver}</version>
                <executions>
                    <execution>
                        <id>pre-integration-test</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>start</goal>
                        </goals>
                        <configuration>
                            <name>server</name>
                            <healthcheckUrl>http://localhost:8081/api/v1/health</healthcheckUrl>
                            <waitAfterLaunch>180</waitAfterLaunch>
                            <processLogFile>${project.build.directory}/server-${timestamp}.log</processLogFile>
                            <arguments>
                                <argument>java</argument>
                                <argument>-Xmx4G</argument>
                                <argument>-Xms4G</argument>
                                <argument>--add-exports=java.base/jdk.internal.misc=ALL-UNNAMED</argument>
                                <argument>--add-exports=java.base/sun.nio.ch=ALL-UNNAMED</argument>
                                <argument>--add-exports=java.management/com.sun.jmx.mbeanserver=ALL-UNNAMED</argument>
                                <argument>--add-exports=jdk.internal.jvmstat/sun.jvmstat.monitor=ALL-UNNAMED</argument>
                                <argument>--add-exports=java.base/sun.reflect.generics.reflectiveObjects=ALL-UNNAMED</argument>
                                <argument>--add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED</argument>
                                <argument>--illegal-access=permit</argument>
                                <argument>-DNLPCRAFT_ANSI_COLOR_DISABLED=true</argument>
                                <argument>-Djdk.tls.client.protocols=TLSv1.2</argument>
                                <argument>-jar</argument>
                                <argument>${project.build.directory}/${nlpcraft.all.deps.jar}</argument>
                                <argument>-server</argument>
                            </arguments>
                        </configuration>
                    </execution>
                    <execution>
                        <id>stop-all</id>
                        <phase>post-integration-test</phase>
                        <goals>
                            <goal>stop-all</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${maven.surefire.plugin.ver}</version>
                <configuration>
                    <!-- Skips all tests on phase `test`. -->
                    <skip>true</skip>
                    <systemProperties>
                        <property>
                            <name>NLPCRAFT_TEST_MAVEN_ENV</name>
                            <value>true</value>
                        </property>
                    </systemProperties>
                </configuration>
                <executions>
                    <!-- All tests are defined as integration. -->
                    <execution>
                        <id>integration-tests</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <skip>false</skip>
                            <!-- Mandatory part. -->
                            <includes>
                                <include>**/*.*</include>
                            </includes>
                            <excludes>
                                <exclude>**/NCConversationSpec.*</exclude>
                                <exclude>**/NCDateGeneratorSpec.*</exclude>
                            </excludes>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven.javadoc.plugin.ver}</version>
                <configuration>
                    <additionalOptions>--allow-script-in-comments</additionalOptions>
                    <javadocDirectory>${project.basedir}/../javadoc</javadocDirectory>
                    <doclint>all</doclint>
                    <docfilessubdirs>true</docfilessubdirs>
                    <encoding>UTF-8</encoding>
                    <failOnError>true</failOnError>
                    <failOnWarnings>true</failOnWarnings>
                    <sourcepath>${project.basedir}/src/main/scala</sourcepath>
                    <stylesheetfile>${project.parent.basedir}/javadoc/stylesheet.css</stylesheetfile>
                    <bottom>
                        <![CDATA[
                            <center>
                                <br/>
                                <span style="font-size: larger">Copyright &#169; {currentYear} Apache Software Foundation</span>
                                <br/>
                                <br/>
                                <img src="https://www.apache.org/img/ASF20thAnniversary.jpg" height="64px">
                            </center>
                        ]]>
                    </bottom>
                    <top>
                        <![CDATA[
                            <link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
                            <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/XRegExp.js" type="text/javascript"></script>
                            <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shCore.js" type="text/javascript"></script>
                            <script src="https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shAutoloader.js" type="text/javascript"></script>
                            <link href="https://nlpcraft.apache.org/javadoc/resources/sh/styles/shCoreNLPCraft.css" rel="stylesheet" type="text/css" title="Style">
                            <link href="https://nlpcraft.apache.org/javadoc/resources/sh/styles/shThemeNLPCraft.css" rel="stylesheet" type="text/css" title="Style">
                            <link href="https://fonts.googleapis.com/css?family=Roboto+Mono" rel="stylesheet">
                            <link href="https://fonts.googleapis.com/css?family=Roboto" rel="stylesheet">
                            <script async defer src="https://buttons.github.io/buttons.js"></script>
                        ]]>
                    </top>
                    <excludePackageNames>
                        org.apache.nlpcraft.common.*:org.apache.nlpcraft.common:org.apache.nlpcraft.examples.*:org.apache.nlpcraft.examples:org.apache.nlpcraft.model.impl:org.apache.nlpcraft.model.impl.json:org.apache.nlpcraft.model.intent.impl.antlr4:org.apache.nlpcraft.model.intent.utils:org.apache.nlpcraft.probe.mgrs.model.antlr4:org.apache.nlpcraft.server.mdo.impl
                    </excludePackageNames>
                    <groups>
                        <group>
                            <title>Data Model APIs</title>
                            <packages>
                                org.apache.nlpcraft.model.factories.basic:org.apache.nlpcraft.model.factories.spring:org.apache.nlpcraft.model:org.apache.nlpcraft.model.intent:org.apache.nlpcraft.model.opencensus
                            </packages>
                        </group>
                        <group>
                            <title>Tools</title>
                            <packages>
                                org.apache.nlpcraft.model.tools.embedded:org.apache.nlpcraft.model.tools.sqlgen:org.apache.nlpcraft.model.tools.test
                            </packages>
                        </group>
                    </groups>
                    <header>
                        <![CDATA[
                            Apache NLPCraft <span style="font-size: 80%">${project.version}</span>
                        ]]>
                    </header>
                    <footer>
                        <![CDATA[
                            <span style="vertical-align: super">Apache NLPCraft <span style="font-size: 80%">${project.version}</span></span>
                            <a style="vertical-align: super; margin-right: 10px" href="https://github.com/apache/incubator-nlpcraft" target="github"><i class="fa fa-github github-logo"></i></a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft/tree/master/nlpcraft/src/main/scala/org/apache/nlpcraft/examples" data-icon="octicon-eye" aria-label="NLPCraft Examples">Examples</a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft" data-icon="octicon-star" aria-label="Star on GitHub">Star</a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft/fork" data-icon="octicon-repo-forked" aria-label="Fork on GitHub">Fork</a>
                            <script type="text/javascript">
                                SyntaxHighlighter.defaults["auto-links"] = false;
                                SyntaxHighlighter.defaults["tab-size"] = 2;

                                SyntaxHighlighter.autoloader(
                                    'java                   https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushJava.js',
                                    'js jscript javascript  https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushJScript.js',
                                    'text plain             https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushPlain.js',
                                    'py python              https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushPython.js',
                                    'ruby rails ror rb      https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushRuby.js',
                                    'scala                  https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushScala.js',
                                    'sql                    https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushSql.js',
                                    'xml xhtml xslt html    https://nlpcraft.apache.org/javadoc/resources/sh/scripts/shBrushXml.js'
                                );
                                SyntaxHighlighter.all();
                            </script>
                        ]]>
                    </footer>
                    <doctitle>
                        <![CDATA[
                            <img style="margin-top: 15px" src="https://nlpcraft.apache.org/images/nlpcraft_logo_darkblue.png" height="54px">
                        ]]>
                    </doctitle>
                    <windowtitle>Apache NLPCraft ${project.version}</windowtitle>
                    <show>public</show>
                    <verbose>false</verbose>
                </configuration>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>${maven.jar.plugin.ver}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>${maven.shade.plugin.ver}</version>
                <executions>
                    <execution>
                        <id>jar.all.deps</id>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <outputFile>
                                ${project.build.directory}/${nlpcraft.all.deps.jar}
                            </outputFile>
                            <transformers>
                                <!--reference.conf - akka configuration file.-->
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>reference.conf</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                    <mainClass>org.apache.nlpcraft.NCStart</mainClass>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.handlers</resource>
                                </transformer>
                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                    <resource>META-INF/spring.schemas</resource>
                                </transformer>
                            </transformers>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
