You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by bu...@apache.org on 2017/07/08 03:35:24 UTC

[51/57] [abbrv] [partial] hbase git commit: Revert "HBASE-17056 Remove checked in PB generated files Selective add of dependency on" Revert for now. Build unstable and some interesting issues around CLASSPATH

Revert "HBASE-17056 Remove checked in PB generated files Selective add of dependency on"
Revert for now. Build unstable and some interesting issues around
CLASSPATH

This reverts commit df93c13fd21a3f34aa3851893d715cbc4edb555b.


Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/6786b2b6
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/6786b2b6
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/6786b2b6

Branch: refs/heads/HBASE-18147
Commit: 6786b2b63e9ec7fe45c5ed800a54f4f80358c3c3
Parents: 68436c9
Author: Michael Stack <st...@apache.org>
Authored: Thu Jul 6 21:58:32 2017 -0700
Committer: Michael Stack <st...@apache.org>
Committed: Thu Jul 6 21:58:32 2017 -0700

----------------------------------------------------------------------
 hbase-client/pom.xml                            |     4 -
 hbase-endpoint/README.txt                       |    25 +-
 hbase-endpoint/pom.xml                          |   259 +-
 .../example/generated/BulkDeleteProtos.java     |  1792 +
 .../generated/ColumnAggregationProtos.java      |  1277 +
 .../ColumnAggregationWithErrorsProtos.java      |  1290 +
 ...ColumnAggregationWithNullResponseProtos.java |  1283 +
 .../DummyRegionServerEndpointProtos.java        |  1225 +
 .../IncrementCounterProcessorTestProtos.java    |  4059 +
 .../protobuf/generated/AggregateProtos.java     |  2375 +
 .../generated/SecureBulkLoadProtos.java         |  2088 +
 hbase-examples/README.txt                       |    27 +-
 hbase-examples/pom.xml                          |   312 +-
 .../example/generated/ExampleProtos.java        |  1149 +
 hbase-procedure/pom.xml                         |     4 -
 hbase-protocol-shaded/README.txt                |    49 +-
 hbase-protocol-shaded/pom.xml                   |   283 +-
 .../com/google/protobuf/AbstractMessage.java    |   646 +
 .../google/protobuf/AbstractMessageLite.java    |   383 +
 .../com/google/protobuf/AbstractParser.java     |   258 +
 .../google/protobuf/AbstractProtobufList.java   |   180 +
 .../hbase/shaded/com/google/protobuf/Any.java   |   899 +
 .../com/google/protobuf/AnyOrBuilder.java       |    70 +
 .../shaded/com/google/protobuf/AnyProto.java    |    59 +
 .../hbase/shaded/com/google/protobuf/Api.java   |  2473 +
 .../com/google/protobuf/ApiOrBuilder.java       |   258 +
 .../shaded/com/google/protobuf/ApiProto.java    |    98 +
 .../com/google/protobuf/BlockingRpcChannel.java |    51 +
 .../com/google/protobuf/BlockingService.java    |    64 +
 .../shaded/com/google/protobuf/BoolValue.java   |   452 +
 .../com/google/protobuf/BoolValueOrBuilder.java |    18 +
 .../com/google/protobuf/BooleanArrayList.java   |   272 +
 .../com/google/protobuf/ByteBufferWriter.java   |   185 +
 .../shaded/com/google/protobuf/ByteInput.java   |    81 +
 .../google/protobuf/ByteInputByteString.java    |   251 +
 .../shaded/com/google/protobuf/ByteOutput.java  |   116 +
 .../shaded/com/google/protobuf/ByteString.java  |  1565 +
 .../shaded/com/google/protobuf/BytesValue.java  |   454 +
 .../google/protobuf/BytesValueOrBuilder.java    |    18 +
 .../com/google/protobuf/CodedInputStream.java   |  3549 +
 .../com/google/protobuf/CodedOutputStream.java  |  3001 +
 .../com/google/protobuf/DescriptorProtos.java   | 39141 ++++++++
 .../shaded/com/google/protobuf/Descriptors.java |  2547 +
 .../com/google/protobuf/DoubleArrayList.java    |   273 +
 .../shaded/com/google/protobuf/DoubleValue.java |   454 +
 .../google/protobuf/DoubleValueOrBuilder.java   |    18 +
 .../shaded/com/google/protobuf/Duration.java    |   618 +
 .../com/google/protobuf/DurationOrBuilder.java  |    33 +
 .../com/google/protobuf/DurationProto.java      |    59 +
 .../com/google/protobuf/DynamicMessage.java     |   684 +
 .../hbase/shaded/com/google/protobuf/Empty.java |   386 +
 .../com/google/protobuf/EmptyOrBuilder.java     |     9 +
 .../shaded/com/google/protobuf/EmptyProto.java  |    58 +
 .../hbase/shaded/com/google/protobuf/Enum.java  |  1745 +
 .../com/google/protobuf/EnumOrBuilder.java      |   157 +
 .../shaded/com/google/protobuf/EnumValue.java   |  1044 +
 .../com/google/protobuf/EnumValueOrBuilder.java |    80 +
 .../com/google/protobuf/ExperimentalApi.java    |    66 +
 .../shaded/com/google/protobuf/Extension.java   |    86 +
 .../com/google/protobuf/ExtensionLite.java      |    63 +
 .../com/google/protobuf/ExtensionRegistry.java  |   396 +
 .../protobuf/ExtensionRegistryFactory.java      |    95 +
 .../google/protobuf/ExtensionRegistryLite.java  |   227 +
 .../hbase/shaded/com/google/protobuf/Field.java |  2450 +
 .../shaded/com/google/protobuf/FieldMask.java   |   903 +
 .../com/google/protobuf/FieldMaskOrBuilder.java |    44 +
 .../com/google/protobuf/FieldMaskProto.java     |    59 +
 .../com/google/protobuf/FieldOrBuilder.java     |   189 +
 .../shaded/com/google/protobuf/FieldSet.java    |   909 +
 .../com/google/protobuf/FloatArrayList.java     |   272 +
 .../shaded/com/google/protobuf/FloatValue.java  |   454 +
 .../google/protobuf/FloatValueOrBuilder.java    |    18 +
 .../com/google/protobuf/GeneratedMessage.java   |  3047 +
 .../google/protobuf/GeneratedMessageLite.java   |  2419 +
 .../com/google/protobuf/GeneratedMessageV3.java |  2838 +
 .../shaded/com/google/protobuf/Int32Value.java  |   451 +
 .../google/protobuf/Int32ValueOrBuilder.java    |    18 +
 .../shaded/com/google/protobuf/Int64Value.java  |   452 +
 .../google/protobuf/Int64ValueOrBuilder.java    |    18 +
 .../com/google/protobuf/IntArrayList.java       |   272 +
 .../shaded/com/google/protobuf/Internal.java    |   751 +
 .../InvalidProtocolBufferException.java         |   146 +
 .../shaded/com/google/protobuf/LazyField.java   |   154 +
 .../com/google/protobuf/LazyFieldLite.java      |   437 +
 .../google/protobuf/LazyStringArrayList.java    |   423 +
 .../com/google/protobuf/LazyStringList.java     |   174 +
 .../shaded/com/google/protobuf/ListValue.java   |   814 +
 .../com/google/protobuf/ListValueOrBuilder.java |    53 +
 .../com/google/protobuf/LongArrayList.java      |   272 +
 .../shaded/com/google/protobuf/MapEntry.java    |   449 +
 .../com/google/protobuf/MapEntryLite.java       |   226 +
 .../shaded/com/google/protobuf/MapField.java    |   624 +
 .../com/google/protobuf/MapFieldLite.java       |   224 +
 .../shaded/com/google/protobuf/Message.java     |   292 +
 .../shaded/com/google/protobuf/MessageLite.java |   341 +
 .../google/protobuf/MessageLiteOrBuilder.java   |    60 +
 .../google/protobuf/MessageLiteToString.java    |   239 +
 .../com/google/protobuf/MessageOrBuilder.java   |   143 +
 .../com/google/protobuf/MessageReflection.java  |   990 +
 .../shaded/com/google/protobuf/Method.java      |  1541 +
 .../com/google/protobuf/MethodOrBuilder.java    |   142 +
 .../hbase/shaded/com/google/protobuf/Mixin.java |   812 +
 .../com/google/protobuf/MixinOrBuilder.java     |    47 +
 .../com/google/protobuf/MutabilityOracle.java   |    48 +
 .../com/google/protobuf/NioByteString.java      |   291 +
 .../shaded/com/google/protobuf/NullValue.java   |   108 +
 .../shaded/com/google/protobuf/Option.java      |   818 +
 .../com/google/protobuf/OptionOrBuilder.java    |    67 +
 .../shaded/com/google/protobuf/Parser.java      |   272 +
 .../com/google/protobuf/ProtobufArrayList.java  |   105 +
 .../google/protobuf/ProtocolMessageEnum.java    |    59 +
 .../com/google/protobuf/ProtocolStringList.java |    48 +
 .../google/protobuf/RepeatedFieldBuilder.java   |   708 +
 .../google/protobuf/RepeatedFieldBuilderV3.java |   708 +
 .../com/google/protobuf/RopeByteString.java     |   897 +
 .../shaded/com/google/protobuf/RpcCallback.java |    47 +
 .../shaded/com/google/protobuf/RpcChannel.java  |    71 +
 .../com/google/protobuf/RpcController.java      |   118 +
 .../shaded/com/google/protobuf/RpcUtil.java     |   136 +
 .../shaded/com/google/protobuf/Service.java     |   117 +
 .../com/google/protobuf/ServiceException.java   |    52 +
 .../com/google/protobuf/SingleFieldBuilder.java |   241 +
 .../google/protobuf/SingleFieldBuilderV3.java   |   241 +
 .../com/google/protobuf/SmallSortedMap.java     |   673 +
 .../com/google/protobuf/SourceContext.java      |   539 +
 .../google/protobuf/SourceContextOrBuilder.java |    29 +
 .../com/google/protobuf/SourceContextProto.java |    60 +
 .../shaded/com/google/protobuf/StringValue.java |   532 +
 .../google/protobuf/StringValueOrBuilder.java   |    27 +
 .../shaded/com/google/protobuf/Struct.java      |   705 +
 .../com/google/protobuf/StructOrBuilder.java    |    63 +
 .../shaded/com/google/protobuf/StructProto.java |   103 +
 .../shaded/com/google/protobuf/Syntax.java      |   123 +
 .../shaded/com/google/protobuf/TextFormat.java  |  2108 +
 .../com/google/protobuf/TextFormatEscaper.java  |   137 +
 .../protobuf/TextFormatParseInfoTree.java       |   226 +
 .../protobuf/TextFormatParseLocation.java       |   104 +
 .../shaded/com/google/protobuf/Timestamp.java   |   616 +
 .../com/google/protobuf/TimestampOrBuilder.java |    32 +
 .../com/google/protobuf/TimestampProto.java     |    59 +
 .../hbase/shaded/com/google/protobuf/Type.java  |  1967 +
 .../com/google/protobuf/TypeOrBuilder.java      |   192 +
 .../shaded/com/google/protobuf/TypeProto.java   |   141 +
 .../shaded/com/google/protobuf/UInt32Value.java |   451 +
 .../google/protobuf/UInt32ValueOrBuilder.java   |    18 +
 .../shaded/com/google/protobuf/UInt64Value.java |   452 +
 .../google/protobuf/UInt64ValueOrBuilder.java   |    18 +
 .../protobuf/UninitializedMessageException.java |    99 +
 .../com/google/protobuf/UnknownFieldSet.java    |  1042 +
 .../google/protobuf/UnknownFieldSetLite.java    |   432 +
 .../protobuf/UnmodifiableLazyStringList.java    |   210 +
 .../google/protobuf/UnsafeByteOperations.java   |   131 +
 .../shaded/com/google/protobuf/UnsafeUtil.java  |   295 +
 .../hbase/shaded/com/google/protobuf/Utf8.java  |  1764 +
 .../hbase/shaded/com/google/protobuf/Value.java |  1410 +
 .../com/google/protobuf/ValueOrBuilder.java     |    98 +
 .../shaded/com/google/protobuf/WireFormat.java  |   260 +
 .../com/google/protobuf/WrappersProto.java      |   153 +
 .../google/protobuf/compiler/PluginProtos.java  |  5424 ++
 .../protobuf/generated/TestProcedureProtos.java |   608 +
 .../ipc/protobuf/generated/TestProtos.java      |  2987 +
 .../generated/TestRpcServiceProtos.java         |   575 +
 .../protobuf/generated/AccessControlProtos.java | 11171 +++
 .../shaded/protobuf/generated/AdminProtos.java  | 30634 ++++++
 .../shaded/protobuf/generated/BackupProtos.java |  7013 ++
 .../shaded/protobuf/generated/CellProtos.java   |  2287 +
 .../shaded/protobuf/generated/ClientProtos.java | 42367 +++++++++
 .../protobuf/generated/ClusterIdProtos.java     |   668 +
 .../protobuf/generated/ClusterStatusProtos.java | 15191 +++
 .../protobuf/generated/ComparatorProtos.java    |  5719 ++
 .../protobuf/generated/EncryptionProtos.java    |   980 +
 .../protobuf/generated/ErrorHandlingProtos.java |  2997 +
 .../shaded/protobuf/generated/FSProtos.java     |  1311 +
 .../shaded/protobuf/generated/FilterProtos.java | 18739 ++++
 .../shaded/protobuf/generated/HBaseProtos.java  | 19346 ++++
 .../shaded/protobuf/generated/HFileProtos.java  |  2449 +
 .../protobuf/generated/LoadBalancerProtos.java  |   524 +
 .../protobuf/generated/LockServiceProtos.java   |  7595 ++
 .../protobuf/generated/MapReduceProtos.java     |  1804 +
 .../generated/MasterProcedureProtos.java        | 31266 +++++++
 .../shaded/protobuf/generated/MasterProtos.java | 82418 +++++++++++++++++
 .../protobuf/generated/ProcedureProtos.java     |  7844 ++
 .../shaded/protobuf/generated/QuotaProtos.java  | 14525 +++
 .../shaded/protobuf/generated/RPCProtos.java    |  8299 ++
 .../generated/RegionNormalizerProtos.java       |   524 +
 .../generated/RegionServerStatusProtos.java     | 11621 +++
 .../protobuf/generated/ReplicationProtos.java   | 12909 +++
 .../protobuf/generated/SnapshotProtos.java      |  6491 ++
 .../protobuf/generated/TracingProtos.java       |   628 +
 .../shaded/protobuf/generated/WALProtos.java    | 12308 +++
 .../protobuf/generated/ZooKeeperProtos.java     |  4717 +
 hbase-protocol/README.txt                       |    16 +-
 hbase-protocol/pom.xml                          |   266 +-
 .../protobuf/generated/PingProtos.java          |  4890 +
 .../protobuf/generated/TestProcedureProtos.java |   530 +
 .../ipc/protobuf/generated/TestProtos.java      |  2778 +
 .../generated/TestRpcServiceProtos.java         |   568 +
 .../protobuf/generated/AccessControlProtos.java | 10656 +++
 .../hbase/protobuf/generated/AdminProtos.java   | 24326 +++++
 .../generated/AuthenticationProtos.java         |  4659 +
 .../hbase/protobuf/generated/CellProtos.java    |  2243 +
 .../hbase/protobuf/generated/ClientProtos.java  | 41409 +++++++++
 .../protobuf/generated/ClusterIdProtos.java     |   628 +
 .../protobuf/generated/ClusterStatusProtos.java | 14975 +++
 .../protobuf/generated/ComparatorProtos.java    |  5419 ++
 .../protobuf/generated/EncryptionProtos.java    |   954 +
 .../protobuf/generated/ErrorHandlingProtos.java |  2895 +
 .../hbase/protobuf/generated/FSProtos.java      |  1235 +
 .../hbase/protobuf/generated/FilterProtos.java  | 17809 ++++
 .../hbase/protobuf/generated/HBaseProtos.java   | 19893 ++++
 .../hbase/protobuf/generated/HFileProtos.java   |  2403 +
 .../protobuf/generated/LoadBalancerProtos.java  |   485 +
 .../protobuf/generated/MapReduceProtos.java     |  1737 +
 .../generated/MultiRowMutationProtos.java       |  2458 +
 .../hbase/protobuf/generated/QuotaProtos.java   |  7342 ++
 .../hbase/protobuf/generated/RPCProtos.java     |  6299 ++
 .../protobuf/generated/RowProcessorProtos.java  |  1701 +
 .../protobuf/generated/SnapshotProtos.java      |  4789 +
 .../hbase/protobuf/generated/TracingProtos.java |   591 +
 .../generated/VisibilityLabelsProtos.java       |  6649 ++
 .../hbase/protobuf/generated/WALProtos.java     | 12108 +++
 .../protobuf/generated/ZooKeeperProtos.java     |  8410 ++
 hbase-rest/README.txt                           |    21 +-
 hbase-rest/pom.xml                              |    67 +-
 .../rest/protobuf/generated/CellMessage.java    |   731 +
 .../rest/protobuf/generated/CellSetMessage.java |  1521 +
 .../protobuf/generated/ColumnSchemaMessage.java |  1904 +
 .../generated/NamespacePropertiesMessage.java   |  1394 +
 .../protobuf/generated/NamespacesMessage.java   |   547 +
 .../rest/protobuf/generated/ScannerMessage.java |  1578 +
 .../generated/StorageClusterStatusMessage.java  |  3955 +
 .../protobuf/generated/TableInfoMessage.java    |  1802 +
 .../protobuf/generated/TableListMessage.java    |   547 +
 .../protobuf/generated/TableSchemaMessage.java  |  2125 +
 .../rest/protobuf/generated/VersionMessage.java |  1147 +
 hbase-rsgroup/README.txt                        |    29 +-
 hbase-rsgroup/pom.xml                           |    68 +-
 .../protobuf/generated/RSGroupAdminProtos.java  | 13570 +++
 .../hbase/protobuf/generated/RSGroupProtos.java |  1331 +
 hbase-server/pom.xml                            |    12 -
 hbase-spark/README.txt                          |    32 +-
 hbase-spark/pom.xml                             |  1259 +-
 .../protobuf/generated/SparkFilterProtos.java   |  2006 +
 pom.xml                                         |    17 +-
 src/main/asciidoc/_chapters/protobuf.adoc       |    10 +-
 245 files changed, 745280 insertions(+), 1182 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase/blob/6786b2b6/hbase-client/pom.xml
