<?xml version="1.0" encoding="UTF-8"?>

<!--
  ~ Copyright 2016 Cisco Systems, Inc.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License"); you may
  ~ not use this file except in compliance with the License. You may obtain
  ~ a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ Unless required by applicable law or agreed to in writing, software
  ~ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  ~ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  ~ License for the specific language governing permissions and limitations
  ~ under the License.
  ~
  -->

<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>

    <groupId>com.cisco.gerrit.plugins</groupId>
    <artifactId>slack-integration</artifactId>
    <packaging>jar</packaging>
    <version>2.10.7</version>
    <name>Slack Integration Plugin</name>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

        <gerrit-api-type>plugin</gerrit-api-type>
        <gerrit-api-version>${project.version}</gerrit-api-version>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.4</version>
                <configuration>
                    <archive>
                        <manifestEntries>
                            <Implementation-Vendor>
                                Cisco Systems, Inc.
                            </Implementation-Vendor>
                            <Implementation-URL>
                                https://gerrit-review.googlesource.com/#/admin/projects/plugins/slack-integration
                            </Implementation-URL>
                            <Implementation-Title>
                                Slack Integration
                            </Implementation-Title>
                            <Implementation-Version>
                                ${project.version}
                            </Implementation-Version>
                            <Gerrit-ApiType>
                                ${gerrit-api-type}
                            </Gerrit-ApiType>
                            <Gerrit-ApiVersion>
                                ${gerrit-api-version}
                            </Gerrit-ApiVersion>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>

            <!--<plugin>-->
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <!--<artifactId>maven-surefire-plugin</artifactId>-->
                <!--<version>2.18.1</version>-->
                <!--<configuration>-->
                    <!--<excludes>-->
                        <!--<excludes>**/*IntegrationTest.java</excludes>-->
                    <!--</excludes>-->
                <!--</configuration>-->
            <!--</plugin>-->

            <!--<plugin>-->
                <!--<groupId>org.apache.maven.plugins</groupId>-->
                <!--<artifactId>maven-failsafe-plugin</artifactId>-->
                <!--<version>2.18.1</version>-->
                <!--<configuration>-->
                    <!--<includes>-->
                        <!--<include>**/*IntegrationTest.java</include>-->
                    <!--</includes>-->
                <!--</configuration>-->
            <!--</plugin>-->

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

    <repositories>
        <repository>
            <id>gerrit-api-repository</id>
            <url>https://gerrit-api.commondatastorage.googleapis.com/release/
            </url>
        </repository>
    </repositories>

    <dependencies>
        <dependency>
            <groupId>com.google.gerrit</groupId>
            <artifactId>gerrit-${gerrit-api-type}-api</artifactId>
            <version>${gerrit-api-version}</version>
            <scope>provided</scope>
        </dependency>

        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>1.7.9</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.11</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-all</artifactId>
            <version>1.10.19</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-module-junit4</artifactId>
            <version>1.6.2</version>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.powermock</groupId>
            <artifactId>powermock-api-mockito</artifactId>
            <version>1.6.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
