<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/xsd/maven-4.0.0.xsd">
<!--
Copyright (C) 2012 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.
-->
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.googlesource.gerrit.plugins.gitblit</groupId>
  <artifactId>gitblit-plugin</artifactId>
  <description>GitBlit for Gerrit integrated as a plugin</description>
  <name>Gerrit - GitBlit Plugin</name>
  <version>2.11-SNAPSHOT</version>
  <licenses>
    <license>
      <name>Apache License 2.0</name>
      <url>http://www.apache.org/licenses/LICENSE-2.0.html</url>
    </license>
  </licenses>
  <properties>
    <Gerrit-ApiType>plugin</Gerrit-ApiType>
    <Gerrit-ApiVersion>${project.version}</Gerrit-ApiVersion>
    <Gerrit-ReloadMode>restart</Gerrit-ReloadMode>
    <Gerrit-InitStep>com.googlesource.gerrit.plugins.gitblit.GitBlitInitStep</Gerrit-InitStep>
    <Gerrit-Module>com.googlesource.gerrit.plugins.gitblit.GitBlitModule</Gerrit-Module>
    <Gerrit-HttpModule>com.googlesource.gerrit.plugins.gitblit.GitBlitServletModule</Gerrit-HttpModule>
    <wicket.version>1.4.23</wicket.version>
  </properties>
  <dependencies>
    <dependency>
      <groupId>com.google.gerrit</groupId>
      <artifactId>gerrit-plugin-api</artifactId>
      <version>${Gerrit-ApiVersion}</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.gitblit</groupId>
      <artifactId>gitblit</artifactId>
      <version>1.7.0-SNAPSHOT</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-auth-roles</artifactId>
      <version>${wicket.version}</version>
    </dependency>
    <dependency>
      <groupId>org.apache.wicket</groupId>
      <artifactId>wicket-extensions</artifactId>
      <version>${wicket.version}</version>
    </dependency>
  </dependencies>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.5.1</version>
        <configuration>
          <source>1.6</source>
          <target>1.6</target>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>2.4</version>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.6</version>
        <configuration>
          <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
          <artifactSet>
            <excludes>
              <exclude>org.bouncycastle:*</exclude>
              <exclude>org.slf4j:*</exclude>
              <exclude>com.google.guava:*</exclude>
              <exclude>org.eclipse.jgit:*</exclude>
              <exclude>log4j:*</exclude>
              <exclude>com.google.code.gson:*</exclude>
              <exclude>com.googlecode.javaewah:*</exclude>
              <exclude>com.jcraft:*</exclude>
              <exclude>javax.servlet:*</exclude>
              <exclude>org.apache.lucene:lucene-core</exclude>
              <exclude>org.apache.lucene:lucene-analyzers-common</exclude>
              <exclude>org.apache.lucene:lucene-queries</exclude>
              <exclude>org.apache.lucene:lucene-queryparser</exclude>
              <exclude>org.apache.sshd:*</exclude>
              <exclude>org.apache.mina:*</exclude>
              <exclude>org.bouncycastle:*</exclude>
              <exclude>com.google.inject:*</exclude>
              <exclude>com.google.inject.extensions:*</exclude>
              <exclude>javax.inject:*</exclude>
              <exclude>aopalliance:*</exclude>
              <exclude>org.pegdown:*</exclude>
              <exclude>org.parboiled:*</exclude>
              <exclude>commons-io:commons-io</exclude>
              <exclude>commons-codec:commons-codec</exclude>
              <exclude>args4j:args4j</exclude>
              <exclude>org.apache.commons:commons-compress</exclude>
              <exclude>org.tukaani:xz</exclude>
              <exclude>org.ow2.asm:*</exclude>
              <exclude>org.eclipse.jetty.aggregate:*</exclude>
            </excludes>
          </artifactSet>
          <transformers>
            <transformer
              implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
              <manifestEntries>
                <Gerrit-PluginName>gitblit</Gerrit-PluginName>
                <Gerrit-Module>${Gerrit-Module}</Gerrit-Module>
                <Gerrit-HttpModule>${Gerrit-HttpModule}</Gerrit-HttpModule>
                <Gerrit-InitStep>${Gerrit-InitStep}</Gerrit-InitStep>
                <Implementation-Vendor>Gerrit Code Review</Implementation-Vendor>
                <Implementation-URL>http://code.google.com/p/gerrit/</Implementation-URL>
                <Implementation-Title>Plugin ${project.artifactId}</Implementation-Title>
                <Implementation-Version>${project.version}</Implementation-Version>
                <Gerrit-ApiType>${Gerrit-ApiType}</Gerrit-ApiType>
                <Gerrit-ApiVersion>${Gerrit-ApiVersion}</Gerrit-ApiVersion>
                <Gerrit-ReloadMode>${Gerrit-ReloadMode}</Gerrit-ReloadMode>
              </manifestEntries>
            </transformer>
          </transformers>
        </configuration>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <repositories>
    <repository>
      <id>gerrit-api-repository</id>
      <url>https://gerrit-api.commondatastorage.googleapis.com/release</url>
    </repository>
    <repository>
      <id>gerritforge-gitblit-repository</id>
      <url>http://gerritforge.com/snapshot/</url>
    </repository>
    <repository>
      <id>jgit-snapshots</id>
      <url>https://repo.eclipse.org/content/groups/snapshots</url>
    </repository>
  </repositories>

</project>
