<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright 2014 Open Networking Laboratory
  ~
  ~ Licensed 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/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <prerequisites>
        <maven>3.0.0</maven>
    </prerequisites>

    <parent>
        <groupId>org.onosproject</groupId>
        <artifactId>onos</artifactId>
        <version>1.2.0-SNAPSHOT</version>
        <relativePath>../pom.xml</relativePath>
    </parent>

    <artifactId>onos-docs</artifactId>
    <packaging>pom</packaging>

    <description>ONOS Java API documentation</description>

    <modules>
        <module>..</module>
    </modules>

    <url>http://onosproject.org/</url>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>2.10.1</version>
                <configuration>
                    <show>package</show>
                    <docfilessubdirs>true</docfilessubdirs>
                    <doctitle>ONOS Java API (1.2.0-SNAPSHOT)</doctitle>
                    <groups>
                        <group>
                            <title>Network Model &amp; Services</title>
                            <packages>
                                org.onosproject:org.onosproject.*:org.onosproject.rest
                            </packages>
                        </group>
                        <group>
                            <title>Incubator for Network Model &amp; Services</title>
                            <packages>
                                org.onosproject.exp:org.onosproject.incubator.*
                            </packages>
                        </group>
                        <group>
                            <title>Core Subsystems</title>
                            <packages>
                                org.onosproject.impl:org.onosproject.core.impl:org.onosproject.cluster.impl:org.onosproject.net.device.impl:org.onosproject.net.link.impl:org.onosproject.net.host.impl:org.onosproject.net.topology.impl:org.onosproject.net.packet.impl:org.onosproject.net.flow.impl:org.onosproject.net.*.impl:org.onosproject.event.impl:org.onosproject.net.intent.impl*:org.onosproject.net.proxyarp.impl:org.onosproject.mastership.impl:org.onosproject.net.resource.impl:org.onosproject.json:org.onosproject.json.*:org.onosproject.provider.host.impl:org.onosproject.provider.lldp.impl:org.onosproject.net.statistic.impl:org.onosproject.app.impl:org.onosproject.common.*:org.onosproject.net.group.impl:org.onosproject.cfg.impl:org.onosproject.net.driver.impl:org.onosproject.net.flowobjective.impl:org.onosproject.net.flowext.impl:org.onosproject.net.tunnel.impl
                            </packages>
                        </group>
                        <group>
                            <title>Distributed Stores</title>
                            <packages>
                                org.onosproject.store.*
                            </packages>
                        </group>
                        <group>
                            <title>Incubator for Core Subsystems &amp; Distributed Stores</title>
                            <packages>
                                org.onosproject.incubator.net.impl:org.onosproject.incubator.store.impl
                            </packages>
                        </group>
                        <group>
                            <title>OpenFlow Providers &amp; Controller</title>
                            <packages>
                                org.onosproject.provider.of.*:org.onosproject.openflow.*
                            </packages>
                        </group>
                        <group>
                            <title>NetConf Providers</title>
                            <packages>
                                org.onosproject.provider.netconf:org.onosproject.provider.netconf*
                            </packages>
                        </group>
                        <group>
                            <title>Null Providers</title>
                            <packages>
                                org.onosproject.provider.nil:org.onosproject.provider.nil.*
                            </packages>
                        </group>
                        <group>
                            <title>Built-in Device Drivers</title>
                            <packages>
                                org.onosproject.driver:org.onosproject.driver.*
                            </packages>
                        </group>
                        <group>
                            <title>Utilities</title>
                            <packages>
                                org.onlab.*
                            </packages>
                        </group>
                        <group>
                            <title>GUI, REST &amp; Command-Line</title>
                            <packages>
                                org.onosproject.ui.impl*:org.onosproject.rest*:org.onosproject.cli:org.onosproject.rest.*:org.onosproject.cli.*:org.onosproject.codec.impl
                            </packages>
                        </group>
                        <group>
                            <title>Sample Applications</title>
                            <packages>
                                org.onosproject.tvue:org.onosproject.fwd:org.onosproject.ifwd:org.onosproject.mobility:org.onosproject.proxyarp:org.onosproject.foo:org.onosproject.calendar:org.onosproject.optical:org.onosproject.optical.*:org.onosproject.sdnip:org.onosproject.sdnip.*:org.onosproject.config:org.onosproject.routing:org.onosproject.routing*:org.onosproject.bgprouter:org.onosproject.intentperf:org.onosproject.segmentrouting:org.onosproject.segmentrouting.*:org.onosproject.reactive.routing*:org.onosproject.messagingperf:org.onosproject.virtualbng:org.onosproject.demo*:org.onosproject.election*:org.onosproject.distributedprimitives*:org.onosproject.cordfabric*:org.onosproject.xosintegration*
                            </packages>
                        </group>
                        <group>
                            <title>Test Instrumentation</title>
                            <packages>
                                org.onosproject.metrics.*
                            </packages>
                        </group>
                    </groups>
                    <excludePackageNames>org.onlab.thirdparty:org.onosproject.oecfg:org.onosproject.maven:org.onlab.jdvue*</excludePackageNames>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>
