<?xml version="1.0" encoding="UTF-8"?>
<!--
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.
-->
<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.google.gerrit</groupId>
  <artifactId>gerrit-package-plugins</artifactId>
  <packaging>war</packaging>
  <version>2.6-SNAPSHOT</version>

  <name>Gerrit Code Review - Package Plugins</name>
  <url>http://code.google.com/p/gerrit/</url>

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

  <dependencies>
    <dependency>
      <groupId>com.google.gerrit</groupId>
      <artifactId>gerrit-war</artifactId>
      <version>${project.version}</version>
      <type>war</type>
    </dependency>
    <dependency>
      <groupId>com.googlesource.gerrit.plugins.replication</groupId>
      <artifactId>replication</artifactId>
      <version>1.1-rc0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.googlesource.gerrit.plugins.reviewnotes</groupId>
      <artifactId>reviewnotes</artifactId>
      <version>1.0-rc1</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>com.googlesource.gerrit.plugins.validators</groupId>
      <artifactId>commit-message-length-validator</artifactId>
      <version>1.0-rc1</version>
      <scope>provided</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-dependency-plugin</artifactId>
        <version>2.1</version>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>copy-dependencies</goal>
            </goals>
            <configuration>
              <includeTypes>jar</includeTypes>
              <stripVersion>true</stripVersion>
              <outputDirectory>${project.build.directory}/${project.build.finalName}/WEB-INF/plugins</outputDirectory>
            </configuration>
          </execution>
        </executions>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-war-plugin</artifactId>
        <version>2.1.1</version>
        <configuration>
          <warName>gerrit-full-${project.version}</warName>
          <archive>
            <addMavenDescriptor>false</addMavenDescriptor>
            <manifestEntries>
              <Main-Class>Main</Main-Class>
              <Implementation-Title>Gerrit Code Review</Implementation-Title>
              <Implementation-Version>${project.version}</Implementation-Version>
            </manifestEntries>
          </archive>
        </configuration>
      </plugin>
    </plugins>
  </build>
  <repositories>
    <repository>
      <id>gerrit-plugins</id>
      <url>https://gerrit-plugins.commondatastorage.googleapis.com</url>
    </repository>
  </repositories>
</project>
