<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2020 znai maintainers
  ~ Copyright 2019 TWO SIGMA OPEN SOURCE, LLC
  ~
  ~ 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>

    <groupId>org.testingisdocumenting.znai</groupId>
    <artifactId>znai-parent</artifactId>
    <version>1.55</version>
    <packaging>pom</packaging>

    <name>Znai</name>
    <description>Rich documentation generator (markdown and java based)</description>
    <url>https://github.com/testingisdocumenting/znai</url>

    <developers>
        <developer>
            <id>tsiq-karold</id>
            <name>Karol Dudzinski</name>
            <email>karol.dudzinski@twosigmaiq.com</email>
            <organization>Two Sigma Insurance Quantified</organization>
            <organizationUrl>http://twosigmaiq.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>Europe/London</timezone>
        </developer>
        <developer>
            <id>MykolaGolubyev</id>
            <name>Nick Golubyev</name>
            <email>golubev.nikolay@gmail.com</email>
            <organization>Testing Is Documenting</organization>
            <organizationUrl>https://testingisdocumenting.org/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>America/New_York</timezone>
        </developer>
        <developer>
            <id>byc1234</id>
            <name>Hwansoo Lee</name>
            <email>hwansoo.lee@twosigma.com</email>
            <organization>Two Sigma</organization>
            <organizationUrl>https://twosigma.com/</organizationUrl>
            <roles>
                <role>developer</role>
            </roles>
            <timezone>America/New_York</timezone>
        </developer>
    </developers>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <scm>
        <url>https://github.com/testingisdocumenting/znai</url>
        <connection>scm:git:https://github.com/testingisdocumenting/znai.git</connection>
        <developerConnection>scm:git:https://github.com/testingisdocumenting/znai.git</developerConnection>
        <tag>1.55</tag>
    </scm>

    <distributionManagement>
        <snapshotRepository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>

        <repository>
            <id>ossrh</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2/</url>
        </repository>
    </distributionManagement>

    <modules>
        <module>znai-utils</module>
        <module>znai-utils-for-testing</module>
        <module>znai-console</module>
        <module>znai-ddjt-docs</module>
        <module>znai-diagrams</module>
        <module>znai-website-gen</module>
        <module>znai-core</module>
        <module>znai-enterprise</module>
        <module>znai-latex</module>
        <module>znai-java</module>
        <module>znai-groovy</module>
        <module>znai-cpp</module>
        <module>znai-python</module>
        <module>znai-doxygen</module>
        <module>znai-ecmascript</module>
        <module>znai-sphinx</module>
        <module>znai-open-api</module>
        <module>znai-typescript</module>
        <module>znai-jupyter</module>
        <module>znai-reactjs-api</module>
        <module>znai-reactjs</module>
        <module>znai-server</module>
        <module>znai-client</module>
        <module>znai-cli</module>
        <module>znai-generators</module>
        <module>znai-maven-plugin</module>
        <module>znai-docs</module>
        <module>znai-testing-examples</module>
        <module>znai-shaded</module>
        <module>znai-dist</module>
        <module>znai-tests</module>
    </modules>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <groovy.version>3.0.7</groovy.version>
        <vertx.io.version>3.9.2</vertx.io.version>
        <commonmark.version>0.15.2</commonmark.version>
        <antlr.version>4.5</antlr.version>
        <jackson.verson>2.11.2</jackson.verson>
        <webtau.version>1.44.1</webtau.version>
        <jaxb.version>2.3.0</jaxb.version>
        <ant.version>1.10.11</ant.version>
        <ant-compress.version>1.5</ant-compress.version>
        <jsoup.version>1.14.2</jsoup.version>
        <freemarker.version>2.3.30</freemarker.version>
        <commons-io.version>2.7</commons-io.version>
        <commons-cli.version>1.4</commons-cli.version>
        <commons-csv.version>1.8</commons-csv.version>
        <commons-compress.version>1.21</commons-compress.version>
        <commons-lang3.version>3.11</commons-lang3.version>
        <commons-codec.version>1.15</commons-codec.version>
        <plantuml.version>1.2020.16</plantuml.version>
        <json-path.version>2.4.0</json-path.version>
        <slf4j.version>1.7.30</slf4j.version>
        <junit.version>4.13.1</junit.version>
        <javaparser-core.version>3.16.1</javaparser-core.version>
        <jakarta.xml.bind-api.version>2.3.3</jakarta.xml.bind-api.version>
        <httpcore.version>4.4.13</httpcore.version>
        <httpclient.version>4.5.13</httpclient.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy</artifactId>
                <version>${groovy.version}</version>
            </dependency>

            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-nio</artifactId>
                <version>${groovy.version}</version>
            </dependency>

            <dependency>
                <groupId>org.codehaus.groovy</groupId>
                <artifactId>groovy-groovydoc</artifactId>
                <version>${groovy.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-io</groupId>
                <artifactId>commons-io</artifactId>
                <version>${commons-io.version}</version>
            </dependency>

            <dependency>
                <groupId>org.freemarker</groupId>
                <artifactId>freemarker</artifactId>
                <version>${freemarker.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>${commons-cli.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-csv</artifactId>
                <version>${commons-csv.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-compress</artifactId>
                <version>${commons-compress.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons-lang3.version}</version>
            </dependency>

            <dependency>
                <groupId>commons-codec</groupId>
                <artifactId>commons-codec</artifactId>
                <version>${commons-codec.version}</version>
            </dependency>

            <dependency>
                <groupId>net.sourceforge.plantuml</groupId>
                <artifactId>plantuml</artifactId>
                <version>${plantuml.version}</version>
            </dependency>

            <dependency>
                <groupId>com.jayway.jsonpath</groupId>
                <artifactId>json-path</artifactId>
                <version>${json-path.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant</artifactId>
                <version>${ant.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.ant</groupId>
                <artifactId>ant-compress</artifactId>
                <version>${ant-compress.version}</version>
            </dependency>

            <dependency>
                <groupId>io.vertx</groupId>
                <artifactId>vertx-core</artifactId>
                <version>${vertx.io.version}</version>
            </dependency>

            <dependency>
                <groupId>io.vertx</groupId>
                <artifactId>vertx-web</artifactId>
                <version>${vertx.io.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.ben-manes.caffeine</groupId>
                <artifactId>caffeine</artifactId>
                <version>2.8.5</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-api</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-simple</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-ext</artifactId>
                <version>${slf4j.version}</version>
            </dependency>

            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>

            <dependency>
                <groupId>jakarta.xml.bind</groupId>
                <artifactId>jakarta.xml.bind-api</artifactId>
                <version>${jakarta.xml.bind-api.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-tables</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-yaml-front-matter</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>com.atlassian.commonmark</groupId>
                <artifactId>commonmark-ext-gfm-strikethrough</artifactId>
                <version>${commonmark.version}</version>
            </dependency>

            <dependency>
                <groupId>com.github.javaparser</groupId>
                <artifactId>javaparser-core</artifactId>
                <version>${javaparser-core.version}</version>
            </dependency>

            <dependency>
                <groupId>org.jsoup</groupId>
                <artifactId>jsoup</artifactId>
                <version>${jsoup.version}</version>
            </dependency>

            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4-runtime</artifactId>
                <version>${antlr.version}</version>
            </dependency>

            <dependency>
                <groupId>org.antlr</groupId>
                <artifactId>antlr4</artifactId>
                <version>${antlr.version}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>${jackson.verson}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-core</artifactId>
                <version>${jackson.verson}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-xml</artifactId>
                <version>${jackson.verson}</version>
            </dependency>

            <dependency>
                <groupId>com.fasterxml.jackson.dataformat</groupId>
                <artifactId>jackson-dataformat-yaml</artifactId>
                <version>${jackson.verson}</version>
            </dependency>

            <dependency>
                <groupId>org.testingisdocumenting.webtau</groupId>
                <artifactId>webtau-core-groovy</artifactId>
                <version>${webtau.version}</version>
            </dependency>

            <dependency>
                <groupId>org.testingisdocumenting.webtau</groupId>
                <artifactId>webtau</artifactId>
                <version>${webtau.version}</version>
            </dependency>

            <dependency>
                <groupId>org.testingisdocumenting.webtau</groupId>
                <artifactId>webtau-core</artifactId>
                <version>${webtau.version}</version>
            </dependency>

            <dependency>
                <groupId>org.testingisdocumenting.webtau</groupId>
                <artifactId>webtau-groovy</artifactId>
                <version>${webtau.version}</version>
            </dependency>

            <dependency>
                <groupId>org.testingisdocumenting.webtau</groupId>
                <artifactId>webtau-browser</artifactId>
                <version>${webtau.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpcore</artifactId>
                <version>${httpcore.version}</version>
            </dependency>

            <dependency>
                <groupId>org.apache.httpcomponents</groupId>
                <artifactId>httpclient</artifactId>
                <version>${httpclient.version}</version>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.codehaus.gmavenplus</groupId>
                    <artifactId>gmavenplus-plugin</artifactId>
                    <version>1.5</version>
                    <dependencies>
                        <dependency>
                            <groupId>org.codehaus.groovy</groupId>
                            <artifactId>groovy-groovydoc</artifactId>
                            <version>${groovy.version}</version>
                        </dependency>
                    </dependencies>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                </plugin>

                <plugin>
                    <groupId>com.github.eirslett</groupId>
                    <artifactId>frontend-maven-plugin</artifactId>
                    <version>1.12.1</version>
                    <executions>
                        <execution>
                            <id>Install Node</id>
                            <goals>
                                <goal>install-node-and-npm</goal>
                            </goals>
                        </execution>

                        <execution>
                            <id>npm install</id>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <phase>generate-resources</phase>
                            <configuration>
                                <arguments>install</arguments>
                            </configuration>
                        </execution>

                        <execution>
                            <id>npm test</id>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <phase>generate-resources</phase>
                            <configuration>
                                <environmentVariables>
                                    <CI>true</CI>
                                </environmentVariables>
                                <arguments>test</arguments>
                            </configuration>
                        </execution>

                        <execution>
                            <id>Frontend production build</id>
                            <phase>generate-resources</phase>
                            <goals>
                                <goal>npm</goal>
                            </goals>
                            <configuration>
                                <arguments>run build</arguments>
                            </configuration>
                        </execution>
                    </executions>
                    <configuration>
                        <nodeVersion>v12.16.3</nodeVersion>
                        <installDirectory>.mvn</installDirectory>
                        <workingDirectory>src</workingDirectory>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.antlr</groupId>
                    <artifactId>antlr4-maven-plugin</artifactId>
                    <version>${antlr.version}</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>antlr4</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.2.0</version>
                </plugin>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-resources-plugin</artifactId>
                    <version>3.1.0</version>
                    <configuration>
                        <escapeString>\</escapeString>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-release-plugin</artifactId>
                <version>2.5.3</version>
                <configuration>
                    <autoVersionSubmodules>true</autoVersionSubmodules>
                    <useReleaseProfile>false</useReleaseProfile>
                    <releaseProfiles>release</releaseProfiles>
                    <tagNameFormat>@{project.version}</tagNameFormat>
                    <goals>deploy</goals>
                    <pushChanges>false</pushChanges>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.sonatype.plugins</groupId>
                <artifactId>nexus-staging-maven-plugin</artifactId>
                <version>1.6.8</version>
                <extensions>true</extensions>
                <configuration>
                    <serverId>ossrh</serverId>
                    <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                    <autoReleaseAfterClose>true</autoReleaseAfterClose>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>groovy-auto-activated</id>
            <activation>
                <file>
                    <exists>src/main/groovy</exists>
                </file>
            </activation>

            <build>
                <plugins>
                    <plugin>
                        <groupId>org.codehaus.gmavenplus</groupId>
                        <artifactId>gmavenplus-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>add-sources</id>
                                <phase>initialize</phase>
                                <goals>
                                    <goal>addSources</goal>
                                    <goal>addTestSources</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>compile</id>
                                <goals>
                                    <goal>compile</goal>
                                    <goal>testCompile</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>groovy-docs</id>
                                <phase>prepare-package</phase>
                                <goals>
                                    <goal>groovydoc</goal>
                                </goals>
                                <configuration>
                                    <groovydocOutputDirectory>${project.build.directory}/apidocs
                                    </groovydocOutputDirectory>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>1.5</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <version>3.0.1</version>
                        <executions>
                            <execution>
                                <id>attach-sources</id>
                                <goals>
                                    <goal>jar-no-fork</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>

                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>3.0.1</version>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
