<?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/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <apache.httpcomponents.ver>4.5.13</apache.httpcomponents.ver>
        <apache.common.lang.ver>3.11</apache.common.lang.ver>
        <commons.validator.ver>1.7</commons.validator.ver>
        <gson.ver>2.8.6</gson.ver>
        <log4j.ver>2.14.0</log4j.ver>
        <nlpcraft.ver>0.7.2</nlpcraft.ver>
        <junit.ver>5.7.0</junit.ver>
        <maven.compiler.version>3.8.0</maven.compiler.version>
        <maven.shade.plugin.ver>3.2.4</maven.shade.plugin.ver>
        <maven.source.plugin.ver>3.0.1</maven.source.plugin.ver>
        <maven.gpg.plugin.ver>1.6</maven.gpg.plugin.ver>
        <maven.enforcer.plugin.ver>1.4.1</maven.enforcer.plugin.ver>
        <maven.surefire.plugin.ver>2.22.2</maven.surefire.plugin.ver>
        <maven.javadoc.plugin.ver>3.2.0</maven.javadoc.plugin.ver>
        <maven.jar.plugin.ver>3.2.0</maven.jar.plugin.ver>
        <apache.rat.plugin.ver>0.13</apache.rat.plugin.ver>
        <maven.bazaarvoice.plugin.ver>0.9</maven.bazaarvoice.plugin.ver>
        <maven.clean.plugin.ver>3.1.0</maven.clean.plugin.ver>
    </properties>

    <name>NLPCraft - Java Client</name>
    <groupId>org.apache.nlpcraft</groupId>
    <artifactId>java-client</artifactId>
    <version>0.7.2</version>
    <url>https://nlpcraft.apache.org</url>
    <description>An open source API to convert natural language into actions.</description>

    <parent>
        <groupId>org.apache</groupId>
        <artifactId>apache</artifactId>
        <version>10</version>
    </parent>

    <developers>
        <developer>
            <id>aradzinski</id>
            <name>Aaron Radzinski</name>
            <email>aradzinski@apache.org</email>
            <organization>apache</organization>
            <organizationUrl>http://apache.org</organizationUrl>
            <roles>
                <role>architect</role>
            </roles>
        </developer>
    </developers>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/apache/incubator-nlpcraft.git</url>
        <connection>scm:git:ssh://git@github.com/apache/incubator-nlpcraft.git</connection>
        <developerConnection>scm:git:ssh://git@github.com/apache/incubator-nlpcraft.git</developerConnection>
        <!-- Set actual tag name here -->
        <tag>v0.7.2</tag>
    </scm>

    <dependencies>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>${apache.httpcomponents.ver}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>${apache.common.lang.ver}</version>
        </dependency>
        <dependency>
            <groupId>commons-validator</groupId>
            <artifactId>commons-validator</artifactId>
            <version>${commons.validator.ver}</version>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>${gson.ver}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.ver}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.nlpcraft</groupId>
            <artifactId>nlpcraft</artifactId>
            <version>${nlpcraft.ver}</version>
            <exclusions>
                <exclusion>
                    <groupId>edu.stanford.nlp</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter-engine</artifactId>
            <version>${junit.ver}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${maven.compiler.version}</version>
                <configuration>
                    <source>11</source>
                    <target>11</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${maven.enforcer.plugin.ver}</version>
                <configuration>
                    <rules>
                        <requireJavaVersion>
                            <message>

                                ------------------------------------------------------------------------
                                You are trying to compile NLPCraft with inappropriate JDK version!
                                Detected JDK Version: ${java.runtime.version}
                                JDK version should be 11 or later
                                ------------------------------------------------------------------------

                            </message>
                            <version>11</version>
                        </requireJavaVersion>
                    </rules>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                    </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, -Xdoclint:none</additionalOptions>
                    <javadocDirectory>${project.basedir}/javadoc</javadocDirectory>
                    <docfilessubdirs>true</docfilessubdirs>
                    <encoding>UTF-8</encoding>
                    <failOnError>false</failOnError>
                    <sourcepath>${project.basedir}/src/main/java</sourcepath>
                    <stylesheetfile>${project.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="{@docRoot}/resources/sh/scripts/XRegExp.js" type="text/javascript"></script>
                            <script src="{@docRoot}/resources/sh/scripts/shCore.js" type="text/javascript"></script>
                            <script src="{@docRoot}/resources/sh/scripts/shAutoloader.js" type="text/javascript"></script>
                            <link href="{@docRoot}/resources/sh/styles/shCoreNlpCraft.css" rel="stylesheet" type="text/css" title="Style">
                            <link href="{@docRoot}/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>
                    <!-- Disabled because of https://bugs.openjdk.java.net/browse/JDK-8193030 -->
                    <!-- <subpackages>org.apache.nlpcraft.client</subpackages> -->
                    <excludePackageNames>
                        org.apache.nlpcraft.client.impl:org.apache.nlpcraft.client.impl.beans
                    </excludePackageNames>
                    <groups>
                        <group>
                            <title>Apache NLPCraft - Java Client</title>
                            <packages>
                                org.apache.nlpcraft.client
                            </packages>
                        </group>
                    </groups>
                    <header>
                        <![CDATA[
                            Apache NLPCraft - Java Client <span style="font-size: 80%">${project.version}</span>
                        ]]>
                    </header>
                    <footer>
                        <![CDATA[
                            <span style="vertical-align: super">Apache NLPCraft - Java Client ${project.version}</span>
                            <a style="vertical-align: super; margin-right: 10px" href="https://github.com/apache/incubator-nlpcraft-java-client" target="github"><i class="fa fa-github github-logo"></i></a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft-java-client/subscription" data-icon="octicon-eye" aria-label="Watch on GitHub">Watch</a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft-java-client" data-icon="octicon-star" aria-label="Star on GitHub">Star</a>
                            <a class="github-button" href="https://github.com/apache/incubator-nlpcraft-java-client/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                   {@docRoot}/resources/sh/scripts/shBrushJava.js',
                                    'js jscript javascript  {@docRoot}/resources/sh/scripts/shBrushJScript.js',
                                    'text plain             {@docRoot}/resources/sh/scripts/shBrushPlain.js',
                                    'py python              {@docRoot}/resources/sh/scripts/shBrushPython.js',
                                    'ruby rails ror rb      {@docRoot}/resources/sh/scripts/shBrushRuby.js',
                                    'scala                  {@docRoot}/resources/sh/scripts/shBrushScala.js',
                                    'sql                    {@docRoot}/resources/sh/scripts/shBrushSql.js',
                                    'xml xhtml xslt html    {@docRoot}/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 - Java Client ${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-source-plugin</artifactId>
                <version>${maven.source.plugin.ver}</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <!-- Copy server dependencies for integration tests. -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.0.2</version>
                <executions>
                    <execution>
                        <id>copy-server-dependencies</id>
                        <phase>pre-integration-test</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/server-lib</outputDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <!-- Start server for integration tests. -->
            <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>
                            <!--
                                Depending on the console config and how maven is run this will produce the output with ANSI colors.
                                To strip out ANSI escape sequences from the log file, see the following:
                                https://stackoverflow.com/questions/17998978/removing-colors-from-output
                            -->
                            <name>server</name>
                            <healthcheckUrl>http://localhost:8081/api/v1/health</healthcheckUrl>
                            <waitAfterLaunch>600</waitAfterLaunch>
                            <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> <!-- Remove ANSI at least from NLPCraft output. -->
                                <argument>-Djdk.tls.client.protocols=TLSv1.2</argument>
                                <argument>-cp</argument>
                                <argument>${project.build.directory}/server-lib/*</argument>
                                <argument>org.apache.nlpcraft.server.NCServer</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>

            <!-- Run integration tests. -->
            <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>
                </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>
                                <!--
                                    Some tests skipped on maven `verify` phase.
                                    ===========================================
                                -->
                                <!-- Reason: 'contextWordServer' should be started. -->
                                <exclude>**/NCModelTest.*</exclude>
                            </excludes>

                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>release</id>
            <activation>
                <property>
                    <name>performRelease</name>
                    <value>true</value>
                </property>
            </activation>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.rat</groupId>
                        <artifactId>apache-rat-plugin</artifactId>
                        <version>${apache.rat.plugin.ver}</version>
                        <configuration>
                            <excludes>
                                <exclude>.gitignore</exclude>
                                <exclude>build</exclude>
                                <exclude>.idea/**/*</exclude>
                                <exclude>.git/**/*</exclude>
                                <exclude>*.iml</exclude>
                                <exclude>**/*.txt</exclude>
                                <exclude>idea/**/*</exclude>
                                <exclude>zips/**/*</exclude>
                                <exclude>javadoc/**/*</exclude>
                            </excludes>
                            <numUnapprovedLicenses>1000000</numUnapprovedLicenses>
                        </configuration>
                        <executions>
                            <execution>
                                <phase>verify</phase>
                                <goals>
                                    <goal>check</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven.gpg.plugin.ver}</version>
                        <configuration>
                            <keyname>${gpg.keyname}</keyname>
                            <passphrase>${gpg.passphrase}</passphrase>
                        </configuration>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
