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

<!--
  ~ Copyright 2017 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.16-rc3</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>
                    <finalName>${project.artifactId}</finalName>
                </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>3.7.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

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