<?xml version="1.0"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <artifactId>tools</artifactId>
    <groupId>com.google.i18n.phonenumbers</groupId>
    <version>1.0-SNAPSHOT</version>
  </parent>

  <groupId>com.google.i18n.phonenumbers.tools</groupId>
  <artifactId>cpp-build</artifactId>
  <version>1.0-SNAPSHOT</version>
  <name>Libphonenumber C++ build tools</name>
  <description>
    C++ build tools that download dependencies under base/ from the Chromium source repository, and
    generate the C++ metadata code needed to build the libphonenumber library.
  </description>

  <build>
    <sourceDirectory>src</sourceDirectory>
    <testSourceDirectory>test</testSourceDirectory>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
          <source>8</source>
	  <target>8</target>
	  <encoding>UTF-8</encoding>
        </configuration>
      </plugin>
      <!-- Create a directory called 'generated'. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-antrun-plugin</artifactId>
        <version>1.3</version>
        <executions>
          <execution>
            <id>create-generated-directory</id>
            <phase>generate-sources</phase>
            <configuration>
              <tasks>
                <mkdir dir="generated"/>
              </tasks>
            </configuration>
            <goals>
              <goal>run</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>build-helper-maven-plugin</artifactId>
        <version>3.4.0</version>
        <executions>
          <execution>
            <id>add-source</id>
            <phase>generate-sources</phase>
            <goals>
              <goal>add-source</goal>
            </goals>
            <configuration>
              <sources>
                <!-- Make BuildMetadataFromXml.java available to the source directories. -->
                <source>../common/src/</source>
                <!-- Make Phonemetadata.java available to the source directories.
                     BuildMetadataFromXml.java has to work with both
                     tools/java/cpp-build/generated/com/google/i18n/phonenumbers/Phonemetadata.java
                     and java/libphonenumber/src/com/google/i18n/phonenumbers/Phonemetadata.java.
                     TODO: This Phonemetadata.java is generated via a protoc dependency that is not
                     hermetic and may get out of sync with the other one. Make this file hermetic or
                     find another way to enable Travis CI on this build. -->
                <source>generated/</source>
              </sources>
            </configuration>
          </execution>
        </executions>
      </plugin>
      <!-- Invoke Protocol Buffers compiler to generate Phonemetadata.java. -->
      <plugin>
        <groupId>org.codehaus.mojo</groupId>
        <artifactId>exec-maven-plugin</artifactId>
        <version>3.1.0</version>
        <executions>
          <execution>
            <phase>generate-sources</phase>
            <goals>
              <goal>exec</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <executable>protoc</executable>
          <arguments>
            <argument>--java_out=generated</argument>
            <argument>../../../resources/phonemetadata.proto</argument>
            <argument>--proto_path=../../../resources</argument>
          </arguments>
        </configuration>
      </plugin>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.3.0</version>
        <configuration>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>com.google.i18n.phonenumbers.EntryPoint</mainClass>
            </manifest>
          </archive>
        </configuration>
      </plugin>
      <!-- Build a JAR with its dependencies (protocol buffers and common library). This JAR
           contains the C++ build tools invoked by CMake during the libphonenumber C++ build. -->
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <configuration>
          <descriptorRefs>
            <descriptorRef>jar-with-dependencies</descriptorRef>
          </descriptorRefs>
          <archive>
            <manifest>
              <addClasspath>true</addClasspath>
              <mainClass>com.google.i18n.phonenumbers.EntryPoint</mainClass>
            </manifest>
          </archive>
        </configuration>
        <executions>
          <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.13.2</version>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>com.google.protobuf</groupId>
      <artifactId>protobuf-java</artifactId>
      <version>3.25.5</version>
    </dependency>
  </dependencies>

</project>
