<?xml version="1.0" encoding="UTF-8"?>
<!--
Copyright (C) 2013 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>
  <parent>
    <artifactId>github-parent</artifactId>
    <groupId>com.googlesource.gerrit.plugins.github</groupId>
    <version>2.15.7</version>
  </parent>

  <artifactId>github-plugin</artifactId>
  <packaging>jar</packaging>
  <name>Gerrit Code Review - GitHub plugin</name>

  <properties>
    <Gerrit-ApiType>plugin</Gerrit-ApiType>
    <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
    <gerrit_src>/Users/lucamilanesio/Documents/workspace-gerrit/gerrithub/gerrit</gerrit_src>
  </properties>

  <build>
    <plugins>
      <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.*:*</exclude>
              <exclude>javax.inject:*:*</exclude>
              <exclude>aopalliance:aopalliance:*</exclude>
              <exclude>org.slf4j:*</exclude>
              <exclude>log4j:log4j:*</exclude>
              <exclude>commons-lang:*:*</exclude>
              <exclude>commons-codec:*:*</exclude>
              <exclude>commons-io:*:*</exclude>
              <exclude>com.google.guava:*</exclude>
            </excludes>
          </artifactSet>
          <transformers>
            <transformer
              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Gerrit-Module>com.googlesource.gerrit.plugins.github.GuiceModule</Gerrit-Module>
                <Gerrit-HttpModule>com.googlesource.gerrit.plugins.github.GuiceHttpModule</Gerrit-HttpModule>
                <Gerrit-InitStep>com.googlesource.gerrit.plugins.github.InitGitHub</Gerrit-InitStep>

                <Implementation-Vendor>GerritForge</Implementation-Vendor>
                <Implementation-URL>http://www.gerritforge.com</Implementation-URL>

                <Implementation-Title>${Gerrit-ApiType}
                  ${project.artifactId}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>

                <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType>
                <Gerrit-ApiVersion>${Gerrit-ApiVersion}</Gerrit-ApiVersion>
                <Gerrit-PluginName>github-plugin</Gerrit-PluginName>
              </manifestEntries>
            </transformer>
          </transformers>

        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>com.google.gerrit</groupId>
      <artifactId>gerrit-plugin-api</artifactId>
      <version>${Gerrit-ApiVersion}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>${project.groupId}</groupId>
      <artifactId>github-oauth</artifactId>
      <version>${project.version}</version>
    </dependency>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.0.1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.apache.axis</groupId>
      <artifactId>axis</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>org.apache.axis</groupId>
      <artifactId>axis-jaxrpc</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>org.eclipse.mylyn.github</groupId>
      <artifactId>org.eclipse.egit.github.core</artifactId>
      <version>1.3.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.4</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.mail</groupId>
      <artifactId>mail</artifactId>
      <version>1.4.5-rc1</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>commons-discovery</groupId>
      <artifactId>commons-discovery</artifactId>
      <version>20040218.194635</version>
    </dependency>
    <dependency>
      <groupId>org.apache.velocity</groupId>
      <artifactId>velocity</artifactId>
      <version>1.7</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>org.jukito</groupId>
      <artifactId>jukito</artifactId>
      <version>1.2</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>
