<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You 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.
-->
<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>

  <parent>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-parent</artifactId>
    <version>2.3.0</version>
    <relativePath>../pom.xml</relativePath>
  </parent>

  <artifactId>beam-sdks-java-parent</artifactId>

  <packaging>pom</packaging>

  <name>Apache Beam :: SDKs :: Java</name>

  <modules>
    <!-- build-tools inherits from the Beam root pom to enable checkstyle
         and other project configuration to be used in all modules.
    <module>build-tools</module> -->
    <module>harness</module>
    <module>container</module>
    <module>core</module>
    <module>io</module>
    <module>java8tests</module>
    <module>maven-archetypes</module>
    <module>extensions</module>
    <module>fn-execution</module>
    <!-- javadoc runs directly from the root parent as the last module
         in the build to be able to capture runner-specific javadoc.
    <module>javadoc</module> -->
    <module>nexmark</module>
  </modules>
</project>
