<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2018 Ericsson. All rights reserved.
   Modifications Copyright (C) 2020-2021 AT&T. All rights reserved.
   Modifications Copyright (C) 2021, 2024 Nordix Foundation.
  ================================================================================
  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.

  SPDX-License-Identifier: Apache-2.0
  ============LICENSE_END=========================================================
-->
<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.onap.policy.parent</groupId>
    <artifactId>policy-parent</artifactId>
    <version>4.1.5-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <sitePath>/content/sites/site/${project.groupId}/${project.artifactId}/${project.version}</sitePath>
    </properties>

    <modules>
        <module>checkstyle</module>
        <module>resources</module>
        <module>integration</module>
    </modules>

    <distributionManagement>
        <repository>
            <id>ecomp-releases</id>
            <url>${onap.nexus.url}/content/repositories/releases</url>
        </repository>
        <snapshotRepository>
            <id>ecomp-snapshots</id>
            <url>${onap.nexus.url}/content/repositories/snapshots</url>
        </snapshotRepository>
    </distributionManagement>

    <build>
        <pluginManagement>
            <plugins>
                <!--
                Using https://code.revelc.net/formatter-maven-plugin/ for Eclipse formatter
                Using https://github.com/diffplug/spotless/tree/master/plugin-maven for import order
                Use in combination to rewrite code and imports, then checkstyle

                Be sure to override ${project.parent.basedir} in order to find the XML file

                mvn formatter:format spotless:apply process-sources -Dproject.parent.basedir=<basedir>
                -->
                <plugin>
                    <groupId>net.revelc.code.formatter</groupId>
                    <artifactId>formatter-maven-plugin</artifactId>
                    <version>2.11.0</version>
                    <configuration>
                        <configFile>${project.basedir}/onap-java-formatter.xml</configFile>
                    </configuration>
                    <!-- https://code.revelc.net/formatter-maven-plugin/
                         use mvn formatter:format to rewrite source files
                         use mvn formatter:validate to validate source files -->
                </plugin>
                <plugin>
                    <groupId>com.diffplug.spotless</groupId>
                    <artifactId>spotless-maven-plugin</artifactId>
                    <version>1.26.1</version>
                    <configuration>
                        <java>
                            <importOrder>
                                <order>com,java,javax,org</order>
                            </importOrder>
                        </java>
                    </configuration>
                    <!-- https://github.com/diffplug/spotless/tree/master/plugin-maven
                         use mvn spotless:apply to rewrite source files
                         use mvn spotless:check to validate source files -->
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

</project>
