<!--
  ============LICENSE_START=======================================================
   Copyright (C) 2018 Ericsson. All rights reserved.
   Modifications Copyright (C) 2020-2021 AT&T. All rights reserved.
   Modifications Copyright (C) 2021 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>
    <parent>
        <groupId>org.onap.oparent</groupId>
        <artifactId>oparent</artifactId>
        <!-- When changing, also change the oparent.version property -->
        <version>3.3.3</version>
        <relativePath />
    </parent>
    <groupId>org.onap.policy.parent</groupId>
    <artifactId>policy-parent</artifactId>
    <version>4.1.2-SNAPSHOT</version>
    <packaging>pom</packaging>

    <properties>
        <oparent.version>3.3.3</oparent.version>
    </properties>

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

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.onap.oparent</groupId>
                <artifactId>dependencies</artifactId>
                <version>${oparent.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <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.parent.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>