----------------------------------------------------------------------
diff --git a/hbase-client/pom.xml b/hbase-client/pom.xml
index 1c43aea..cc1143d 100644
--- a/hbase-client/pom.xml
+++ b/hbase-client/pom.xml
@@ -87,10 +87,6 @@
   </build>
 
   <dependencies>
-    <dependency>
-      <groupId>org.apache.hbase.thirdparty</groupId>
-      <artifactId>hbase-shaded-protobuf</artifactId>
-    </dependency>
     <!-- Intra-project dependencies -->
     <dependency>
       <groupId>org.apache.hbase</groupId>

http://git-wip-us.apache.org/repos/asf/hbase/blob/6786b2b6/hbase-endpoint/README.txt
----------------------------------------------------------------------
diff --git a/hbase-endpoint/README.txt b/hbase-endpoint/README.txt
index 2d2cb4b..861a776 100644
--- a/hbase-endpoint/README.txt
+++ b/hbase-endpoint/README.txt
@@ -1,13 +1,24 @@
 ON PROTOBUFS
-This maven module has protobuf definition files ('.protos') used by hbase
-Coprocessor Endpoints that ship with hbase core (including tests). Coprocessor
+This maven module has  protobuf definition files ('.protos') used by hbase
+Coprocessor Endpoints that ship with hbase core including tests. Coprocessor
 Endpoints are meant to be standalone, independent code not reliant on hbase
 internals. They define their Service using protobuf. The protobuf version
 they use can be distinct from that used by HBase internally since HBase started
 shading its protobuf references. Endpoints have no access to the shaded protobuf
