<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2008 The Android Open Source Project

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.googlesource.gerrit.plugins.bugzilla</groupId>
  <artifactId>its-bugzilla</artifactId>
  <version>2.10</version>

  <name>Gerrit - Bugzilla support</name>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <Gerrit-ApiType>plugin</Gerrit-ApiType>
    <Gerrit-ReloadMode>reload</Gerrit-ReloadMode>
    <Gerrit-PluginName>its-bugzilla</Gerrit-PluginName>
    <Gerrit-InitStep>com.googlesource.gerrit.plugins.hooks.bz.InitBugzilla</Gerrit-InitStep>
    <Gerrit-Module>com.googlesource.gerrit.plugins.hooks.bz.BugzillaModule</Gerrit-Module>
    <easymockVersion>3.0</easymockVersion>
    <powermockVersion>1.5</powermockVersion>
    <slf4jVersion>1.6.2</slf4jVersion>
  </properties>

  <build>
    <plugins>
      <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>
          <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-shade-plugin</artifactId>
          <version>1.6</version>
          <configuration>
            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
            <artifactSet>
              <excludes>
                <exclude>com.google.gerrit:*</exclude>
                <exclude>org.bouncycastle:*</exclude>
                <exclude>org.slf4j:*</exclude>
                <exclude>com.google.guava:*</exclude>
                <exclude>org.eclipse.jgit:*</exclude>
              </excludes>
            </artifactSet>
            <transformers>
              <transformer
                implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                <manifestEntries>
                  <Implementation-Vendor>Wikimedia Foundation, Inc.</Implementation-Vendor>
                  <Implementation-URL>https://www.wikimediafoundation.org/</Implementation-URL>
                  <Implementation-Title>Plugin ${project.artifactId}</Implementation-Title>
                  <Implementation-Version>${project.version}</Implementation-Version>
                  <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType>
                  <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
                  <Gerrit-ReloadMode>${Gerrit-ReloadMode}</Gerrit-ReloadMode>
                  <Gerrit-PluginName>${Gerrit-PluginName}</Gerrit-PluginName>
                  <Gerrit-InitStep>${Gerrit-InitStep}</Gerrit-InitStep>
                  <Gerrit-Module>${Gerrit-Module}</Gerrit-Module>
                </manifestEntries>
              </transformer>
            </transformers>
          </configuration>
          <executions>
            <execution>
              <phase>package</phase>
              <goals>
                <goal>shade</goal>
              </goals>
            </execution>
          </executions>
        </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>com.googlesource.gerrit.plugins.its</groupId>
      <artifactId>its-base</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>com.j2bugzilla</groupId>
      <artifactId>j2bugzilla</artifactId>
      <version>2.2.1</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>${slf4jVersion}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
      <version>${easymockVersion}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-module-junit4</artifactId>
      <version>${powermockVersion}</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.powermock</groupId>
      <artifactId>powermock-api-easymock</artifactId>
      <version>${powermockVersion}</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

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

</project>
