<?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-beta-2</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="${core.root}/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="${core.root}/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.dir}</generatedSourcesDirectory>
          <generatedTestSourcesDirectory>${generated.testsources.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>
