<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~
  ~ 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.
  ~
  ~ Copyright 2013-2016 the original author or authors.
  -->

<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">
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ COORDONATES ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.ff4j</groupId>
    <artifactId>ff4j-spring-boot-starter-parent</artifactId>
    <version>1.8</version>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ MAIN INFO ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <name>ff4j-spring-boot-starter-parent</name>
    <packaging>pom</packaging>
    <url>https://ff4j.github.io/</url>
    <inceptionYear>2013</inceptionYear>
    <description>
        FF4J, stands for Feature Flipping for Java, helps you implementing the 'feature toggle' agile development
        practice.
        Features (services/behaviour/treatments/screen parts) can be enabled and disabled at runtime but also limited to
        an authorized
        sub-set of users (e.g : beta-testers for beta feature). Once the feature is enabled and granted you can
        implement your own strategy
        to flip through custom FlippingStrategy.
    </description>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ GIT (GITHUB) ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <scm>
        <connection>scm:git:git@github.com:ff4j/ff4j-spring-boot-starter-parent.git</connection>
        <developerConnection>scm:git:git@github.com:ff4j/ff4j-spring-boot-starter-parent.git</developerConnection>
        <url>git@github.com:ff4j/ff4j-spring-boot-starter-parent.git</url>
        <tag>1.8</tag>
    </scm>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ LICENSE (APACHE2) ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <licenses>
        <license>
            <name>Apache 2</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
            <distribution>repo</distribution>
        </license>
    </licenses>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ ORGANIZATION ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <organization>
        <name>FF4J</name>
        <url>http://ff4j.org</url>
    </organization>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ PROPERTIES               ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <java.version>1.8</java.version>
        <spring-boot.version>2.1.3.RELEASE</spring-boot.version>
        <ff4j.version>1.8</ff4j.version>
        <kotlin.version>1.3.21</kotlin.version>
        <commons3.lang>3.8.1</commons3.lang>
        <commons.collection.version>3.2.2</commons.collection.version>
        <cucumber.version>1.2.5</cucumber.version>
        <gson.version>2.2.4</gson.version>
        <assertj.version>3.2.0</assertj.version>
        <jsonassert.version>1.5.0</jsonassert.version>
        <easymock.version>4.0.2</easymock.version>
        <swagger.version>2.9.2</swagger.version>
        <jacoco.version>0.8.3</jacoco.version>
        <meanbean.version>2.0.3</meanbean.version>
        <enforcer.version>3.0.0-M2</enforcer.version>
        <dokka.version>0.9.17</dokka.version>
        <jackson-module-kotlin.version>2.9.8</jackson-module-kotlin.version>
        <license-maven-plugin.version>1.18</license-maven-plugin.version>
        <maven-resources-plugin.version>3.1.0</maven-resources-plugin.version>
        <version.maven.plugin.nexus>1.6.8</version.maven.plugin.nexus>
        <version.maven.plugin.release>2.5.2</version.maven.plugin.release>
        <version.maven.plugin.gpg>1.5</version.maven.plugin.gpg>
        <version.maven.plugin.javadoc>2.10.3</version.maven.plugin.javadoc>
        <version.maven.plugin.source>2.2.1</version.maven.plugin.source>
    </properties>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ CHILD MODULES            ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <modules>
        <module>ff4j-spring-services</module>
        <module>ff4j-spring-boot-web-api</module>
        <module>ff4j-spring-boot-autoconfigure</module>
        <module>ff4j-spring-boot-starter</module>
    </modules>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ DEPENDENCIES             ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-autoconfigure</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-configuration-processor</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-webflux</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.ff4j</groupId>
                <artifactId>ff4j-core</artifactId>
                <version>${ff4j.version}</version>
            </dependency>
            <dependency>
                <artifactId>ff4j-aop</artifactId>
                <groupId>org.ff4j</groupId>
                <version>${ff4j.version}</version>
            </dependency>
            <dependency>
                <artifactId>ff4j-web</artifactId>
                <groupId>org.ff4j</groupId>
                <version>${ff4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-lang3</artifactId>
                <version>${commons3.lang}</version>
            </dependency>
            <dependency>
                <groupId>commons-collections</groupId>
                <artifactId>commons-collections</artifactId>
                <version>${commons.collection.version}</version>
            </dependency>
            <!-- Swagger -->
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger2</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <dependency>
                <groupId>io.springfox</groupId>
                <artifactId>springfox-swagger-ui</artifactId>
                <version>${swagger.version}</version>
            </dependency>
            <!-- Test dependency -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <version>${spring-boot.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.skyscreamer</groupId>
                <artifactId>jsonassert</artifactId>
                <version>${jsonassert.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.easymock</groupId>
                <artifactId>easymock</artifactId>
                <version>${easymock.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.meanbean</groupId>
                <artifactId>meanbean</artifactId>
                <version>${meanbean.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-java8</artifactId>
                <version>${cucumber.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-junit</artifactId>
                <version>${cucumber.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>info.cukes</groupId>
                <artifactId>cucumber-spring</artifactId>
                <version>${cucumber.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jetbrains.kotlin</groupId>
                <artifactId>kotlin-test-junit</artifactId>
                <version>${kotlin.version}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    <dependencies>
        <!-- Kotlin -->
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-stdlib</artifactId>
            <version>${kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-kotlin</artifactId>
            <version>${jackson-module-kotlin.version}</version>
        </dependency>
        <dependency>
            <groupId>org.jetbrains.kotlin</groupId>
            <artifactId>kotlin-test</artifactId>
            <version>${kotlin.version}</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
	<build>
		<finalName>ff4j-spring-boot-starter-parent</finalName>
		<directory>target</directory>
		<resources>
			<resource>
				<directory>src/main/resources</directory>
			</resource>
		</resources>
		<testResources>
			<testResource>
				<directory>src/test/resources</directory>
			</testResource>
		</testResources>
		<plugins>
			<!-- maven enforcer -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-enforcer-plugin</artifactId>
				<version>${enforcer.version}</version>
				<executions>
					<execution>
						<id>enforce-maven</id>
						<goals>
							<goal>enforce</goal>
						</goals>
						<configuration>
							<rules>
								<requireMavenVersion>
									<version>3.0</version>
								</requireMavenVersion>
							</rules>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- kotlin -->
			<plugin>
				<artifactId>kotlin-maven-plugin</artifactId>
				<groupId>org.jetbrains.kotlin</groupId>
				<version>${kotlin.version}</version>
				<configuration>
					<compilerPlugins>
						<plugin>spring</plugin>
					</compilerPlugins>
					<jvmTarget>1.8</jvmTarget>
				</configuration>
				<executions>
					<execution>
						<id>compile</id>
						<phase>process-sources</phase>
						<goals>
							<goal>compile</goal>
						</goals>
						<configuration>
							<sourceDirs>
								<sourceDir>${project.basedir}/src/main/kotlin</sourceDir>
								<sourceDir>${project.basedir}/src/main/java</sourceDir>
							</sourceDirs>
						</configuration>
					</execution>
					<execution>
						<id>test-compile</id>
						<phase>test-compile</phase>
						<goals>
							<goal>test-compile</goal>
						</goals>
						<configuration>
							<sourceDirs>
								<sourceDir>${project.basedir}/src/test/kotlin</sourceDir>
								<sourceDir>${project.basedir}/src/test/java</sourceDir>
							</sourceDirs>
						</configuration>
					</execution>
				</executions>
				<dependencies>
					<dependency>
						<groupId>org.jetbrains.kotlin</groupId>
						<artifactId>kotlin-maven-allopen</artifactId>
						<version>${kotlin.version}</version>
					</dependency>
				</dependencies>
			</plugin>
			<plugin>
				<groupId>org.jacoco</groupId>
				<artifactId>jacoco-maven-plugin</artifactId>
				<version>${jacoco.version}</version>
				<executions>
					<execution>
						<goals>
							<goal>prepare-agent</goal>
						</goals>
					</execution>
					<execution>
						<id>report</id>
						<phase>test</phase>
						<goals>
							<goal>report</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<!-- Coveralls.io -->
			<plugin>
				<groupId>org.eluder.coveralls</groupId>
				<artifactId>coveralls-maven-plugin</artifactId>
				<version>4.3.0</version>
			</plugin>
			<!-- Compiler -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<configuration>
					<source>8</source>
					<target>8</target>
				</configuration>
			</plugin>
			<!-- license -->
			<plugin>
				<groupId>org.codehaus.mojo</groupId>
				<artifactId>license-maven-plugin</artifactId>
				<version>${license-maven-plugin.version}</version>
				<configuration>
					<verbose>false</verbose>
					<extraExtensions>
						<myProprietaryExtension>kt</myProprietaryExtension>
						<myProprietaryExtension>java</myProprietaryExtension>
					</extraExtensions>
				</configuration>
				<executions>
					<execution>
						<id>add-license</id>
						<goals>
							<goal>update-file-header</goal>
						</goals>
						<phase>process-sources</phase>
						<configuration>
							<licenseName>apache_v2</licenseName>
							<roots>
								<root>src/main/kotlin</root>
								<root>src/main/java</root>
								<root>src/test/java</root>
							</roots>
						</configuration>
					</execution>
				</executions>
			</plugin>
			<!-- Force UTF-8 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-resources-plugin</artifactId>
				<version>${maven-resources-plugin.version}</version>
				<configuration>
					<escapeString>\</escapeString>
					<encoding>UTF-8</encoding>
				</configuration>
			</plugin>
			<!-- Deploy to nexus -->
			<plugin>
				<groupId>org.sonatype.plugins</groupId>
				<artifactId>nexus-staging-maven-plugin</artifactId>
				<version>${version.maven.plugin.nexus}</version>
				<extensions>true</extensions>
				<configuration>
					<serverId>ossrh</serverId>
					<nexusUrl>https://oss.sonatype.org/</nexusUrl>
					<autoReleaseAfterClose>true</autoReleaseAfterClose>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.jetbrains.dokka</groupId>
				<artifactId>dokka-maven-plugin</artifactId>
				<version>${dokka.version}</version>
				<executions>
					<execution>
						<phase>prepare-package</phase>
						<goals>
							<goal>javadocJar</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<includes>
						<file>packages.md</file>
					</includes>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-source-plugin</artifactId>
				<version>${version.maven.plugin.source}</version>
				<executions>
					<execution>
						<id>attach-sources</id>
						<goals>
							<goal>jar-no-fork</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
		<pluginManagement>
			<plugins>
				<!-- release through SCM -->
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-release-plugin</artifactId>
					<version>${version.maven.plugin.release}</version>
					<configuration>
						<autoVersionSubmodules>true</autoVersionSubmodules>
						<useReleaseProfile>false</useReleaseProfile>
						<releaseProfiles>release</releaseProfiles>
						<arguments>-Dgpg.passphrase=${gpg.passphrase}</arguments>
						<goals>deploy</goals>
					</configuration>
				</plugin>
	
			</plugins>
		</pluginManagement>
    </build>
	<profiles>
		<profile>
			<id>doclint-java8-disable</id>
			<activation>
				<jdk>[1.8,)</jdk>
			</activation>
			<!-- Global Properties -->
			<properties>
				<additionalparam>-Xdoclint:none</additionalparam>
			</properties>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-javadoc-plugin</artifactId>
						<configuration>
							<additionalparam>-Xdoclint:none</additionalparam>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>release</id>
			<activation>
				<property>
					<name>performRelease</name>
					<value>true</value>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-source-plugin</artifactId>
						<version>${version.maven.plugin.source}</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>${version.maven.plugin.javadoc}</version>
						<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>${version.maven.plugin.gpg}</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>
	<repositories>
		<repository>
			<id>1_maven.apache.org</id>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
			<url>https://repo.maven.apache.org/maven2</url>
			<layout>default</layout>
		</repository>
		<repository>
			<id>2_spring.repo</id>
			<releases>
				<enabled>true</enabled>
			</releases>
			<snapshots>
				<enabled>false</enabled>
			</snapshots>
			<url>http://repo.spring.io/plugins-release/</url>
			<layout>default</layout>
		</repository>
	</repositories>
	<developers>
        <developer>
            <id>paul58914080</id>
            <name>Paul WILLIAMS</name>
            <email>paul58914080@gmail.com</email>
            <url>https://github.com/paul58914080</url>
            <organization>ff4j</organization>
            <organizationUrl>https://ff4j.github.io</organizationUrl>
            <roles>
                <role>architect</role>
                <role>developer</role>
            </roles>
            <timezone>GMT+5:30</timezone>
            <properties>
                <picUrl />
            </properties>
        </developer>
    </developers>
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <!-- ~ Issue Management ~ -->
    <!-- ~~~~~~~~~~~~~~~~~~~~~~~~ -->
    <issueManagement>
        <system>IssueTracking@Github</system>
        <url><![CDATA[https://github.com/ff4j/ff4j-spring-boot-starter-parent/issues?sort=created&direction=desc&state=open]]></url>
    </issueManagement>
</project>
