<?xml version="1.0" encoding="UTF-8"?>
<!--

    Copyright (c) 2010, 2020 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Public License v. 2.0, which is available at
    http://www.eclipse.org/legal/epl-2.0.

    This Source Code may also be made available under the following Secondary
    Licenses when the conditions for such availability set forth in the
    Eclipse Public License v. 2.0 are satisfied: GNU General Public License,
    version 2 with the GNU Classpath Exception, which is available at
    https://www.gnu.org/software/classpath/license.html.

    SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0

-->

<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>org.glassfish.hk2</groupId>
        <artifactId>hk2-parent</artifactId>
        <version>3.0.7-SNAPSHOT</version>
    </parent>
    <artifactId>hk2-javadocs</artifactId>
    <name>HK2 Javadocs</name>

    <properties>
        <maven.deploy.skip>true</maven.deploy.skip>
        <maven.site.skip>true</maven.site.skip>
        <manifest.location></manifest.location> <!-- to make nullifiy the property -->
    </properties>

    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <targetPath>${site.dir}</targetPath>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <executions>
                    <execution>
                        <id>javadoc-jar</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/staging/apidocs</outputDirectory>
                            <sourcepath>
                                ${basedir}/../hk2-api/src/main/java;
                                ${basedir}/../hk2-locator/src/main/java;
                                ${basedir}/../hk2-utils/src/main/java;
                                ${basedir}/../hk2-runlevel/src/main/java;
                                ${basedir}/../guice-bridge/src/main/java;
                                ${basedir}/../spring-bridge/src/main/java;
                                ${basedir}/../hk2-testing/hk2-junitrunner/src/main/java;
                                ${basedir}/../hk2-testing/collections/src/main/java;
                                ${basedir}/../hk2-inhabitant-generator/src/main/java;
                                ${basedir}/../hk2-configuration/manager/src/main/java;
                                ${basedir}/../hk2-configuration/hk2-integration/src/main/java;
                                ${basedir}/../hk2-configuration/persistence/property-file/src/main/java;
                                ${basedir}/../hk2-configuration/persistence/hk2-xml/src/main/java;
                                ${basedir}/../hk2-extras/src/main/java
                            </sourcepath>
                            <doctitle>HK2 API Documentation</doctitle>
                            <windowtitle>HK2 API Documentation</windowtitle>
                            <bottom>
<![CDATA[Copyright &#169; 2009-2017,
    <a href="http://www.oracle.com">Oracle</a>
    and/or its affiliates. All Rights Reserved.
]]>
                            </bottom>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>

    <dependencies>
        <!-- compile only -->
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>hk2</artifactId>
            <version>${project.version}</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.glassfish.hk2</groupId>
            <artifactId>osgi-resource-locator</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.maven</groupId>
            <artifactId>maven-plugin-api</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.apache.ant</groupId>
            <artifactId>ant</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.google.inject</groupId>
            <artifactId>guice</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>jakarta.validation</groupId>
            <artifactId>jakarta.validation-api</artifactId>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.hibernate.validator</groupId>
            <artifactId>hibernate-validator</artifactId>
            <scope>compile</scope>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>release</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-scm-publish-plugin</artifactId>
                        <executions>
                            <execution>
                                <id />
                                <configuration>
                                    <scmBranch>gh-pages</scmBranch>
                                    <pubScmUrl>scm:git:git@github.com:javaee/hk2.git</pubScmUrl>
                                    <includes>apidocs</includes>
                                    <skipDeletedFiles>true</skipDeletedFiles>
                                    <checkinComment>Update Site Javadocs</checkinComment>
                                </configuration>
                            </execution>
                        </executions>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
