<!--
    Copyright 2018 the original author or authors.

    Licensed 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.

    pom.xml

    This test validates that go proto outputs are committed to git.  It does this
    by regenerating them and validating whether git thinks they are the same. If
    they become out of sync, there can be problems for consumers of the protos.
-->
<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>
  
  
  <groupId>opencord</groupId>
  <artifactId>voltha-protos</artifactId>
  <version>3.0-SNAPSHOT</version>
  
<dependencies>
<!-- https://mvnrepository.com/artifact/com.google.protobuf/protobuf-java -->
<dependency>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-java</artifactId>
    <version>3.10.0</version>
   </dependency>
<dependency>
    <groupId>com.google.api.grpc</groupId>
    <artifactId>googleapis-common-protos</artifactId>
    <version>0.0.3</version>
</dependency>
</dependencies>

</project>
