<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright (C) 2012, IBM Corporation and others

  This program and the accompanying materials are made available under the
  terms of the Eclipse Distribution License v. 1.0 which is available at
  http://www.eclipse.org/org/documents/edl-v10.php.

  SPDX-License-Identifier: BSD-3-Clause
-->

<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>
    <groupId>org.eclipse.jgit</groupId>
    <artifactId>org.eclipse.jgit-parent</artifactId>
    <version>5.7.0.202002241735-m3</version>
  </parent>

  <artifactId>org.eclipse.jgit.pgm.test</artifactId>
  <name>JGit - Command Line Interface Tests</name>

  <description>
    Tests for command line client tools built on top of JGit.
  </description>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>compile</scope>
    </dependency>

    <dependency>
      <groupId>args4j</groupId>
      <artifactId>args4j</artifactId>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit.junit</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.eclipse.jgit</groupId>
      <artifactId>org.eclipse.jgit.pgm</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>org.tukaani</groupId>
      <artifactId>xz</artifactId>
      <optional>true</optional>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src/</sourceDirectory>
    <testSourceDirectory>tst/</testSourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>test-jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <configuration>
          <argLine>@{argLine} -Xmx512m -Djava.io.tmpdir=${project.build.directory}</argLine>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