-hbase uses. They do have access to the content of hbase-protocol -- the
-.protos found in this module -- but avoid using as much of this as you can as it is
-liable to change.
+hbase uses. They do have access to the content of hbase-protocol but avoid using
+as much of this as you can as it is liable to change.
 
-Generation of java files from protobuf .proto files included here is done as
-part of the build.
+Generation of java files from protobuf .proto files included here is done apart
+from the build. Run the generation whenever you make changes to the .orotos files
+and then check in the produced java (The reasoning is that change is infrequent
+so why pay the price of generating files anew on each build.
+
+To generate java files from protos run:
+
+ $ mvn compile -Dcompile-protobuf
+or
+ $ mvn compile -Pcompile-protobuf
+
+After you've done the above, check it and then check in changes (or post a patch
+on a JIRA with your definition file changes and the generated files). Be careful
+to notice new files and files removed and do appropriate git rm/adds.

http://git-wip-us.apache.org/repos/asf/hbase/blob/6786b2b6/hbase-endpoint/pom.xml
----------------------------------------------------------------------
diff --git a/hbase-endpoint/pom.xml b/hbase-endpoint/pom.xml
index 088f467..c45e953 100644
--- a/hbase-endpoint/pom.xml
+++ b/hbase-endpoint/pom.xml
@@ -1,6 +1,6 @@
 <?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
