<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">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.obolibrary.robot</groupId>
    <artifactId>robot</artifactId>
    <version>1.8.4</version>
  </parent>
  <artifactId>robot-command</artifactId>
  <name>robot-command</name>
  <description>Command-line interface for ROBOT: Commands for working with OWL ontologies, especially Open Biological and Biomedical Ontologes (OBO).</description>

  <build>
    <plugins>
      <!-- Enforce Google Java Style -->
      <plugin>
        <groupId>com.coveo</groupId>
        <artifactId>fmt-maven-plugin</artifactId>
        <version>2.9</version>
        <executions>
          <execution>
            <goals>
              <goal>format</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Run integration tests -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-failsafe-plugin</artifactId>
        <version>3.0.0-M5</version>
        <executions>
          <execution>
            <goals>
              <goal>integration-test</goal>
              <goal>verify</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Build a bin/robot.jar file with all dependencies -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>3.2.4</version>
        <executions>
          <execution>
            <phase>package</phase>
            <goals>
              <goal>shade</goal>
            </goals>
            <configuration>
              <filters>
                <filter>
                  <artifact>*:obographs</artifact>
                  <excludes>
                    <exclude>obo_context.jsonld</exclude>
                  </excludes>
                </filter>
                <!-- Only one log4j.properties file needs to be included, we'll use the CLI one -->
                <!-- We keep the core log4.properties file for logging from ROBOT as a library -->
                <filter>
                  <artifact>*:robot-core</artifact>
                  <excludes>
                    <exclude>log4j.properties</exclude>
                  </excludes>
                </filter>
                <filter>
                  <artifact>*:*</artifact>
                  <excludes>
                    <exclude>**/module-info.class</exclude>
                    <exclude>module-info.class</exclude>
                    <exclude>META-INF/*.MF</exclude>
                    <exclude>META-INF/*.DSA</exclude>
                    <exclude>META-INF/*.SF</exclude>
                    <exclude>META-INF/DEPENDENCIES</exclude>
                    <exclude>LICENSE</exclude>
                    <exclude>LICENSE.txt</exclude>
                    <exclude>META-INF/LICENSE</exclude>
                    <exclude>META-INF/LICENSE.*</exclude>
                    <exclude>NOTICE</exclude>
                    <exclude>META-INF/NOTICE</exclude>
                    <exclude>META-INF/NOTICE.*</exclude>
                    <exclude>plugin.xml</exclude>
                    <exclude>META-INF/*.xml</exclude>
                    <exclude>META-INF/maven/org.apache.ws.commons.axiom/axiom-common-impl/*</exclude>
                  </excludes>
                </filter>
              </filters>
              <finalName>robot</finalName>
              <outputDirectory>${project.parent.basedir}/bin</outputDirectory>
              <transformers>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                  <mainClass>org.obolibrary.robot.CommandLineInterface</mainClass>
                </transformer>
                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
              </transformers>
            </configuration>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>javax.inject</groupId>
      <artifactId>javax.inject</artifactId>
      <version>1</version>
    </dependency>
    <dependency>
      <groupId>com.github.ben-manes.caffeine</groupId>
      <artifactId>caffeine</artifactId>
      <version>2.5.6</version>
    </dependency>
    <dependency>
      <groupId>org.obolibrary.robot</groupId>
      <artifactId>robot-core</artifactId>
      <version>${project.parent.version}</version>
    </dependency>
    <dependency>
      <groupId>commons-cli</groupId>
      <artifactId>commons-cli</artifactId>
      <version>1.4</version>
    </dependency>
    <dependency>
      <groupId>commons-io</groupId>
      <artifactId>commons-io</artifactId>
      <version>2.8.0</version>
    </dependency>
  </dependencies>
</project>
