<?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.2</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.2</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.1</jackson-databind.version>

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

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

		<bcpkix.version>1.51</bcpkix.version>
		<bcprov.version>1.51</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-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>