@@ -19,34 +19,37 @@
      * limitations under the License.
      */
     -->
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>hbase</artifactId>
-    <groupId>org.apache.hbase</groupId>
-    <version>3.0.0-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-  <artifactId>hbase-endpoint</artifactId>
-  <name>Apache HBase - Coprocessor Endpoint</name>
-  <description>HBase Coprocessor Endpoint implementations</description>
-  <!--REMOVE-->
-  <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>
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <artifactId>hbase</artifactId>
+        <groupId>org.apache.hbase</groupId>
+        <version>3.0.0-SNAPSHOT</version>
+        <relativePath>..</relativePath>
+    </parent>
+
+    <artifactId>hbase-endpoint</artifactId>
+    <name>Apache HBase - Coprocessor Endpoint</name>
+    <description>HBase Coprocessor Endpoint implementations</description>
+<!--REMOVE-->
+
+    <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>
@@ -54,56 +57,39 @@
           <skipAssembly>true</skipAssembly>
         </configuration>
       </plugin>
-      <plugin>
-        <groupId>org.xolstice.maven.plugins</groupId>
-        <artifactId>protobuf-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>compile-protoc</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>compile</goal>
-            </goals>
-             <configuration>
-              <additionalProtoPathElements>
-                <additionalProtoPathElement>${basedir}/../hbase-protocol/src/main/protobuf</additionalProtoPathElement>
-              </additionalProtoPathElements>
-             </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/>
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
       </plugins>
