<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <!--
		~
		~ Copyright 2017-2018 Symphony Communication Services, LLC.
		~
		~ Licensed to The Symphony Software Foundation (SSF) under one
		~ or more contributor license agreements.  See the NOTICE file
		~ distributed with this work for additional information
		~ regarding copyright ownership.  The SSF licenses this file
		~ to you 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.
	

			This is the ultimate super-pom for all open source S2 code.
					
			It's main purpose is to provide version numbers for standard external
			dependencies like Protobuf. It is the super-pom for both S2 code
			(which is Java8) and code destined to be deployed to SBE (which is
			currently still Java7), this pom therefore SHOULD NOT set java source
			or target versions, add plugins to the build etc.
   -->

	<modelVersion>4.0.0</modelVersion>
  
  <parent>
		<groupId>org.symphonyoss</groupId>
		<artifactId>symphonyoss</artifactId>
		<version>11</version>
	</parent>
	
  <groupId>org.symphonyoss.s2</groupId>
		<artifactId>S2-super-pom</artifactId>
		<version>0.2.4</version>
	<packaging>pom</packaging>
	
	<url>https://github.com/symphonyoss/S2-super-pom</url>
	<description>Symphony 2.0 Super POM</description>

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

	<scm>
		<connection>scm:git:git://github.com/symphonyoss/S2-super-pom.git</connection>
		<developerConnection>scm:git:git@github.com:symphonyoss/S2-super-pom.git</developerConnection>
		<url>https://github.com/symphonyoss/S2-super-pom</url>
	  <tag>S2-super-pom-0.2.4</tag>
  </scm>

	<developers>
		<developer>
			<id>bruceskingle</id>
			<name>Bruce Skingle</name>
			<email>bruce.skingle@symphony.com</email>
			<url>http://github.com/bruceskingle</url>
			<organization>Symphony Communication Services LLC</organization>
			<organizationUrl>http://symphony.com</organizationUrl>
			<roles>
				<role>Chief Architect</role>
			</roles>
		</developer>
	</developers>

	<properties>
		<javax.servlet.version>3.1.0</javax.servlet.version>

    <aws.java.sdk.version>1.11.593</aws.java.sdk.version>
		<protobuf.version>3.5.1</protobuf.version>
		
    <guava.version>23.5-jre</guava.version>

		<jetty.version>9.4.19.v20190610</jetty.version>
		<mortbay.alpm.version>8.1.11.v20170118</mortbay.alpm.version>
		
    <jackson.version>2.9.9</jackson.version>
    <jackson-databind.version>2.9.9.2</jackson-databind.version>

		<commons.codec.version>1.10</commons.codec.version>

		<log4j.version>2.12.1</log4j.version>
    <slf4j.version>1.7.25</slf4j.version>

		<bcpkix.version>1.63</bcpkix.version>
		<bcprov.version>1.63</bcprov.version>

		<junit.version>4.12</junit.version>

		<maven-dependency-plugin.version>2.10</maven-dependency-plugin.version>
		<maven-assembly-plugin.version>3.1.0</maven-assembly-plugin.version>

		<tycho.version>1.0.0</tycho.version>
		
		<checker.framework.version>2.3.0</checker.framework.version>
	</properties>

	<build>
		<pluginManagement>
			<plugins>
			
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-gpg-plugin</artifactId>
            <version>1.6</version>
            <configuration>
              <gpgArguments>
                <arg>--batch</arg>
                <arg>--armour</arg>
                <arg>--digest-algo=SHA512</arg>
                <arg>--local-user=oss@symphony.com</arg>
                <arg>--detach-sign</arg>
                <arg>--pinentry-mode=loopback</arg>
              </gpgArguments>
            </configuration>
          </plugin>
          
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-compiler-plugin</artifactId>
					<version>3.1</version>
				</plugin>
				<plugin>
					<artifactId>maven-resources-plugin</artifactId>
					<version>3.0.2</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-antrun-plugin</artifactId>
					<version>1.8</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-plugin-plugin</artifactId>
					<version>3.5</version>
				</plugin>
				<plugin>
					<groupId>org.apache.maven.plugins</groupId>
					<artifactId>maven-invoker-plugin</artifactId>
					<version>1.7</version>
				</plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-javadoc-plugin</artifactId>
          <version>3.0.1</version>
        </plugin>

				<plugin>
					<groupId>org.codehaus.mojo</groupId>
					<artifactId>build-helper-maven-plugin</artifactId>
					<version>1.10</version>
				</plugin>
				
				<plugin>
          <groupId>io.fabric8</groupId>
          <artifactId>docker-maven-plugin</artifactId>
          <version>0.23.0</version>
        </plugin>
        
				<!--This plugin's configuration is used to store Eclipse m2e settings 
					only. It has no influence on the Maven build itself. -->
				<plugin>
					<groupId>org.eclipse.m2e</groupId>
					<artifactId>lifecycle-mapping</artifactId>
					<version>1.0.0</version>
					<configuration>
						<lifecycleMappingMetadata>
							<pluginExecutions>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											com.symphony.s2.protogen
										</groupId>
										<artifactId>
											protogen-maven-plugin
										</artifactId>
										<versionRange>
											[1.0.0-SNAPSHOT,)
										</versionRange>
										<goals>
											<goal>
												generate-sources
											</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.maven.plugins
										</groupId>
										<artifactId>
											maven-antrun-plugin
										</artifactId>
										<versionRange>
											[1.8,)
										</versionRange>
										<goals>
											<goal>run</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
								<pluginExecution>
									<pluginExecutionFilter>
										<groupId>
											org.apache.maven.plugins
										</groupId>
										<artifactId>
											maven-dependency-plugin
										</artifactId>
										<versionRange>
											[2.8,)
										</versionRange>
										<goals>
											<goal>
												copy-dependencies
											</goal>
										</goals>
									</pluginExecutionFilter>
									<action>
										<ignore />
									</action>
								</pluginExecution>
							</pluginExecutions>
						</lifecycleMappingMetadata>
					</configuration>
				</plugin>
			</plugins>
		</pluginManagement>
	</build>

	<dependencyManagement>
		<dependencies>
      <dependency>
        <groupId>com.google.guava</groupId>
        <artifactId>guava</artifactId>
        <version>${guava.version}</version>
      </dependency>
      
			<dependency>
				<groupId>com.google.protobuf</groupId>
				<artifactId>protobuf-java</artifactId>
				<version>${protobuf.version}</version>
			</dependency>

			<dependency>
				<groupId>javax.servlet</groupId>
				<artifactId>javax.servlet-api</artifactId>
				<version>${javax.servlet.version}</version>
			</dependency>

			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-plus</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-server</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			<dependency>
				<groupId>org.eclipse.jetty</groupId>
				<artifactId>jetty-servlet</artifactId>
				<version>${jetty.version}</version>
			</dependency>
			<dependency>
	      <groupId>org.eclipse.jetty.http2</groupId>
	      <artifactId>http2-server</artifactId>
	      <version>${jetty.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.eclipse.jetty</groupId>
	      <artifactId>jetty-alpn-server</artifactId>
	      <version>${jetty.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.eclipse.jetty</groupId>
	      <artifactId>jetty-servlets</artifactId>
	      <version>${jetty.version}</version>
	    </dependency>
		  <dependency>
	      <groupId>org.eclipse.jetty</groupId>
	      <artifactId>jetty-http</artifactId>
        <version>${jetty.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.eclipse.jetty</groupId>
	      <artifactId>jetty-util</artifactId>
        <version>${jetty.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>org.mortbay.jetty.alpn</groupId>
	      <artifactId>alpn-boot</artifactId>
	      <version>${mortbay.alpm.version}</version>
	      <scope>provided</scope>
	    </dependency>

			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-core</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-annotations</artifactId>
				<version>${jackson.version}</version>
			</dependency>
			<dependency>
				<groupId>com.fasterxml.jackson.core</groupId>
				<artifactId>jackson-databind</artifactId>
				<version>${jackson-databind.version}</version>
			</dependency>

			<dependency>
				<groupId>commons-codec</groupId>
				<artifactId>commons-codec</artifactId>
				<version>${commons.codec.version}</version>
			</dependency>
			
      <dependency>
        <groupId>org.apache.commons</groupId>
	      <artifactId>commons-text</artifactId>
	      <version>1.4</version>
		   </dependency>

			<dependency>
				<groupId>org.apache.logging.log4j</groupId>
				<artifactId>log4j-api</artifactId>
				<version>${log4j.version}</version>
			</dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-web</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-jul</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-1.2-api</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-slf4j-impl</artifactId>
        <version>${log4j.version}</version>
      </dependency>
      
      <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>${slf4j.version}</version>
      </dependency>


			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcpkix-jdk15on</artifactId>
				<version>${bcpkix.version}</version>
			</dependency>
			<dependency>
				<groupId>org.bouncycastle</groupId>
				<artifactId>bcprov-jdk15on</artifactId>
				<version>${bcprov.version}</version>
			</dependency>

			<!-- Annotations from the Checker Framework: nullness, interning, locking, -->
			<dependency>
				<groupId>org.checkerframework</groupId>
				<artifactId>checker-qual</artifactId>
				<version>${checker.framework.version}</version>
			</dependency>
			<!--  Use checker-qual7 if targeting Java 7 -->
			<dependency>
        <groupId>org.checkerframework</groupId>
        <artifactId>checker-qual7</artifactId>
        <version>${checker.framework.version}</version>
      </dependency>
			<dependency>
				<groupId>org.checkerframework</groupId>
				<artifactId>checker</artifactId>
				<version>${checker.framework.version}</version>
			</dependency>
			<dependency>
				<groupId>org.checkerframework</groupId>
				<artifactId>jdk8</artifactId>
				<version>${checker.framework.version}</version>
			</dependency>
	    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>${junit.version}</version>
        <scope>test</scope>
      </dependency>

			<dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-lambda-java-core</artifactId>
	      <version>1.2.0</version>
	    </dependency>
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-lambda-java-events</artifactId>
	      <version>2.1.0</version>
	    </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-core</artifactId>
        <version>${aws.java.sdk.version}</version>
     </dependency>
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-java-sdk-s3</artifactId>
	      <version>${aws.java.sdk.version}</version>
	   </dependency>
	   <dependency>
	    <groupId>com.amazonaws</groupId>
	    <artifactId>aws-java-sdk-sns</artifactId>
	    <version>${aws.java.sdk.version}</version>
	   </dependency>
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-java-sdk-iam</artifactId>
	      <version>${aws.java.sdk.version}</version>
	    </dependency>
	    <dependency>
				<groupId>com.amazonaws</groupId>
				<artifactId>aws-java-sdk-sts</artifactId>
				<version>${aws.java.sdk.version}</version>
			</dependency>
      <dependency>
          <groupId>com.amazonaws</groupId>
          <artifactId>aws-java-sdk-secretsmanager</artifactId>
          <version>${aws.java.sdk.version}</version>
      </dependency>
      <dependency>
          <groupId>com.amazonaws</groupId>
          <artifactId>aws-java-sdk-sqs</artifactId>
          <version>${aws.java.sdk.version}</version>
      </dependency>
      
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-java-sdk-elasticloadbalancingv2</artifactId>
          <version>${aws.java.sdk.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-java-sdk-route53</artifactId>
        <version>${aws.java.sdk.version}</version>
	    </dependency>
	    <dependency>
	      <groupId>com.amazonaws</groupId>
	      <artifactId>aws-java-sdk-ecs</artifactId>
        <version>${aws.java.sdk.version}</version>
	    </dependency>
		  <dependency>
		    <groupId>com.amazonaws</groupId>
		    <artifactId>aws-java-sdk-logs</artifactId>
        <version>${aws.java.sdk.version}</version>
		  </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-dynamodb</artifactId>
        <version>${aws.java.sdk.version}</version>
      </dependency>
      <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-applicationautoscaling</artifactId>
        <version>${aws.java.sdk.version}</version>
      </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-cloudwatch</artifactId>
      <version>${aws.java.sdk.version}</version>
   </dependency>
    <dependency>
      <groupId>com.amazonaws</groupId>
      <artifactId>aws-java-sdk-events</artifactId>
      <version>${aws.java.sdk.version}</version>
   </dependency>
   
    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-api-gateway</artifactId>
        <version>${aws.java.sdk.version}</version>
    </dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- Adding a dependency here makes it a dependency for *everything* Only 
			truly general things should be added at this level. -->
		<dependency>
			<groupId>com.google.code.findbugs</groupId>
			<artifactId>jsr305</artifactId>
			<version>3.0.2</version>
		</dependency>
		<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
      </dependency>
	</dependencies>
	
	<profiles>
	 <profile>
	   <id>checker</id>
	   
	   <properties>
			  <!-- These properties will be set by the Maven Dependency plugin -->
			  <annotatedJdk>${org.checkerframework:jdk8:jar}</annotatedJdk>
			  <!-- Uncomment to use the Type Annotations compiler. -->
			  <!-- <typeAnnotationsJavac>${org.checkerframework:compiler:jar}</typeAnnotationsJavac> -->
		 </properties>
		 
		 <build>
		  <plugins>
		    <plugin>
			    <!-- This plugin will set properties values using dependency information -->
			    <groupId>org.apache.maven.plugins</groupId>
			    <artifactId>maven-dependency-plugin</artifactId>
			    <executions>
			      <execution>
			        <goals>
			          <goal>properties</goal>
			        </goals>
			      </execution>
			    </executions>
			  </plugin>
			  <plugin>
			    <artifactId>maven-compiler-plugin</artifactId>
			    <configuration>
			      <source>1.8</source>
			      <target>1.8</target>
			      <compilerArguments>
			        <Xmaxerrs>10000</Xmaxerrs>
			        <Xmaxwarns>10000</Xmaxwarns>
			      </compilerArguments>
			      <annotationProcessors>
			        <!-- Add all the checkers you want to enable here -->
			        <annotationProcessor>org.checkerframework.checker.nullness.NullnessChecker</annotationProcessor>
			      </annotationProcessors>
			      <compilerArgs>
			        <arg>-AprintErrorStack</arg>
			        <!-- location of the annotated JDK, which comes from a Maven dependency -->
			        <arg>-Xbootclasspath/p:${annotatedJdk}</arg>
			        <!-- Uncomment the following line to use the type annotations compiler. -->
			        <!-- <arg>-J-Xbootclasspath/p:${typeAnnotationsJavac}</arg> -->
			        <!-- Uncomment the following line to turn type-checking warnings into errors. -->
			        <!-- <arg>-Awarns</arg> -->
			      </compilerArgs>
			    </configuration>
			  </plugin>
		  </plugins>
		 </build>

	   <dependencies>
		   <dependency>
	        <groupId>org.checkerframework</groupId>
	        <artifactId>checker-qual</artifactId>
	      </dependency>
	      <dependency>
	        <groupId>org.checkerframework</groupId>
	        <artifactId>checker</artifactId>
	      </dependency>
	      <dependency>
	        <groupId>org.checkerframework</groupId>
	        <artifactId>jdk8</artifactId>
	      </dependency>
	   </dependencies>
	 </profile>
	 
	</profiles>
</project>
