<?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.kaazing</groupId>
        <artifactId>community</artifactId>
        <version>2.26</version>
    </parent>

    <artifactId>gateway</artifactId>
    <name>Kaazing Gateway</name>
    <version>5.6.2</version>
    <packaging>pom</packaging>

    <url>https://github.com/kaazing/gateway</url>
    <description>Kaazing Gateway</description>

    <scm>
        <url>https://github.com/kaazing/gateway</url>
        <connection>scm:git:https://github.com/kaazing/gateway.git</connection>
    </scm>

    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.testSource>1.8</maven.compiler.testSource>
        <maven.compiler.testTarget>1.8</maven.compiler.testTarget>
        <hazelcast.version>3.7.4</hazelcast.version>
        <hazelcast.aws.version>1.1.1</hazelcast.aws.version>
        <k3po.version>3.0.0-alpha-69</k3po.version>
        <jdom.version>1.1</jdom.version>
        <jmock.version>2.6.0</jmock.version>
        <slf4j.log4j.version>1.7.21</slf4j.log4j.version>
        <agrona.version>0.9.1</agrona.version>
        <enforcer.skip>true</enforcer.skip>
        <!-- Try to avoid huge heap size on Travis builds -->
        <failsafeArgLine>-Xmx1024m</failsafeArgLine>
        <opencsv.version>2.3</opencsv.version>
        <jmh.version>1.14</jmh.version>
        <community.version>2.25</community.version>
        <codehaus.license.version>1.12</codehaus.license.version>
        <maven.enforcer.version>1.4.1</maven.enforcer.version>
    </properties>

    <modules>
        <module>bridge</module>
        <module>bom</module>
        <!--<module>docker</module> -->
        <module>distribution</module>
        <module>management</module>
        <module>resource.address/spi</module>
        <module>resource.address/http</module>
        <module>resource.address/httpx</module>
        <module>resource.address/httpxdraft</module>
        <module>resource.address/httpxe</module>
        <module>resource.address/pipe</module>
        <module>resource.address/rtmp</module>
        <module>resource.address/sse</module>
        <module>resource.address/ssl</module>
        <module>resource.address/tcp</module>
        <module>resource.address/udp</module>
        <module>resource.address/ws</module>
        <module>resource.address/wsdraft</module>
        <module>resource.address/wse</module>
        <module>resource.address/wsn</module>
        <module>resource.address/wsx</module>
        <module>resource.address/wsxdraft</module>
        <module>security</module>
        <module>server</module>
        <module>server.api</module>
        <module>server.spi</module>
        <module>service/spi</module>
        <module>service/amqp</module>
        <module>service/broadcast</module>
        <module>service/echo</module>
        <module>service/http.balancer</module>
        <module>service/http.directory</module>
        <module>service/http.proxy</module>
        <module>service/http.redirect</module>
        <module>service/proxy</module>
        <module>service/turn.rest</module>
        <module>service/update.check</module>
        <module>service/update.check.management</module>
        <module>transport/spi</module>
        <module>transport/bio</module>
        <module>transport/http</module>
        <module>transport/nio</module>
        <module>transport/pipe</module>
        <module>transport/sse</module>
        <module>transport/ssl</module>
        <module>transport/ws</module>
        <module>transport/wseb</module>
        <module>transport/wsn</module>
        <module>util</module>
        <module>mina.core</module>
        <module>mina.netty</module>
        <module>test.util</module>
        <module>update.check</module>
    </modules>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>k3po.junit</artifactId>
                <version>${k3po.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock</artifactId>
                <version>${jmock.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock-legacy</artifactId>
                <version>${jmock.version}</version>
                <scope>provided</scope>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock-junit4</artifactId>
                <version>${jmock.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jmock</groupId>
                <artifactId>jmock-script</artifactId>
                <version>${jmock.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>${slf4j.log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-parent</artifactId>
                <version>${slf4j.log4j.version}</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>jcl-over-slf4j</artifactId>
                <version>${slf4j.log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-core</artifactId>
                <version>1.3</version>
            </dependency>
            <dependency>
                <groupId>org.hamcrest</groupId>
                <artifactId>hamcrest-library</artifactId>
                <version>1.3</version>
            </dependency>
            <dependency>
                <groupId>commons-cli</groupId>
                <artifactId>commons-cli</artifactId>
                <version>1.2</version>
            </dependency>
            <dependency>
                <groupId>org.apache.xmlbeans</groupId>
                <artifactId>xmlbeans</artifactId>
                <version>2.4.0</version>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast</artifactId>
                <version>${hazelcast.version}</version>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast-client</artifactId>
                <version>${hazelcast.version}</version>
            </dependency>
            <dependency>
                <groupId>com.hazelcast</groupId>
                <artifactId>hazelcast-aws</artifactId>
                <version>${hazelcast.aws.version}</version>
            </dependency>
            <dependency>
                <groupId>org.jdom</groupId>
                <artifactId>jdom</artifactId>
                <version>${jdom.version}</version>
            </dependency>
            <dependency>
                <groupId>org.agrona</groupId>
                <artifactId>Agrona</artifactId>
                <version>${agrona.version}</version>
            </dependency>
            <dependency>
                <groupId>org.json</groupId>
                <artifactId>json</artifactId>
                <version>20090211</version>
            </dependency>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>gateway.truststore</artifactId>
                <version>1.0.0.81</version>
                <type>jar</type>
            </dependency>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>specification.http</artifactId>
                <version>${k3po.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>specification.tcp</artifactId>
                <version>${k3po.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>specification.udp</artifactId>
                <version>${k3po.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>specification.httpxe</artifactId>
                <version>${k3po.version}</version>
                <scope>test</scope>
            </dependency>     
            <dependency>
                <groupId>org.kaazing</groupId>
                <artifactId>netx.data</artifactId>
                <version>0.4.0</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-core</artifactId>
                <version>${jmh.version}</version>
            </dependency>
            <dependency>
                <groupId>org.openjdk.jmh</groupId>
                <artifactId>jmh-generator-annprocess</artifactId>
                <version>${jmh.version}</version>
            </dependency>
       </dependencies>
    </dependencyManagement>

    <build>
        <pluginManagement>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-failsafe-plugin</artifactId>
                    <configuration>
                        <argLine>@{failsafeArgLine}</argLine>
                        <reportsDirectory>${project.build.directory}/surefire-reports</reportsDirectory>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.19</version>
                    <configuration>
                        <argLine>${surefireArgLine}</argLine>
                        <skipTests>${skipTests}</skipTests>
                    </configuration>
                </plugin>
                <!-- Adds properties to manifest which are used for finding 
                    duplicate jars on classpath -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <configuration>
                        <archive>
                            <manifestEntries>
                                <Implementation-Title>${project.name}</Implementation-Title>
                                <Implementation-Version>${project.version}</Implementation-Version>
                                <Artifact-Name>${project.groupId}:${project.artifactId}</Artifact-Name>
                            </manifestEntries>
                        </archive>
                    </configuration>
                </plugin>
                <!-- Ignore/Execute plugin execution by m2e in Eclipse -->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-javadoc-plugin</artifactId>
                                        <versionRange>[1,)</versionRange>
                                        <goals>
                                            <goal>jar</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.apache.maven.plugins</groupId>
                                        <artifactId>maven-antrun-plugin</artifactId>
                                        <versionRange>[1.3,)</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>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>copy-dependencies</goal>
                                            <goal>unpack</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.kaazing</groupId>
                                        <artifactId>license-maven-plugin</artifactId>
                                        <versionRange>[1.0.0,)</versionRange>
                                        <goals>
                                            <goal>verify-notice</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>org.kaazing</groupId>
                                        <artifactId>version-properties-maven-plugin</artifactId>
                                        <versionRange>[2.0.0,)</versionRange>
                                        <goals>
                                            <goal>version</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>com.mycila</groupId>
                    <artifactId>license-maven-plugin</artifactId>
                    <configuration>
                        <excludes combine.children="append">
                            <exclude>**/*.keytab</exclude>
                            <exclude>**/keystore</exclude>
                            <exclude>**/keystore.cert</exclude>
                            <exclude>**/keystore.pw</exclude>
                            <exclude>**/*.ResourceAddressFactorySpi</exclude>
                        </excludes>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>

        <plugins>
            <plugin>
                <dependencies>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.http</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                   <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.http.multi.auth</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.httpx</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.ws</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.tcp</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.udp</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.wse</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.x-kaazing-ping-pong</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>specification.turn</artifactId>
                        <version>${k3po.version}</version>
                    </dependency>
                </dependencies>
                <groupId>org.kaazing</groupId>
                <artifactId>k3po-maven-plugin</artifactId>
                <version>${k3po.version}</version>
                <configuration>
                    <skipTests>${skipITs}</skipTests>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>start</goal>
                            <goal>stop</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-dependency-plugin</artifactId>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>check</goal>
                        </goals>
                        <phase>validate</phase>
                        <configuration>
                            <skip>true</skip>
                        </configuration>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.kaazing</groupId>
                        <artifactId>code.quality</artifactId>
                        <version>${code.quality.version}</version>
                    </dependency>
                </dependencies>
            </plugin>
            <plugin>
                <groupId>org.eluder.coveralls</groupId>
                <artifactId>coveralls-maven-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>cobertura-maven-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <format>xml</format>
                    <maxmem>256m</maxmem>
                    <!-- aggregated reports for multi-module projects -->
                    <aggregate>true</aggregate>
                    <instrumentation>
                        <excludes>
                            <exclude>schemaorg_apache_xmlbeans/system/**/*.class</exclude>
                            <exclude>org/kaazing/gateway/server/config/**/*.class</exclude>
                            <exclude>org/kaazing/xmlns/**/*.class</exclude>
                        </excludes>
                    </instrumentation>
                </configuration>
            </plugin>
            <!-- Here only to turn off linting in Java Doc as for Java 8, 
                this should be removed when https://github.com/kaazing/gateway/issues/157 
                is fixed -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${javadoc.plugin.version}</version>
                <configuration>
                    <excludePackageNames>*.internal</excludePackageNames>
                    <additionalparam>-Xdoclint:none</additionalparam>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <profiles>
        <profile>
            <id>sonar</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.jacoco</groupId>
                        <artifactId>jacoco-maven-plugin</artifactId>
                        <version>0.7.5.201505241946</version>
                        <executions>
                            <execution>
                                <id>pre-unit-test</id>
                                <goals>
                                    <goal>prepare-agent</goal>
                                </goals>
                                <configuration>
                                    <propertyName>surefireArgLine</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>post-unit-test</id>
                                <goals>
                                    <goal>report</goal>
                                </goals>
                            </execution>
                            <execution>
                                <id>pre-integration-test</id>
                                <goals>
                                    <goal>prepare-agent-integration</goal>
                                </goals>
                                <configuration>
                                    <propertyName>failsafeArgLine</propertyName>
                                </configuration>
                            </execution>
                            <execution>
                                <id>post-integration-test</id>
                                <goals>
                                    <goal>report-integration</goal>
                                </goals>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>

</project>

