<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-pom</artifactId>
    <version>1.11.18</version>
  </parent>
  <groupId>com.amazonaws</groupId>
  <artifactId>aws-java-sdk-marketplacecommerceanalytics</artifactId>
  <name>AWS Java SDK for AWS Marketplace Commerce Analytics</name>
  <description>The AWS Java SDK for AWS Marketplace Commerce Analytics Service module holds the client classes that are used for communicating with AWS Marketplace Commerce Analytics Service</description>
  <url>https://aws.amazon.com/sdkforjava</url>

  <!-- The dependencies section in pom.xml is auto generated. No manual changes are allowed -->
  <dependencies>
    <dependency>
        <artifactId>aws-java-sdk-core</artifactId>
        <groupId>com.amazonaws</groupId>
        <optional>false</optional>
        <version>1.11.18</version>
    </dependency>
</dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
      </plugin>

      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-javadoc-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

  <!-- This profile uses the JAPICMP plugin to generate a report of changes between the release version and the latest version -->
  <!-- For more information on the plugin, see https://github.com/siom79/japicmp -->
  <profiles>
    <profile>
      <id>versiondiff</id>
      <build>
        <plugins>
          <plugin>
            <groupId>com.github.siom79.japicmp</groupId>
            <artifactId>japicmp-maven-plugin</artifactId>
            <version>0.5.0</version>
            <executions>
              <execution>
                <phase>verify</phase>
                <goals>
                  <goal>cmp</goal>
                </goals>
              </execution>
            </executions>
            <configuration>
              <oldVersion>
                <dependency>
                  <groupId>com.amazonaws</groupId>
                  <artifactId>aws-java-sdk-marketplacecommerceanalytics</artifactId>
                  <version>RELEASE</version>
                </dependency>
              </oldVersion>
              <newVersion>
                <file>
                  <path>${project.build.directory}/${project.artifactId}-${project.version}.jar</path>
                </file>
              </newVersion>
              <parameter>
                <onlyModified>true</onlyModified>
                <accessModifier>public</accessModifier>
                <breakBuildOnModifications>false</breakBuildOnModifications>
                <breakBuildOnBinaryIncompatibleModifications>false</breakBuildOnBinaryIncompatibleModifications>
                <onlyBinaryIncompatible>false</onlyBinaryIncompatible>
              </parameter>
            </configuration>
          </plugin>
        </plugins>
      </build>
    </profile>
  </profiles>
</project>
