<?xml version="1.0" encoding="UTF-8"?>
<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"
         child.project.url.inherit.append.path="false">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>2.3.1.RELEASE</version>
    </parent>

    <groupId>com.madden-abbott</groupId>
    <artifactId>parent</artifactId>
    <version>1.1.3</version>
    <packaging>pom</packaging>
    <description>Parent for all open source projects.</description>
    <url>${scm.url}</url>

    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0</url>
        </license>
    </licenses>

    <organization/>
    <issueManagement/>

    <developers>
        <developer>
            <name>Rupert Madden-Abbott</name>
            <email>rupert@madden-abbott.com</email>
            <url>https://github.com/rupert-madden-abbott</url>
        </developer>
    </developers>

    <scm child.scm.url.inherit.append.path="false">
        <url>${scm.url}</url>
        <connection/>
        <developerConnection/>
    </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>

    <properties>
        <scm.repository>maven-parent</scm.repository>
        <scm.url>https://github.com/rupert-madden-abbott/${scm.repository}</scm.url>
        <maven-gpg-plugin.version>1.6</maven-gpg-plugin.version>
        <maven.version>[3.6.1,)</maven.version>
        <spring-boot.version>2.3.1.RELEASE</spring-boot.version>
        <nexus-staging-maven-plugin.version>1.6.8</nexus-staging-maven-plugin.version>
        <!-- No longer Spring Boot managed since 2.3.0.RELEASE -->
        <maven-site-plugin.version>3.9.1</maven-site-plugin.version>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring-boot.version}</version>
                <scope>test</scope>
                <exclusions>
                    <exclusion>
                        <groupId>org.junit.vintage</groupId>
                        <artifactId>junit-vintage-engine</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-site-plugin</artifactId>
                    <version>${maven-site-plugin.version}</version>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

    <profiles>
        <profile>
            <id>deploy</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.sonatype.plugins</groupId>
                        <artifactId>nexus-staging-maven-plugin</artifactId>
                        <version>${nexus-staging-maven-plugin.version}</version>
                        <extensions>true</extensions>
                        <configuration>
                            <serverId>ossrh</serverId>
                            <nexusUrl>https://oss.sonatype.org/</nexusUrl>
                            <autoReleaseAfterClose>true</autoReleaseAfterClose>
                        </configuration>
                    </plugin>
                    <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>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-gpg-plugin</artifactId>
                        <version>${maven-gpg-plugin.version}</version>
                        <executions>
                            <execution>
                                <id>sign-artifacts</id>
                                <phase>verify</phase>
                                <goals>
                                    <goal>sign</goal>
                                </goals>
                                <configuration>
                                    <!-- Prevent gpg from expecting manual user input for passphrase -->
                                    <gpgArguments>
                                        <arg>--pinentry-mode</arg>
                                        <arg>loopback</arg>
                                    </gpgArguments>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                    <plugin>
                        <artifactId>maven-enforcer-plugin</artifactId>
                        <executions>
                            <execution>
                                <id>enforce-versions</id>
                                <goals>
                                    <goal>enforce</goal>
                                </goals>
                                <configuration>
                                    <rules>
                                        <!--
                                          Ensuring that all plugins have versions specified,
                                          guarantees that future builds are repeatable
                                        -->
                                        <requirePluginVersions>
                                            <banSnapshots>false</banSnapshots>
                                        </requirePluginVersions>
                                        <!--
                                          Prevents a project from being deployed as a release i.e.
                                          with a non-SNAPSHOT version number, unless all of its
                                          dependencies are also all not SNAPSHOTS as well. Again this
                                          ensures that production builds are repeatable.
                                        -->
                                        <requireReleaseDeps>
                                            <onlyWhenRelease>true</onlyWhenRelease>
                                        </requireReleaseDeps>
                                        <!--
                                          Require projects to use the specified version of Maven.
                                        -->
                                        <requireMavenVersion>
                                            <version>${maven.version}</version>
                                        </requireMavenVersion>
                                        <!--
                                          Require projects to use the specified version of Java. This prevents projects
                                          from building with a later version of Java, when an earlier one is intended
                                          for use at runtime. This is needed because otherwise there is no warning, if
                                          you use classes that are only available in the newer version.
                                        -->
                                        <requireJavaVersion>
                                            <version>${java.version}</version>
                                        </requireJavaVersion>
                                    </rules>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>