<?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-3</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>
