<?xml version="1.0" encoding="UTF-8"?>
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <parent>
    <groupId>com.google.protobuf</groupId>
    <artifactId>protobuf-parent</artifactId>
    <version>3.0.0</version>
  </parent>

  <artifactId>protobuf-lite</artifactId>
  <packaging>bundle</packaging>

  <name>Protocol Buffers [Lite]</name>
  <description>A trimmed-down version of the Protocol Buffers library.</description>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymock</artifactId>
    </dependency>
    <dependency>
      <groupId>org.easymock</groupId>
      <artifactId>easymockclassextension</artifactId>
    </dependency>
  </dependencies>

  <properties>
    <core.root>../core</core.root>
    <test.proto.dir>${core.root}/src/test/proto</test.proto.dir>
  </properties>

  <build>
    <sourceDirectory>${core.root}/src/main/java</sourceDirectory>
    <testSourceDirectory>${core.root}/src/test/java</testSourceDirectory>

    <plugins>
      <!-- Use Antrun plugin to generate sources with protoc -->
      <plugin>
        <artifactId>maven-antrun-plugin</artifactId>
        <executions>
          <!-- Generate core protos -->
          <execution>
            <id>generate-sources</id>
            <phase>generate-sources</phase>
            <configuration>
              <target>
                <ant antfile="generate-sources-build.xml"/>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>

          <!-- Generate the test protos -->
          <execution>
            <id>generate-test-sources</id>
            <phase>generate-test-sources</phase>
            <configuration>
              <target>
                <ant antfile="generate-test-sources-build.xml"/>
              </target>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>

      <!-- Only compile a subset of the files -->
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <generatedSourcesDirectory>${generated.sources.lite.dir}</generatedSourcesDirectory>
          <generatedTestSourcesDirectory>${generated.testsources.lite.dir}</generatedTestSourcesDirectory>
          <includes>
            <include>**/AbstractMessageLite.java</include>
            <include>**/AbstractParser.java</include>
            <include>**/AbstractProtobufList.java</include>
            <include>**/BooleanArrayList.java</include>
            <include>**/ByteString.java</include>
            <include>**/CodedInputStream.java</include>
            <include>**/CodedOutputStream.java</include>
            <include>**/DoubleArrayList.java</include>
            <include>**/ExtensionLite.java</include>
            <include>**/ExtensionRegistryLite.java</include>
            <include>**/FieldSet.java</include>
            <include>**/FloatArrayList.java</include>
            <include>**/GeneratedMessageLite.java</include>
            <include>**/IntArrayList.java</include>
            <include>**/Internal.java</include>
            <include>**/InvalidProtocolBufferException.java</include>
            <include>**/LazyFieldLite.java</include>
            <include>**/LazyStringArrayList.java</include>
            <include>**/LazyStringList.java</include>
            <include>**/LongArrayList.java</include>
            <include>**/MapEntryLite.java</include>
            <include>**/MapFieldLite.java</include>
            <include>**/MessageLite.java</include>
            <include>**/MessageLiteOrBuilder.java</include>
            <include>**/MessageLiteToString.java</include>
            <include>**/MutabilityOracle.java</include>
            <include>**/NioByteString.java</include>
            <include>**/Parser.java</include>
            <include>**/ProtobufArrayList.java</include>
            <include>**/ProtocolStringList.java</include>
            <include>**/RopeByteString.java</include>
            <include>**/SmallSortedMap.java</include>
            <include>**/TextFormatEscaper.java</include>
            <include>**/UninitializedMessageException.java</include>
            <include>**/UnknownFieldSetLite.java</include>
            <include>**/UnmodifiableLazyStringList.java</include>
            <include>**/UnsafeByteOperations.java</include>
            <include>**/Utf8.java</include>
            <include>**/WireFormat.java</include>
          </includes>
          <testIncludes>
            <testInclude>**/*Lite.java</testInclude>
            <testInclude>**/BooleanArrayListTest.java</testInclude>
            <testInclude>**/DoubleArrayListTest.java</testInclude>
            <testInclude>**/FloatArrayListTest.java</testInclude>
            <testInclude>**/IntArrayListTest.java</testInclude>
            <testInclude>**/LazyMessageLiteTest.java</testInclude>
            <testInclude>**/LiteTest.java</testInclude>
            <testInclude>**/LongArrayListTest.java</testInclude>
            <testInclude>**/NioByteStringTest.java</testInclude>
            <testInclude>**/ProtobufArrayListTest.java</testInclude>
            <testInclude>**/UnknownFieldSetLiteTest.java</testInclude>
          </testIncludes>
        </configuration>
      </plugin>

      <!-- OSGI bundle configuration -->
      <plugin>
        <groupId>org.apache.felix</groupId>
        <artifactId>maven-bundle-plugin</artifactId>
        <extensions>true</extensions>
        <configuration>
          <instructions>
            <Bundle-DocURL>https://developers.google.com/protocol-buffers/</Bundle-DocURL>
            <Bundle-SymbolicName>com.google.protobuf</Bundle-SymbolicName>
            <Export-Package>com.google.${project.artifactId};version=${project.version}</Export-Package>
          </instructions>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
