<?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/maven-v4_0_0.xsd">

	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.3.2.RELEASE</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<groupId>com.levonk.codequality</groupId>
    <artifactId>pom</artifactId>
    <name>pom</name>
    <url>none</url>
    <version>1.1</version>
    <packaging>pom</packaging>



    <licenses>
        <license>
            <name>Apache License, Version 2.0</name>
            <url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
            <comments>A business-friendly OSS license</comments>
        </license>
    </licenses>


    <organization>
        <name>Levon K</name>
        <url>none</url>
    </organization>

    <developers>
        <developer>
            <id>levonk</id>
            <name>Levon K</name>
            <email>none</email>
            <url>none</url>
        </developer>
        <developer>
            <id>jwang</id>
            <name>Jing Wang</name>
            <email>none</email>
            <url>none</url>
        </developer>
    </developers>

    <scm>
        <connection>scm:git:https://github.com/DGHLJ/pub-maven-archetypes.git</connection>
        <developerConnection>scm:git:git://github.com/DGHLJ/pub-maven-archetypes.git</developerConnection>
        <tag>HEAD</tag>
        <url>https://github.com/DGHLJ/pub-maven-archetypes</url>
    </scm>

    <distributionManagement>
        <snapshotRepository>
            <id>oss.sonatype.org</id>
            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </snapshotRepository>
        <repository>
            <id>oss.sonatype.org</id>
            <url>https://oss.sonatype.org/service/local/staging/deploy/maven2</url>
        </repository>
    </distributionManagement>

    
	<repositories>
		
		<repository>
			<id>elasticsearch-releases</id>
			<name>ElasticSearch Releases Repository</name>
			<url>http://oss.sonatype.org/content/repositories/releases/</url>
		</repository>

        <repository>
            <id>checker-framework-repo</id>
            <url>http://types.cs.washington.edu/m2-repo</url>
        </repository>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>http://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
   </repositories>

	 <pluginRepositories>
        <pluginRepository>
            <id>maven</id>
            <name>Standard Maven repo</name>
            <url>http://repo1.maven.org/maven2</url>
        </pluginRepository>

        <pluginRepository>
            <id>spring-snapshots</id>
            <url>http://repo.spring.io/snapshot</url>
        </pluginRepository>
        <pluginRepository>
            <id>spring-milestones</id>
            <url>http://repo.spring.io/milestone</url>
        </pluginRepository>
        <pluginRepository>
            <id>checker-framework-repo</id>
            <url>http://types.cs.washington.edu/m2-repo</url>
        </pluginRepository>
    </pluginRepositories>

    <dependencies>

        <!-- If you have arbitrary jar that want to deploy into a central maven repository you can use
             %mvn deploy:deploy-file -DgroupId=levonk-imported -DartifactId=levonk-package \
                    -Dversion=1-levonkVersion -Dpackaging=jar -Dfile=otherjar.jar \
                    -Durl=scp://maven.levonk.com.:/maven/repo/path -DrepositoryId=levonk.internal
        -->

        <dependency>
            <!-- https://docs.google.com/document/d/1THRUCIzIPRqFSHb67pHV8KMbo55HphSXqlQcIx9oUiI/edit -->
            <groupId>com.google.auto.value</groupId>
            <artifactId>auto-value</artifactId>
            <version>${autovalue.version}</version>
            <scope>provided</scope>
        </dependency>

	<dependency>
		<!--
			Automatic generation of the Builder pattern for Java 1.6+
			http://freebuilder.inferred.org
			https://github.com/google/FreeBuilder
		-->
		<groupId>org.inferred</groupId>
		<artifactId>freebuilder</artifactId>
		<version>${freebuilder.version}</version>
		<optional>true</optional>
	</dependency>

        <!-- Runtime Testing -->
        <dependency>
            <!-- https://github.com/rawls238/Scientist4J -->
		<groupId>com.github.rawls238</groupId>
    		<artifactId>Scientist4JCore</artifactId>
		<version>${scientist4j.version}</version>
        </dependency>

        <!-- Static Analysis -->
        <dependency>
            <!-- groupId>net.sourceforge.findbugs</groupId -->
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>annotations</artifactId>
            <version>${findbugs-extra.version}</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <!-- groupId>net.sourceforge.findbugs</groupId -->
            <groupId>com.google.code.findbugs</groupId>
            <artifactId>jsr305</artifactId>
            <version>${findbugs-extra.version}</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>


        <!-- Apache
	<dependency>
		<groupId>org.apache.commons</groupId>
		<artifactId>commons-lang3</artifactId>
		<version>${commonslang3.version}</version>
	</dependency>
     -->
        <!-- Unit Testing Dependencies -->
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
            <scope>test</scope>
            <exclusions>
                <exclusion>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>nl.jqno.equalsverifier</groupId>
            <artifactId>equalsverifier</artifactId>
            <version>${equalsverifier.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Mock framework -->
        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>${mockito.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- Logging Dependencies -->
	<dependency>
		<!-- @see http://engineering.godaddy.com/logging-the-easy-way/ -->
		<!-- @see https://github.com/godaddy/godaddy-logger -->
		<groupId>com.godaddy</groupId>
		<artifactId>logging</artifactId>
		<version>${gdlogger.version}</version>
	</dependency>
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-api</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>ch.qos.logback.contrib</groupId>
            <artifactId>logback-jackson</artifactId>
            <version>${logback-jackson.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>ch.qos.logback</groupId>
                    <artifactId>logback-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <!-- A JaxB mapper is necessary for logback-ext-json-classic
                you can use others though, it doesn't have to be jackson -->
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson1.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <!-- https://github.com/logstash/logstash-logback-encoder -->
            <groupId>net.logstash.logback</groupId>
            <artifactId>logstash-logback-encoder</artifactId>
            <version>${logstash.version}</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
        	<!-- @see http://types.cs.washington.edu/checker-framework/current/checker-framework-manual.html#maven -->
        	<!-- annotations from the Checker Framework: nullness, interning, locking, ... -->
            <groupId>org.checkerframework</groupId>
            <artifactId>checker-qual</artifactId>
            <version>${checkers.version}</version>
        </dependency>
        <dependency>
            <groupId>org.checkerframework</groupId>
            <artifactId>checker</artifactId>
            <version>${checkers.version}</version>
        </dependency>
        <dependency>
        	<!-- The annotated JDK to use (change to jdk7 if using Java 7) -->
            <groupId>org.checkerframework</groupId>
            <artifactId>jdk8</artifactId>
            <version>${checkers.version}</version>
        </dependency>
    </dependencies>

    <dependencyManagement>
        <dependencies>
			<dependency>
				<!-- https://github.com/OpenHFT/Zero-Allocation-Hashing -->
				<groupId>net.openhft</groupId>
				<artifactId>zero-allocation-hashing</artifactId>
				<version>${zeroallochash.version}</version>
			</dependency>
			<dependency>
				<groupId>com.jayway.restassured</groupId>
				<artifactId>rest-assured</artifactId>
				<version>${restassured.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.jayway.restassured</groupId>
				<artifactId>xml-path</artifactId>
				<version>${restassured.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.jayway.restassured</groupId>
				<artifactId>json-schema-validator</artifactId>
				<version>${restassured.version}</version>
				<scope>test</scope>
			</dependency>
			<dependency>
				<groupId>com.jayway.restassured</groupId>
				<artifactId>spring-mock-mvc</artifactId>
				<version>${restassured.version}</version>
				<scope>test</scope>
			</dependency>

            <!-- Add Cofoja Design By Contract lib when available -->
            <dependency>
                <groupId>org.slfj</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slfj.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-core</artifactId>
                <version>${spring.version}</version>
                <exclusions>
                    <!-- Starters use SLF4J -->
                    <exclusion>
                        <groupId>commons-logging</groupId>
                        <artifactId>commons-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-actuator</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-amqp</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-batch</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-integration</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jetty</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-mobile</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-redis</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-security</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-shell-remote</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-tomcat</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-websocket</artifactId>
                <version>${spring-boot.version}</version>
            </dependency>
            <dependency>
                <groupId>commons-lang</groupId>
                <artifactId>commons-lang</artifactId>
                <version>${commonslang.version}</version>
            </dependency>
            <dependency>
                <groupId>org.apache.avro</groupId>
                <artifactId>avro</artifactId>
                <version>${avro.version}</version>
            </dependency>

            <!-- Code Generation Dependencies -->
            <dependency>
                <!-- http://pojomatic.sourceforge.net/pojomatic/index.html -->
                <groupId>org.pojomatic</groupId>
                <artifactId>pojomatic</artifactId>
                <version>${pojomatic.version}</version>
            </dependency>

            <dependency>
                <!-- Lombok requires Javac v1.6 compiler or higher -->
                <!-- You still need to doubleclick the lombok.jar
                     file downloaded by maven to install lombok into
                     eclipse.
                -->
                <!-- http://projectlombok.org/features/index.html -->
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <scope>provided</scope>
            </dependency>
            <!-- checker framework-->
            <dependency>
                <groupId>org.checkerframework</groupId>
                <artifactId>checker-framework</artifactId>
                <version>1.8.0</version>
            </dependency>
			<dependency>
				<!-- @see https://github.com/mauricio/postgresql-async -->
				<groupId>com.github.mauricio</groupId>
				<artifactId>postgresql-async_2.11</artifactId>
				<version>${jdbcasync.version}</version>
			</dependency>
			<dependency>
				<!-- @see https://github.com/mauricio/postgresql-async -->
				<!-- please prefer postgresql over mysql. -->
				<groupId>com.github.mauricio</groupId>
				<artifactId>mysql-async_2.11</artifactId>
				<version>${jdbcasync.version}</version>
			</dependency>
			<dependency>
				<!-- @see http://javachannel.org/posts/external-program-invocation-in-java/ -->
				<groupId>org.zeroturnaround</groupId>
				<artifactId>zt-exec</artifactId>
				<version>${ztexec.version}</version>
			</dependency>
        </dependencies>
    </dependencyManagement>


    <!--
        Specify all the version numbers of all dependencies here so we don't
        have to specify them in multiple children.
        The parent will not force this dependency, but it will specify a
        default version number
    -->
    <build>
        <plugins>
<plugin>
    <artifactId>maven-site-plugin</artifactId>
    <executions>
    <execution>
    <id>attach-descriptor</id>
    <goals>
    <goal>attach-descriptor</goal>
    </goals>
    </execution>
    </executions>
    </plugin>
            <!--http://jakub.marchwicki.pl/posts/2015/06/04/maven-wrapper/
                run to initialize:   mvn  wrapper:wrapper -N
                use mvnw afterward
                -->
            <plugin>
                <groupId>com.rimerosolutions.maven.plugins</groupId>
                <artifactId>wrapper-maven-plugin</artifactId>
                <version>0.0.4</version>
                <inherited>false</inherited>       
                <configuration>
                    <mavenVersion>3.3.9</mavenVersion>
                </configuration>
            </plugin>
            <!-- General Settings -->
            <!-- Code Coverage -->
            <!-- Don't forget to add a Jenkins
                "Post-build Actions->Folders or files
                containing JaCoCo XML reports:"
                    **/target/site/jacoco/jacoco*.xml
              -->
            <plugin>

                <groupId>org.jacoco</groupId>
                <artifactId>jacoco-maven-plugin</artifactId>
                <version>${jacoco.version}</version>
                <configuration>
                    <dataFile>${project.build.directory}/jacoco.exec</dataFile>
                    <outputDirectory>${project.build.directory}/jacoco-ut</outputDirectory>
                </configuration>
                <executions>
                    <execution>
			<phase>test</phase>
                        <goals>
                            <goal>prepare-agent</goal>
                        </goals>
                    </execution>
                    <execution>
                        <id>report</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>report</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            
            <plugin>
            	<!-- @see http://classycle.sourceforge.net/ -->
		    <groupId>org.pitest</groupId>
		    <artifactId>classycle-maven-plugin</artifactId>
		    <version>0.4</version>
		    <executions>
		        <execution>
		            <id>verify</id>
		            <phase>verify</phase>
		            <goals>
		                <goal>check</goal>
		            </goals>
		            <configuration>
		                <dependencyDefinition>
		                    show allResults
		                    check absenceOfPackageCycles > 1 in com.example*
		                </dependencyDefinition>
		
		                <!-- This can be classycle.dependency.DefaultResultRenderer 
		                    for text (the default if omitted) or 
		                    classycle.dependency.XMLResultRenderer for xml -->
		                <resultRenderer>classycle.dependency.DefaultResultRenderer</resultRenderer>
		            </configuration>
		        </execution>
		    </executions>
			</plugin>

            <plugin>
                <!-- compiler version -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>${compiler.version}</version>
                <configuration>
                    <forceJavacCompilerUse>true</forceJavacCompilerUse>
                    <showDeprecation>true</showDeprecation>
                    <showWarnings>true</showWarnings>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                    <optimize>true</optimize>
                    <debug>true</debug>
                    <fork>true</fork>
                    <meminitial>128m</meminitial>
                    <maxmem>512m</maxmem>
			<!--<annotationProcessors>
                		<annotationProcessor>org.checkerframework.checker.nullness.NullnessChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.interning.InterningChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.lock.LockChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.regex.RegexChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.formatter.FormatterChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.signature.SignatureChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.linear.LinearChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.igj.IGJChecker</annotationProcessor>
                		<annotationProcessor>org.checkerframework.checker.javari.JavariChecker</annotationProcessor>

                        <annotationProcessor>org.checkerframework.checker.fenum.FenumChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.checker.tainting.TaintingChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.checker.propkey.PropertyKeyChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.checker.i18n.I18nChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.checker.compilermsgs.CompilerMessagesChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.checker.units.UnitsChecker</annotationProcessor>
                        <annotationProcessor>org.checkerframework.common.subtyping.SubtypingChecker</annotationProcessor>
            		</annotationProcessors>-->
			<compilerArgs>
				<!-- location of the annotated JDK, which comes from a Maven dependency -->
				<arg>-Xbootclasspath/p:${annotatedJdk}</arg>
				<!-- Uncomment the following line if using Java 7. -->
				<!-- <arg>-J-Xbootclasspath/p:${typeAnnotationsJavac}</arg> -->
			</compilerArgs>
                </configuration>
                <dependencies>
                    <dependency>
                        <groupId>com.google.errorprone</groupId>
                        <artifactId>error_prone_core</artifactId>
                        <version>${errorprone.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.plexus</groupId>
                        <artifactId>plexus-compiler-javac</artifactId>
                        <version>${plexusCompiler.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.codehaus.plexus</groupId>
                        <artifactId>plexus-compiler-javac-errorprone</artifactId>
                        <version>${plexusCompilerErrorProne.version}</version>
                    </dependency>
                </dependencies>
            </plugin>


            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-site-plugin</artifactId>
                <version>${site.version}</version>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>${source.version}</version>
                <executions>
                    <execution>
                        <id>attach-sources</id>
                        <goals>
                            <goal>jar-no-fork</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

		<!-- Static Analysis Tools -->
            	<!--
            		http://www.mojohaus.org/versions-maven-plugin/index.html
			mvn -U versions:display-plugin-updates
			mvn -U versions:display-dependency-updates
            	-->
		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>versions-maven-plugin</artifactId>
			<version>${versions.version}</version>
		</plugin>
            <plugin>
				<!--
					https://github.com/andrewgaul/modernizer-maven-plugin
					Prevent the use of legacy Java APIs
				-->
                <groupId>org.gaul</groupId>
                <artifactId>modernizer-maven-plugin</artifactId>
                <version>${modernizer.version}</version>
				<configuration>
					<javaVersion>${java.version}</javaVersion>
					<failOnViolations>false</failOnViolations>
				</configuration>
				<executions>
					<execution>
						<id>modernizer</id>
						<phase>compile</phase>
						<goals>
							<goal>modernizer</goal>
						</goals>
					</execution>
				</executions>
            </plugin>
		<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${checkstyle.version}</version>
                <configuration>
                    <configLocation>google_checks.xml</configLocation>
                    <logViolationsToConsole>true</logViolationsToConsole>
                    <failOnViolation>true</failOnViolation>
                    <failsOnError>true</failsOnError>
                </configuration>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>checkstyle</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- @see http://maven.apache.org/enforcer/enforcer-rules/index.html -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-enforcer-plugin</artifactId>
                <version>${enforcer.version}</version>
                <executions>
                    <execution>
                        <id>enforce-banned-dependencies</id>
                        <goals>
                            <goal>enforce</goal>
                        </goals>
                        <configuration>
                            <fail>false</fail>
                            <rules>
                                <bannedDependencies>
                                    <searchTransitive>true</searchTransitive>
                                    <excludes>
                                        <exclude>aspectj:aspectj*</exclude>
                                        <!-- Security Vulnerability in InvokerTransformer.class as of 2015-11-10
                                            @see org.apache.commons.collections.functors.InvokerTransformer.class
                                            @see http://foxglovesecurity.com/2015/11/06/what-do-weblogic-websphere-jboss-jenkins-opennms-and-your-application-have-in-common-this-vulnerability/
                                        -->
                                        <exclude>org.apache.commons:commons-collections:,3.2.1]</exclude>
                                        <exclude>commons-logging</exclude>
                                        <exclude>hsqldb:hsqldb</exclude>
                                        <exclude>javassist:javassist</exclude>
                                        <exclude>junit:junit</exclude>
                                        <exclude>log4j:log4j</exclude>
                                        <exclude>org.slf4j:1.5*</exclude>
                                        <exclude>org.springframework:2.*</exclude>
                                        <exclude>org.springframework:3.0.*</exclude>
                                        <!-- Prevent NPE
                                             @see http://stackoverflow.com/questions/29995139/maven-versions-maven-plugin-versions-plugin-2-2
                                             @see http://jira.codehaus.org/browse/MVERSIONS-285
                                        -->
                                        <exclude>org.codehaus.mojo:versions-maven-plugin:2.2</exclude>
                                    </excludes>
                                </bannedDependencies>
                                <dependencyConvergence/>
                                <requireMavenVersion>
                                    <version>[3.1.0,)</version>
                                </requireMavenVersion>
                                <requireJavaVersion>
                                    <version>${java.version}</version>
                                </requireJavaVersion>
                            <evaluateBeanshell>
                                <condition>javax.crypto.Cipher.getMaxAllowedKeyLength("AES") > 128</condition>
                            </evaluateBeanshell>
                            <reactorModuleConvergence>
                            <message>Maven-enforcer: The reactor Module Convergance is not valid</message>
                            <ignoreModuleDependencies>true</ignoreModuleDependencies>
                        </reactorModuleConvergence>
                <requireSameVersions>
                    <plugins>
                        <plugin>org.apache.maven.plugins:maven-surefire-plugin</plugin>
                        <plugin>org.apache.maven.plugins:maven-failsafe-plugin</plugin>
                        <plugin>org.apache.maven.plugins:maven-surefire-report-plugin</plugin>
                    </plugins>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>org.apache.maven</dependency> <!-- or org.apache.maven:* -->
                    </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>org.apache.camel</dependency> <!-- or org.apache.camel:* -->
                    </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>org.slf4j</dependency> <!-- or org.slf4j:* -->
                    </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>org.springframework</dependency> <!-- or org.springframework:* -->
                    </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>org.springframework.boot</dependency> <!-- or org.springframework.boot:* -->
                    </dependencies>
                </requireSameVersions>
                <requireSameVersions>
                    <dependencies>
                        <dependency>com.jayway.restassured</dependency> <!-- or com.jayway.restassured:* -->
                    </dependencies>
                </requireSameVersions>
                            </rules>
                        </configuration>
                    </execution>
                </executions>
        
            </plugin>

            <plugin>
                <!-- @see https://pmd.github.io/ -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>3.6</version>
                <configuration>
                    <rulesets>
                        <ruleset>
                            https://oss.sonatype.org/content/groups/public/com/levonk/codequality/1.0.0/codequality-1.0.0-pmd.xml
                        </ruleset>
                    </rulesets>
                    <excludes>
                        <exclude>**/*Bean.java</exclude>
                        <exclude>**/generated/*.java</exclude>
                    </excludes>
                    <minimumTokens>100</minimumTokens>
                    <sourceEncoding>utf-8</sourceEncoding>
                    <targetJdk>${java.version}</targetJdk>
                    <linkXRef>false</linkXRef>
                    <failurePriority>2</failurePriority>
                    <failOnViolation>true</failOnViolation>
                    <printFailingErrors>true</printFailingErrors>
                </configuration>
                <executions>
                    <execution>
			<phase>validate</phase>
                        <goals>
                            <goal>pmd</goal>
                            <goal>cpd</goal>
                        </goals>
                    </execution>
                </executions>

            </plugin>

            <plugin>
                <!-- @see http://findbugs.sourceforge.net/ -->
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${findbugs.version}</version>
                <configuration>
                    <excludeFilterFile>
                        https://oss.sonatype.org/content/groups/public/com/levonk/codequality/1.0.0/codequality-1.0.0-FindBugsFilter.xml
                    </excludeFilterFile>
                    <effort>Max</effort>
                    <threshold>Low</threshold>
                    <xmlOutput>true</xmlOutput>
                </configuration>
		<executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>findbugs</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        
            <plugin>
                <groupId>com.soebes.maven.plugins.mlv</groupId>
                <artifactId>maven-license-verifier-plugin</artifactId>
                <version>${licenseVerifier.version}</version>
                <executions>
                    <execution>
                        <id>license-verifier</id>
                        <goals>
                            <goal>verify</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>com.levonk.codequality</groupId>
                        <artifactId>licenses</artifactId>
                        <version>${licenses.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            
		<plugin>
			<!-- @see https://github.com/basepom/duplicate-finder-maven-plugin/wiki -->
			<groupId>org.basepom.maven</groupId>
			<artifactId>duplicate-finder-maven-plugin</artifactId>
			<version>${duplicate.version}</version>
			<executions>
				<execution>
					<id>default</id>
					<phase>verify</phase>
					<goals>
						<goal>check</goal>
					</goals>
				</execution>
			</executions>
			<configuration>
				<printEqualFiles>false</printEqualFiles>
				<failBuildInCaseOfDifferentContentConflict>false</failBuildInCaseOfDifferentContentConflict>
				<failBuildInCaseOfEqualContentConflict>false</failBuildInCaseOfEqualContentConflict>
				<failBuildInCaseOfConflict>false</failBuildInCaseOfConflict>
				<checkCompileClasspath>true</checkCompileClasspath>
				<checkRuntimeClasspath>true</checkRuntimeClasspath>
				<checkTestClasspath>true</checkTestClasspath>
				<skip>false</skip>
				<quiet>false</quiet>
				<preferLocal>true</preferLocal>
				<useResultFile>true</useResultFile>
				<resultFileMinClasspathCount>2</resultFileMinClasspathCount>
				<resultFile>${project.build.directory}/duplicate-finder-result.xml</resultFile>
				<includeBootClasspath>false</includeBootClasspath>
				<bootClasspathProperty>sun.boot.class.path</bootClasspathProperty>
				<useDefaultResourceIgnoreList>true</useDefaultResourceIgnoreList>
				<includePomProjects>false</includePomProjects>
				<useDefaultResourceIgnoreList>true</useDefaultResourceIgnoreList>
				<!--
				<exceptions>
					<exception>
						<currentProject>false</currentProject>
						<bootClasspath>false</bootClasspath>
						<conflictingDependencies>
							<dependency>
								<artifactId>...</artifactId>
								<groupId>...</groupId>
								<version>...</version>
								<type>...</type>
								<classifier>...</classifier>
							</dependency>
						</conflictingDependencies>
						<classes>
							<class>...</class>
						</classes>
						<packages>
							<package>...</package>
						</packages>
						<resources>
							<resource>...</resource>
						</resources>
						<resourcePatterns>
							<resourcePattern>...</resourcePattern>
						</resourcePatterns>
					</exception>
				</exceptions>
				<ignoredResourcePatterns>
					<ignoredResourcePattern>...</ignoredResourcePattern>
				</ignoredResourcePatterns>
				<ignoredClassPatterns>
					<ignoredClassPattern>...</ignoredClassPattern>
				</ignoredClassPatterns>
				<ignoredDependencies>
					<dependency>
						<artifactId>...</artifactId>
						<groupId>...</groupId>
						<version>...</version>
						<type>...</type>
						<classifier>...</classifier>
					</dependency>
				</ignoredDependencies>
				<ignoredResources>
					<ignoredResource>...</ignoredResource>
				</ignoredResources>
				-->
			</configuration>
		</plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-eclipse-plugin</artifactId>
                <version>${eclipse.version}</version>
                <configuration>
                    <downloadSources>true</downloadSources>
                    <downloadJavadocs>true</downloadJavadocs>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>jalopy-maven-plugin</artifactId>
                <version>${jalopy.version}</version>
                <configuration>
                    <convention>source-munge/jalopy.xml</convention>
                    <failOnError>false</failOnError>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>${dependency.version}</version>
                <executions>
                    <execution>
                    	<goals>
                    		<goal>properties</goal>
                    	</goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- lets get rid .class that are effected through
                inheritance using ant -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <version>${antrun.version}</version>
                <executions>
                    <!-- handle regular sources -->
                    <execution>
                        <id>depend-sources</id>
                        <phase>process-sources</phase>
                        <configuration>
                            <target>
                                <depend srcDir="${project.build.sourceDirectory}"
                                        destDir="${project.build.outputDirectory}"
                                        cache="${project.build.outputDirectory}"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                    <!-- handle test files -->
                    <execution>
                        <id>depend-test-sources</id>
                        <phase>process-test-sources</phase>
                        <configuration>
                            <target>
                                <depend srcDir="${project.build.testSourceDirectory}"
                                        destDir="${project.build.testOutputDirectory}"
                                        cache="${project.build.testOutputDirectory}"
                                        classpath="${project.build.outputDirectory}"/>
                            </target>
                        </configuration>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>


            <!-- testing -->
            <!--
                Tests are divided into three categories:
                1. Very fast Unit Tests (default) - run often in development
                2. slower integration but self-sufficent tests (Spring context and/or H2 Database - run before commits
                3. real integration tests (requiring remote servers) - run by CI Server

                You can seperate tests by adding the annotation
                @Test(groups = "self-integration")
                or
                @Test(groups = "full-integration")
                http://www.javacodegeeks.com/2012/04/testng-and-maven-configuration-guide.html
            -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>${surefire.version}</version>
                <executions>
                    <execution>
                        <!-- Override default configuration, which treats all tests the same -->
                        <id>default-test</id>
                        <configuration>
                            <excludedGroups>self-integration,full-integration</excludedGroups>
                        </configuration>
                    </execution>
                    <execution>
                        <id>self-integration</id>
                        <phase>integration-test</phase>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <configuration>
                            <groups>self-integration</groups>
                            <reportsDirectory>target/self-integration-surefire-reports/</reportsDirectory>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <!-- android plugin -->
                <plugin>
                    <groupId>com.jayway.maven.plugins.android.generation2</groupId>
                    <artifactId>maven-android-plugin</artifactId>
                    <version>${android.version}</version>
                </plugin>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifest>
                                <mainClass>${start-class}</mainClass>
                            </manifest>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>exec-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>${start-class}</mainClass>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>pl.project13.maven</groupId>
                    <artifactId>git-commit-id-plugin</artifactId>
                    <version>2.1.7</version>
                    <executions>
                        <execution>
                            <goals>
                                <goal>revision</goal>
                            </goals>
                        </execution>
                    </executions>
                    <configuration>
                        <verbose>true</verbose>
                        <dateFormat>yyyy-MM-dd'T'HH:mm:ssZ</dateFormat>
                        <generateGitPropertiesFile>true</generateGitPropertiesFile>
                        <generateGitPropertiesFilename>src/main/resources/git.properties</generateGitPropertiesFilename>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <configuration>
                        <mainClass>${start-class}</mainClass>
                        <layout>ZIP</layout>
                        <executable>${springboot.is.executable}</executable>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                </plugin>
                <plugin>
                	<groupId>org.pitest</groupId>
                	<artifactId>pitest-maven</artifactId>
                	<version>${pitest.version}</version>
                	<configuration>
                		<targetClasses>
                			<targetClass>${project.parent.groupId}</targetClass>
                		</targetClasses>
                		<targetTests>
                			<targetTest>${project.parent.groupId}*Test</targetTest>
                		</targetTests>
                		<outputFormats>
                			<!-- Sonar needs XML output -->
	                		<outputFormat>XML</outputFormat>
	                		<outputFormat>HTML</outputFormat>
                		</outputFormats>
                		<!-- Sonar expects reports to not have timestamps -->
                		<timestampedReports>false</timestampedReports>
                	</configuration>
                </plugin>
                
		</plugins>
	</pluginManagement>
    </build>

    <reporting>
        <outputDirectory>./target/site</outputDirectory>
        <plugins>
            <plugin>
                <!-- http://code.google.com/p/testability-explorer/wiki/Readme
                    see available options by running
                    mvn help:describe -Dplugin=com.google.testability-explorer:maven2-testability-plugin -Ddetail
                    -->
                <groupId>com.google.testability-explorer</groupId>
                <artifactId>maven-testability-plugin</artifactId>
                <version>1.3.3</version>
            </plugin>

            <!-- doc -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${javadoc.version}</version>
            </plugin>
            <!-- testing -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-report-plugin</artifactId>
                <version>${surefire.version}</version>
            </plugin>
            <!-- static analysis -->
		<plugin>
			<!-- @see http://www.mojohaus.org/jdepend-maven-plugin/ -->
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>jdepend-maven-plugin</artifactId>
			<version>${jdepend.version}</version>
		</plugin>
		<plugin>
			<!-- @see http://www.mojohaus.org/javancss-maven-plugin -->
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>javancss-maven-plugin</artifactId>
			<version>${javancss.version}</version>
		</plugin>
             <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <version>${checkstyle.version}</version>
                <configuration>
                    <configLocation>google_checks.xml</configLocation>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-pmd-plugin</artifactId>
                <version>${pmd.version}</version>
            </plugin>
           
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>findbugs-maven-plugin</artifactId>
                <version>${findbugs.version}</version>
        </plugin>
 		<plugin>
            <groupId>org.owasp</groupId>
            <artifactId>dependency-check-maven</artifactId>
            <version>${dependencycheck.version}</version>
            <configuration>
                  <cveValidForHours>8</cveValidForHours>
              </configuration>
        </plugin>

		<plugin>
			<groupId>org.codehaus.mojo</groupId>
			<artifactId>versions-maven-plugin</artifactId>
			<version>${versions.version}</version>
			<reportSets>
				<reportSet>
					<reports>
						<report>dependency-updates-report</report>
						<report>plugin-updates-report</report>
						<report>property-updates-report</report>
					</reports>
				</reportSet>
			</reportSets>
		</plugin>
	</plugins>
</reporting>


	<properties>
		<start-class>com.levonk.springboot.App</start-class>
		<sonar.exclusions>**/generated-sources/**</sonar.exclusions>
		<sonar.pitest.mode>active</sonar.pitest.mode>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<java.version>1.8</java.version>
		
		<!-- Checker Framework -->
		<!-- These properties will be set by the Maven Dependency plugin -->
		<!-- Change to jdk7 if using Java 7 -->
		<annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk>
		<!-- The type annotations compiler is required if using Java 7. -->
		<!-- Uncomment the following line if using Java 7. -->
		<!-- <typeAnnotationsJavac>${org.checkerframework:compiler:jar}</typeAnnotationsJavac> -->	
		
		<!-- version block -->
		<android.version>2.8.4</android.version>
		<autovalue.version>1.0-rc1</autovalue.version>
		<antlr3.version>3.5.2</antlr3.version>	<!-- 2015-10-06 -->
		<antlr4.version>4.5.1-1</antlr4.version>	<!-- 2015-10-06 -->
		<antrun.version>1.7</antrun.version>
		<avro.version>1.7.6</avro.version>
		<codequality.version>1.0.9</codequality.version>
		<checkers.version>1.9.11</checkers.version>	<!-- 2016-02-18 -->
		<docker.version>0.4.1</docker.version>
		<duplicate.version>1.2.1</duplicate.version> <!-- 2015-10-06 -->
		<spring-boot.version>1.3.1.RELEASE</spring-boot.version>
		<checkstyle.version>2.17</checkstyle.version>	<!-- 2015-10-06 -->
		<checkstylepuppycrawl.version>6.11.2</checkstylepuppycrawl.version>	<!-- 2015-10-06 -->
		<commonslang.version>2.6</commonslang.version>
		<commonslang3.version>3.2.1</commonslang3.version>
		<compiler.version>3.5.1</compiler.version> <!-- as of 2016-01-09 -->
		<dependency.version>2.8</dependency.version>
		<dependencycheck.version>1.3.5.1</dependencycheck.version> <!-- as of 2015-08-28 -->
		<doclava.version>1.0.6</doclava.version>
		<eclipse.version>2.9</eclipse.version>
		<enforcer.version>1.4.1</enforcer.version> <!-- 2015-09-01 -->
		<enforcerextra.version>1.0-beta-4-SNAPSHOT</enforcerextra.version> <!-- 2015-10-06 -->
		<equalsverifier.version>1.3.1</equalsverifier.version>
		<errorprone.version>2.0.1</errorprone.version> <!-- as of 2015-03-27 -->
		<findbugs.version>3.0.3</findbugs.version>	<!-- 2016-02-18 -->
		<findbugs-extra.version>1.3.9</findbugs-extra.version>
		<freebuilder.version>1.0-rc8</freebuilder.version> <!-- as of 2015-06-13 -->
		<gdlogger.version>1.2.1</gdlogger.version>	<!-- 2016-03-08 -->
		<gpg.version>1.5</gpg.version>
		<!-- as of 2014-03-11 -->
		<guava.version>18.0</guava.version>
		<jackson1.version>1.9.13</jackson1.version>
		<jacoco.version>0.7.6.201602180812</jacoco.version>	<!-- 2016-02-21 -->
		<jalopy.version>1.0-alpha-1</jalopy.version>
		<javadoc.version>2.9.1</javadoc.version>
		<javancss.version>2.1</javancss.version>	<!-- 2015-10-06 -->
		<jdbcasync.version>0.2.18</jdbcasync.version>	<!-- 2015-10-07 -->
		<jdepend.version>2.0</jdepend.version>	<!-- 2015-10-06 -->
		<jmeter.version>1.10.1</jmeter.version>	<!-- 2016-02-13 -->
		<!-- as of 2014-03-11 -->
		<licenseVerifier.version>0.4</licenseVerifier.version>
		<licenses.version>1.0</licenses.version>
		<log4jslf4j.version>2.4</log4jslf4j.version>	<!-- 2015-10-06 -->
		<log4jcore.version>2.4</log4jcore.version>	<!-- 2015-10-06 -->
		<logback.version>1.0.13</logback.version>
		<logback-jackson.version>0.1.2</logback-jackson.version>
		<logstash.version>2.4</logstash.version>
		<lombok.version>1.12.5</lombok.version>
		<mockito.version>1.9.5</mockito.version>
		<modernizer.version>1.4.0</modernizer.version> <!-- 2015-10-06 -->
		<newrelic.version>3.21.0</newrelic.version>	<!-- 2015-10-06 -->
		<nexusclm.version>2.1.1</nexusclm.version>	<!-- 2015-10-22 -->
		<pitest.version>1.1.6</pitest.version> <!-- 2015-09-29 -->
		<plexusCompiler.version>2.5</plexusCompiler.version> <!-- 2015-03-27 -->
		<plexusCompilerErrorProne.version>2.5</plexusCompilerErrorProne.version> <!-- 2015-03-27 -->
		<pmd.version>3.6</pmd.version>	<!-- 2016-02-18 -->
		<pojomatic.version>1.0</pojomatic.version>
		<proguard.version>2.0.6</proguard.version>
		<proguardBase.version>4.9</proguardBase.version>
		<pure4j.version>0.3.1</pure4j.version>	<!-- 2015-12-03 -->
		<restassured.version>2.5.0</restassured.version> <!-- 2015-08-27 -->
		<scientist4j.version>0.1</scientist4j.version>	<!-- 2016-02-24 -->
		<site.version>3.5</site.version>	<!-- 2016-02-19 -->
		<slf4j.version>1.7.5</slf4j.version>
		<sonar.version>2.3</sonar.version> <!-- 2015-09-29 -->
		<!-- as of 2012-09-17 -->
		<source.version>3.0.0</source.version>	<!-- 2016-02-21 -->
		<!-- as of 2014-03-11 -->
		<surefire.version>2.16</surefire.version>
		<!-- as of 2011-04-06 -->
		<testng.version>6.8.7</testng.version>
		<versions.version>2.1</versions.version> <!-- 2015-12-29 -->
		<zeroallochash.version>0.4</zeroallochash.version> <!-- 2015-09-12 -->
		<ztexec.version>1.8</ztexec.version>
		<docker.registry.url>https://index.docker.io/v1/</docker.registry.url>
		<springboot.is.executable>true</springboot.is.executable>
		<checker-version>1.8.2</checker-version>
	</properties>

	<profiles>
		<profile>
			<id>signed-release</id>
			<activation>
				<property>
					<name>gpg.passphrase</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-gpg-plugin</artifactId>
						<version>${gpg.version}</version>
						<executions>
							<execution>
								<id>sign-artifacts</id>
								<phase>verify</phase>
								<goals>
									<goal>sign</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>doclava</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/java</exists>
				</file>
			</activation>
			<reporting>
				<plugins>
					<plugin>
						<artifactId>maven-javadoc-plugin</artifactId>
						<configuration>
							<bootclasspath>${sun.boot.class.path}</bootclasspath>
							<doclet>com.google.doclava.Doclava</doclet>
							<useStandardDocletOptions>false</useStandardDocletOptions>
							<docletArtifact>
								<groupId>com.google.doclava</groupId>
								<artifactId>doclava</artifactId>
								<version>1.0.5</version>
							</docletArtifact>
							<additionalparam>
								-hdf project.name "${project.name}"
								-d ${project.build.directory}/apidocs
								-quiet
							</additionalparam>
						</configuration>
					</plugin>
				</plugins>
			</reporting>
		</profile>
		<profile>
			<!-- @see http://www.yegor256.com/2014/07/20/liquibase-in-maven.html -->
			<id>with-liquibase</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/liquibase/master.xml</exists>
				</file>
				 <property><name>liquibase.url</name></property>
                <!-- following should be dependent on enviornment in settings.xml -->
                <!--<property><name>liquibase.driver</name></property>-->
                
                <!-- following should be only in settings.xml and not committed -->
                <!--<property><name>liquibase.username</name></property>-->
                <!--<property><name>liquibase.password</name></property>-->
        	</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.liquibase</groupId>
						<artifactId>liquibase-maven-plugin</artifactId>
						<configuration>
							<changeLogFile>${basedir}/src/main/liquibase/master.xml</changeLogFile>
							<driver>${liquibase.driver}</driver>
							<url>${liquibase.driver}</url>
							<username>${liquibase.driver}</username>
							<password>${liquibase.driver}</password>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>scala-lang</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/scala</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.scala-lang</groupId>
					<artifactId>scala-library</artifactId>
					<version>2.7.2-rc2</version>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.scala-tools</groupId>
						<artifactId>maven-scala-plugin</artifactId>
						<executions>
							<execution>
								<goals>
									<goal>compile</goal>
									<goal>testCompile</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<sourceDir>src/main/scala</sourceDir>
							<jvmArg>-Xms64m</jvmArg>
							<jvmArg>-Xmx1024m</jvmArg>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>clojure-lang</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/clojure</exists>
				</file>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>com.theoryinpractise</groupId>
						<artifactId>clojure-maven-plugin</artifactId>
						<version>${clojure.version}</version>
						<configuration>
							<warnOnReflection>true</warnOnReflection>
						</configuration>
						<executions>
							<execution>
								<id>clojure-lang</id>
								<goals>
									<goal>add-source</goal>
									<goal>add-test-source</goal>
									<goal>compile</goal>
									<goal>test</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>groovy-lang</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/groovy</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.codehaus.groovy</groupId>
					<artifactId>groovy-all</artifactId>
					<version>${groovy.version}</version>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.gmavenplus</groupId>
						<artifactId>gmavenplus-plugin</artifactId>
						<version>${gmavenplus.version}</version>
						<configuration>
							<verbose>true</verbose>
							<stacktrace>true</stacktrace>
							<providerSelection>2.0</providerSelection>
							<sourceEncoding>UTF-8</sourceEncoding>
						</configuration>
						<executions>
							<execution>
								<id>groovy-lang</id>
								<goals>
									<goal>generateStubs</goal>
									<goal>compile</goal>
									<goal>generateTestStubs</goal>
									<goal>testCompile</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>nexusclm</id>
			<activation>
				<!-- You need entries in settings.xml to configure the link to the server, see readme -->
				<property><name>nexusclm.serverUrl</name></property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>com.sonatype.clm</groupId>
						<artifactId>clm-maven-plugin</artifactId>
						<version>${nexusclm.version}</version>
						<executions>
							<execution>
								<goals>
									<goal>evaluate</goal>
								</goals>
								<phase>site</phase>
								<configuration>
									<serverUrl>${nexusclm.serverUrl}</serverUrl>
									<stage>build</stage>
									<applicationId>${project.groupId}:${project.artifactId}</applicationId>
									<inherited>false</inherited>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>sonar</id>
			<activation>
				<!-- You need entries in settings.xml to configure the link to the server, see readme -->
				<property><name>sonar.jdbc.url</name></property>
				<!--<property><name>sonar.jdbc.username</name></property>
				<property><name>sonar.jdbc.password</name></property>
				<property><name>sonar.host.url</name></property>-->
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>sonar-maven-plugin</artifactId>
						<version>${sonar.version}</version>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>avro-serializer</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/avro</exists>
				</file>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.apache.avro</groupId>
						<artifactId>avro-maven-plugin</artifactId>
						<version>${avro.version}</version>
						<executions>
							<execution>
								<phase>generate-sources</phase>
								<goals>
									<goal>schema</goal>
								</goals>
								<configuration>
									<sourceDirectory>
										${project.basedir}/src/main/avro
									</sourceDirectory>
									<outputDirectory>
										${project.build.directory}/generated-sources/avro
									</outputDirectory>
									<testSourceDirectory>
										${project.basedir}/src/test/avro
									</testSourceDirectory>
									<testOutputDirectory>
										${project.build.directory}/generated-test-sources/avro
									</testOutputDirectory>
									<fieldVisibility>
										PRIVATE
									</fieldVisibility>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>antlr3-gen</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/antlr3</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.antlr</groupId>
					<artifactId>antlr-runtime</artifactId>
					<version>${antlr3.version}</version>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.antlr</groupId>
						<artifactId>antlr3-maven-plugin</artifactId>
						<version>${antlr3.version}</version>
						<executions>
							<execution>
								<id>antl3-gen</id>
								<phase>generate-sources</phase>
								<goals>
									<goal>antlr</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>antlr4-gen</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/antlr4</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.antlr</groupId>
					<artifactId>antlr4-runtime</artifactId>
					<version>${antlr4.version}</version>
				</dependency>
			</dependencies>
			<build>
				<plugins>
					<plugin>
						<groupId>org.antlr</groupId>
						<artifactId>antlr4-maven-plugin</artifactId>
						<version>${antlr4.version}</version>
						<executions>
							<execution>
								<id>antl4-gen</id>
								<phase>generate-sources</phase>
								<goals>
									<goal>antlr4</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<sourceDirectory>src/main/antlr4</sourceDirectory>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>
        <profile>
            <id>OSXProfile</id>
            <activation>
                <os>
                    <family>mac</family>
                </os>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>com.sun</groupId>
                    <artifactId>tools</artifactId>
                    <version>1.5.0</version>
                    <scope>system</scope>
                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
                </dependency>
            </dependencies>
        </profile>
        <profile>
            <!--  
                https://github.com/spotify/docker-maven-plugin

                To push to a private Docker image registry that requires authentication, you can put your credentials in your Maven's global settings.xml file as part of the <servers></servers> block.

                NOTE: images name should be all lower case. version-SNAPSHOT may cause error 500 when creating the image
                <servers>
                    <server>
                    <id>docker-hub</id>
                    <username>foo</username>
                    <password>secret-password</password>
                    <configuration>
                      <email>foo@foo.bar</email>
                    </configuration>
                  </server>
                </servers>

            -->
            <id>docker</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>com.spotify</groupId>
                        <artifactId>docker-maven-plugin</artifactId>
                        <version>${docker.version}</version>
                        <executions>
                            <execution>
                                <phase>deploy</phase>
                                <goals>
                                    <goal>build</goal>
                                </goals>
                            </execution>
                        </executions>
                        <configuration>
                            <imageName>${docker.image.prefix}/${project.artifactId}-${project.version}</imageName>
                            <dockerDirectory>src/main/docker</dockerDirectory>
                            <serverId>docker-hub</serverId>
                            <registryUrl>${docker.registry.url}</registryUrl>
                            <resources>
                                <resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}</directory>
                                    <include>${project.build.finalName}.jar</include>
                                </resource>
                                <!--<resource>
                                    <targetPath>/</targetPath>
                                    <directory>${project.build.directory}/classes/docker</directory>
                                    <include>*</include>
                                </resource>-->
                            </resources>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
		
		<profile>
			<id>log4j-slf4j-test</id>
			<activation>
				<file>
					<exists>${basedir}/src/test/resources/log4j.xml</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-slf4j-impl</artifactId>
					<version>${log4jslf4j.version}</version>
					<scope>test</scope>
				</dependency>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-core</artifactId>
					<version>${log4jcore.version}</version>
					<scope>test</scope>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>pure4j-check</id>
            <!-- Active this module require that all dependencies used in the project are in compile scope. To exclue testing dependencies in the final build, we will allow developer to opt out this profile -->
			<!--<activation>
				<file>
					<exists>${basedir}/src/main/java</exists>
				</file>
			</activation>-->
            <dependencies>
                <!-- pure4j plugin does not work with Test scope. most likely will need
                to change spring test module to compile scope-->
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-test</artifactId>
                    <version>4.2.4.RELEASE</version>
                </dependency>
            </dependencies>
			<dependencyManagement>
				<dependencies>
					<dependency>
						<groupId>org.pure4j</groupId>
						<artifactId>pure4j-core</artifactId>
						<version>${pure4j.version}</version>
					</dependency>
				</dependencies>
			</dependencyManagement>
			<build>
				<plugins>
					<plugin>
						<!-- @see https://github.com/robmoffat/pure4j/blob/master/README.md -->
						<groupId>org.pure4j</groupId>
						<artifactId>pure4j-maven-plugin</artifactId>
						<version>${pure4j.version}</version>
						<executions>
							<execution>
								<goals>
									<goal>pure4j</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>log4j-slf4j</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/resources/log4j.xml</exists>
				</file>
			</activation>
			<dependencies>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-slf4j-impl</artifactId>
					<version>${log4jslf4j.version}</version>
				</dependency>
				<dependency>
					<groupId>org.apache.logging.log4j</groupId>
					<artifactId>log4j-core</artifactId>
					<version>${log4jcore.version}</version>
				</dependency>
			</dependencies>
		</profile>
		<profile>
			<id>jmeter-test-profile</id>
			<activation>
				<file>
					<exists>${basedir}/src/test/jmeter</exists>
				</file>
			</activation>
			<!--
				 REST Testing
				 @see https://github.com/jmeter-maven-plugin/jmeter-maven-plugin
			-->
			<build>
				<plugins>
					<plugin>
						<groupId>com.lazerycode.jmeter</groupId>
						<artifactId>jmeter-maven-plugin</artifactId>
						<version>${jmeter.version}</version>
						<executions>
                            <execution>
							<id>integration-test</id>
							<phase>verify</phase>
							<goals>
								<goal>jmeter</goal>
							</goals>
                            </execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>newrelic-pkg</id>
			<activation>
				<file>
					<exists>${basedir}/src/main/resources/newrelic.yml</exists>
				</file>
			</activation>
			<!--
				 Commercial monitoring
				 @see https://docs.newrelic.com/docs/agents/java-agent/installation/java-agent-manual-installation
				 @see https://docs.newrelic.com/docs/agents/java-agent/frameworks/maven-installation-java
			-->
			<dependencies>
				<dependency>
					<!-- Needs to add JVM command line argument
						 -javaagent:/path/to/newrelic.jar
					-->
					<groupId>com.newrelic.agent.java</groupId>
					<artifactId>newrelic-agent</artifactId>
					<version>${newrelic.version}</version>
					<scope>provided</scope>
				</dependency>
				<dependency>
					<groupId>com.newrelic.agent.java</groupId>
					<artifactId>newrelic-api</artifactId>
					<version>${newrelic.version}</version>
					<scope>provided</scope>
				</dependency>
			</dependencies>
		</profile>
	</profiles>

    <!-- vim: set noexpandtab tabstop=4 shiftwidth=4: -->
</project>
