<?xml version="1.0"?>
<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">
    <!--
    /**
     * Licensed to the Apache Software Foundation (ASF) under one
     * or more contributor license agreements.  See the NOTICE file
     * distributed with this work for additional information
     * regarding copyright ownership.  The ASF licenses this file
     * to you 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>
    <parent>
        <artifactId>hbase</artifactId>
        <groupId>org.apache.hbase</groupId>
        <version>2.0.0-SNAPSHOT</version>
        <relativePath>..</relativePath>
    </parent>

    <artifactId>hbase-protocol</artifactId>
    <name>Apache HBase - Protocol</name>
    <description>Protobuf protocol classes used by HBase to communicate.</description>

    <properties>
      <maven.javadoc.skip>true</maven.javadoc.skip>
    </properties>

    <build>
      <plugins>
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-site-plugin</artifactId>
          <configuration>
            <skip>true</skip>
          </configuration>
        </plugin>
        <!-- Make a jar and put the sources in the jar -->
        <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-source-plugin</artifactId>
        </plugin>
      <plugin>
        <!--Make it so assembly:single does nothing in here-->
        <artifactId>maven-assembly-plugin</artifactId>
        <version>${maven.assembly.version}</version>
        <configuration>
          <skipAssembly>true</skipAssembly>
        </configuration>
      </plugin>
        <plugin>
            <artifactId>maven-surefire-plugin</artifactId>
            <!-- Always skip the second part executions, since we only run simple unit tests in this module -->
            <executions>
                <execution>
                    <id>secondPartTestsExecution</id>
                    <phase>test</phase>
                    <goals>
                        <goal>test</goal>
                    </goals>
                    <configuration>
                        <skip>true</skip>
                    </configuration>
                </execution>
            </executions>
        </plugin>
       </plugins>
      <pluginManagement>
        <plugins>
          <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
          <plugin>
            <groupId>org.eclipse.m2e</groupId>
            <artifactId>lifecycle-mapping</artifactId>
            <version>1.0.0</version>
            <configuration>
              <lifecycleMappingMetadata>
                <pluginExecutions>
                  <pluginExecution>
                    <pluginExecutionFilter>
                      <groupId>org.apache.hadoop</groupId>
                      <artifactId>hadoop-maven-plugins</artifactId>
                      <versionRange>[2.0.5-alpha,)</versionRange>
                      <goals>
                        <goal>protoc</goal>
                      </goals>
                    </pluginExecutionFilter>
                    <action>
                      <ignore></ignore>
                    </action>
                  </pluginExecution>
                </pluginExecutions>
              </lifecycleMappingMetadata>
            </configuration>
          </plugin>
         </plugins>
      </pluginManagement>
    </build>

    <dependencies>
      <!-- Intra-project dependencies -->
      <dependency>
        <groupId>org.apache.hbase</groupId>
        <artifactId>hbase-annotations</artifactId>
        <exclusions>
          <exclusion>
            <groupId>jdk.tools</groupId>
            <artifactId>jdk.tools</artifactId>
          </exclusion>
        </exclusions>
      </dependency>
      <!-- General dependencies -->
      <dependency>
        <groupId>com.google.protobuf</groupId>
        <artifactId>protobuf-java</artifactId>
      </dependency>
      <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
      </dependency>
    </dependencies>

    <profiles>
        <!-- Skip the tests in this module -->
        <profile>
            <id>skip-rpc-tests</id>
            <activation>
                <property>
                    <name>skip-rpc-tests</name>
                </property>
            </activation>
            <properties>
                <surefire.skipFirstPart>true</surefire.skipFirstPart>
            </properties>
        </profile>
        <profile>
          <id>compile-protobuf</id>
          <activation>
            <property>
              <name>compile-protobuf</name>
            </property>
          </activation>
          <build>
            <plugins>
              <plugin>
                <groupId>org.apache.hadoop</groupId>
                <artifactId>hadoop-maven-plugins</artifactId>
                <executions>
                  <execution>
                    <id>compile-protoc</id>
                    <phase>generate-sources</phase>
                    <goals>
                      <goal>protoc</goal>
                    </goals>
                    <configuration>
                      <imports>
                        <param>${basedir}/src/main/protobuf</param>
                      </imports>
                      <source>
                        <directory>${basedir}/src/main/protobuf</directory>
                        <!-- Unfortunately, Hadoop plugin does not support *.proto.
                             We have to individually list every proto file here -->
                        <includes>
                          <include>AccessControl.proto</include>
                          <include>Admin.proto</include>
                          <include>Aggregate.proto</include>
                          <include>Authentication.proto</include>
                          <include>Cell.proto</include>
                          <include>Client.proto</include>
                          <include>ClusterId.proto</include>
                          <include>ClusterStatus.proto</include>
                          <include>Comparator.proto</include>
                          <include>Encryption.proto</include>
                          <include>ErrorHandling.proto</include>
                          <include>FS.proto</include>
                          <include>Filter.proto</include>
                          <include>HBase.proto</include>
                          <include>HFile.proto</include>
                          <include>LoadBalancer.proto</include>
                          <include>MapReduce.proto</include>
                          <include>Master.proto</include>
                          <include>MasterProcedure.proto</include>
                          <include>MultiRowMutation.proto</include>
                          <include>Procedure.proto</include>
                          <include>Quota.proto</include>
                          <include>RPC.proto</include>
                          <include>RSGroup.proto</include>
                          <include>RSGroupAdmin.proto</include>
                          <include>RegionNormalizer.proto</include>
                          <include>RegionServerStatus.proto</include>
                          <include>RowProcessor.proto</include>
                          <include>SecureBulkLoad.proto</include>
                          <include>Snapshot.proto</include>
                          <include>Tracing.proto</include>
                          <include>VisibilityLabels.proto</include>
                          <include>WAL.proto</include>
                          <include>ZooKeeper.proto</include>
                          <include>SparkFilter.proto</include>
                          <include>ColumnAggregationNullResponseProtocol.proto</include>
                          <include>ColumnAggregationProtocol.proto</include>
                          <include>ColumnAggregationWithErrorsProtocol.proto</include>
                          <include>DummyRegionServerEndpoint.proto</include>
                          <include>IncrementCounterProcessor.proto</include>
                          <include>PingProtocol.proto</include>
                          <include>TestProcedure.proto</include>
                          <include>test.proto</include>
                          <include>test_rpc_service.proto</include>
                          <include>CellMessage.proto</include>
                          <include>CellSetMessage.proto</include>
                          <include>ColumnSchemaMessage.proto</include>
                          <include>NamespacePropertiesMessage.proto</include>
                          <include>NamespacesMessage.proto</include>
                          <include>ScannerMessage.proto</include>
                          <include>StorageClusterStatusMessage.proto</include>
                          <include>TableInfoMessage.proto</include>
                          <include>TableListMessage.proto</include>
                          <include>TableSchemaMessage.proto</include>
                          <include>VersionMessage.proto</include>
                        </includes>
                      </source>
                      <!--<output>${project.build.directory}/generated-sources/java</output>-->
                     <output>${basedir}/src/main/java/</output>
                    </configuration>
                  </execution>
                </executions>
              </plugin>
            </plugins>
          </build>
        </profile>
    </profiles>
</project>