-    </pluginManagement>
-  </build>
-  <dependencies>
+      <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>
+            <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>
@@ -136,57 +122,88 @@
       <type>test-jar</type>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-protocol</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-client</artifactId>
-    </dependency>
-    <!--Some of the CPEPs use hbase server-side internals; they shouldn't!
+      <dependency>
+        <groupId>org.apache.hbase</groupId>
+        <artifactId>hbase-protocol</artifactId>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.hbase</groupId>
+        <artifactId>hbase-client</artifactId>
+      </dependency>
+      <!--Some of the CPEPs use hbase server-side internals; they shouldn't!
            -->
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-server</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.hbase</groupId>
-      <artifactId>hbase-server</artifactId>
-      <type>test-jar</type>
-      <scope>test</scope>
-    </dependency>
-    <!-- General dependencies -->
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-    </dependency>
-  </dependencies>
-  <profiles>
-    <!-- Skip the tests in this module -->
-    <profile>
-      <id>skipRpcTests</id>
-      <activation>
-        <property>
-          <name>skipRpcTests</name>
-        </property>
-      </activation>
-      <properties>
-        <surefire.skipFirstPart>true</surefire.skipFirstPart>
-        <surefire.skipSecondPart>true</surefire.skipSecondPart>
-      </properties>
-    </profile>
+      <dependency>
+        <groupId>org.apache.hbase</groupId>
+        <artifactId>hbase-server</artifactId>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.hbase</groupId>
+        <artifactId>hbase-server</artifactId>
+        <type>test-jar</type>
+        <scope>test</scope>
+      </dependency>
+      <!-- General dependencies -->
+      <dependency>
+        <groupId>commons-logging</groupId>
+        <artifactId>commons-logging</artifactId>
+      </dependency>
+    </dependencies>
+
+    <profiles>
+        <!-- Skip the tests in this module -->
+        <profile>
+            <id>skipRpcTests</id>
+            <activation>
+                <property>
+                    <name>skipRpcTests</name>
+                </property>
+            </activation>
+            <properties>
+                <surefire.skipFirstPart>true</surefire.skipFirstPart>
+                <surefire.skipSecondPart>true</surefire.skipSecondPart>
+            </properties>
+        </profile>
+        <profile>
+          <id>compile-protobuf</id>
+          <activation>
+            <property>
+              <name>compile-protobuf</name>
+            </property>
+          </activation>
+          <build>
+            <plugins>
+              <plugin>
+                <groupId>org.xolstice.maven.plugins</groupId>
+                <artifactId>protobuf-maven-plugin</artifactId>
+                <executions>
+                  <execution>
+                    <id>compile-protoc</id>
+                    <phase>generate-sources</phase>
+                    <goals>
+                      <goal>compile</goal>
+                    </goals>
+                    <configuration>
+                      <additionalProtoPathElements>
+                        <additionalProtoPathElement>${basedir}/../hbase-protocol/src/main/protobuf</additionalProtoPathElement>
+                      </additionalProtoPathElements>
+                    </configuration>
+                  </execution>
+                </executions>
+              </plugin>
+            </plugins>
+          </build>
+        </profile>
     <!-- Profiles for building against different hadoop versions -->
     <!-- There are a lot of common dependencies used here, should investigate
     if we can combine these profiles somehow -->
+
     <!-- profile for building against Hadoop 2.x.  This is the default.  -->
     <profile>
       <id>hadoop-2.0</id>
       <activation>
         <property>
-          <!--Below formatting for dev-support/generate-hadoopX-poms.sh-->
-          <!--h2-->
-          <name>!hadoop.profile</name>
+            <!--Below formatting for dev-support/generate-hadoopX-poms.sh-->
+            <!--h2--><name>!hadoop.profile</name>
         </property>
       </activation>
       <dependencies>
@@ -259,5 +276,5 @@
         </dependency>
       </dependencies>
     </profile>
-  </profiles>
+    </profiles>
 </project>