<?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>
    <groupId>org.apache.hugegraph</groupId>
    <artifactId>hugegraph</artifactId>
    <version>${revision}</version>
    <packaging>pom</packaging>

    <name>${project.artifactId}</name>
    <url>https://github.com/apache/hugegraph</url>
    <description>
        HugeGraph is a fast-speed and highly-scalable graph database.
    </description>

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

    <inceptionYear>2017</inceptionYear>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <developers>
        <developer>
            <id>Apache Hugegraph(incubating)</id>
            <email>dev-subscribe@hugegraph.apache.org</email>
            <url>https://hugegraph.apache.org/</url>
        </developer>
    </developers>

    <mailingLists>
        <mailingList>
            <name>Development Mailing List</name>
            <subscribe>dev-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>dev-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>dev@hugegraph.incubator.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Commits List</name>
            <subscribe>commits-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>commits-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>commits@hugegraph.apache.org</post>
        </mailingList>
        <mailingList>
            <name>Issues List</name>
            <subscribe>issues-subscribe@hugegraph.apache.org</subscribe>
            <unsubscribe>issues-unsubscribe@hugegraph.apache.org</unsubscribe>
            <post>issues@hugegraph.apache.org</post>
        </mailingList>
    </mailingLists>

    <issueManagement>
        <system>Github Issues</system>
        <url>https://github.com/apache/hugegraph/issues</url>
    </issueManagement>

    <scm>
        <url>https://github.com/apache/hugegraph</url>
        <connection>scm:git:https://github.com/apache/hugegraph.git</connection>
        <developerConnection>scm:git:https://github.com/apache/hugegraph.git</developerConnection>
    </scm>

    <prerequisites>
        <maven>3.5.0</maven>
    </prerequisites>

    <properties>
        <revision>1.2.0</revision>
    </properties>

    <modules>
        <module>hugegraph-server</module>
        <!-- TODO: uncomment when merge into pd and store -->
        <!-- <module>hugegraph-pd</module> -->
        <!-- <module>hugegraph-store</module> -->
    </modules>

    <build>
        <pluginManagement>
            <plugins>
                <!-- TODO: move necessary plugin out of pluginManagement? -->
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <version>1.19</version>
                    <executions>
                        <execution>
                            <id>default-cli</id>
                            <configuration>
                                <!-- Accept the pom module -->
                                <acceptPomPackaging>true</acceptPomPackaging>
                                <!-- Using the template which is grouped by License file -->
                                <fileTemplate>/org/codehaus/mojo/license/third-party-file-groupByMultiLicense.ftl</fileTemplate>
                                <licenseMerges>
                                    <licenseMerge>The Apache Software License, Version 2.0|The Apache License, Version 2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache License, Version 2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache Public License 2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache 2</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache 2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache-2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache License 2.0</licenseMerge>
                                    <licenseMerge>The Apache Software License, Version 2.0|Apache License, version 2.0</licenseMerge>
                                    <licenseMerge>3-Clause BSD License|BSD 3-clause</licenseMerge>
                                    <licenseMerge>3-Clause BSD License|BSD 3-Clause</licenseMerge>
                                    <licenseMerge>Eclipse Public License v1.0|Eclipse Public License 1.0</licenseMerge>
                                    <licenseMerge>Eclipse Public License v1.0|Eclipse Public License - v 1.0</licenseMerge>
                                    <licenseMerge>The MIT License|MIT License</licenseMerge>
                                </licenseMerges>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!-- Apache RAT for license check -->
                <plugin>
                    <groupId>org.apache.rat</groupId>
                    <artifactId>apache-rat-plugin</artifactId>
                    <configuration>
                        <excludes>
                            <exclude>**/*.versionsBackup</exclude>
                            <exclude>**/*.proto</exclude>
                            <exclude>**/*.log</exclude>
                            <exclude>**/*.txt</exclude>
                            <exclude>**/*.json</exclude>
                            <exclude>**/*.conf</exclude>
                            <exclude>**/*.map</exclude>
                            <exclude>**/*.properties</exclude>
                            <exclude>dist/**/*</exclude>
                            <exclude>**/bin/hugegraph.service</exclude>
                            <exclude>**/swagger-ui/**/*</exclude>
                            <exclude>scripts/dev/reviewers</exclude>
                            <exclude>scripts/dev/reviewers</exclude>
                            <exclude>**/*.md</exclude>
                            <exclude>**/dependency-reduced-pom.xml</exclude>
                            <exclude>**/logs/*.log</exclude>
                            <exclude>**/META-INF/**/*</exclude>
                            <exclude>**/target/*</exclude>
                            <exclude>style/*</exclude>
                            <exclude>ChangeLog</exclude>
                            <exclude>CONFIG.ini</exclude>
                            <exclude>GROUPS</exclude>
                            <exclude>OWNERS</exclude>
                            <!-- Git & GitHub  -->
                            <exclude>.github/**/*</exclude>
                            <exclude>.gitignore</exclude>
                            <exclude>.gitattributes</exclude>
                            <!-- Intellij -->
                            <exclude>**/*.iml</exclude>
                            <exclude>**/*.iws</exclude>
                            <exclude>**/*.ipr</exclude>
                            <exclude>**/META-INF/MANIFEST.MF</exclude>
                            <!-- Maven -->
                            <exclude>.repository/**</exclude>
                            <exclude>**/.flattened-pom.xml</exclude>
                            <!-- Test generated data -->
                            <exclude>**/rocksdb-*/**</exclude>
                            <exclude>**/hbase-*/**</exclude>
                            <exclude>**/apache-cassandra-*/**</exclude>
                            <exclude>**/pid</exclude>
                        </excludes>
                        <consoleOutput>true</consoleOutput>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-enforcer-plugin</artifactId>
                    <executions>
                        <execution>
                            <id>enforce-version</id>
                            <goals>
                                <goal>enforce</goal>
                            </goals>
                            <!-- no need to execute in child POMs -->
                            <inherited>false</inherited>
                            <configuration>
                                <rules>
                                    <!-- TODO: uncomment for checking dependency conflicts -->
                                    <!-- <DependencyConvergence/> -->
                                    <requireJavaVersion>
                                        <version>[1.8,12)</version>
                                    </requireJavaVersion>
                                    <requireMavenVersion>
                                        <version>[3.5.0,)</version>
                                    </requireMavenVersion>
                                </rules>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.rat</groupId>
                <artifactId>apache-rat-plugin</artifactId>
                <executions>
                    <execution>
                        <id>license-check</id>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <phase>validate</phase>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>apache-release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-source-plugin</artifactId>
                        <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>
                        <executions>
                            <execution>
                                <id>attach-javadocs</id>
                                <goals>
                                    <goal>jar</goal>
                                </goals>
                                <configuration>
                                    <doclint>none</doclint>
                                    <failOnError>false</failOnError>
                                </configuration>
                            </execution>
                        </executions>
                        <configuration>
                            <doclint>none</doclint>
                            <failOnError>false</failOnError>
                        </configuration>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <!-- Prevent `gpg` from using pinentry programs -->
                            <gpgArguments>
                                <arg>--pinentry-mode</arg>
                                <arg>loopback</arg>
                            </gpgArguments>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>

        <!-- use mvn -P stage to enable the remote apache-stage repo -->
        <profile>
            <id>stage</id>
            <repositories>
                <repository>
                    <id>staged-releases</id>
                    <url>https://repository.apache.org/content/groups/staging/</url>
                </repository>
            </repositories>
        </profile>
    </profiles>
</project>
