<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">
    <parent>
        <groupId>com.github.openstack4j.core</groupId>
        <artifactId>openstack4j-parent</artifactId>
        <version>3.12</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>openstack4j-core</artifactId>
    <name>OpenStack4j Core</name>
    <description>OpenStack Java API</description>
    <url>https://github.com/openstack4j/openstack4j/</url>
    <packaging>jar</packaging>

    <build>
        <finalName>openstack4j-core</finalName>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>1.3.3</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>shade</goal>
                        </goals>
                        <configuration>
                            <minimizeJar>true</minimizeJar>
                            <shadedArtifactAttached>true</shadedArtifactAttached>
                            <createSourcesJar>true</createSourcesJar>
                            <shadedClassifierName>withdeps</shadedClassifierName>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-bundle-plugin</artifactId>
                <extensions>true</extensions>
                <version>5.1.8</version>
                <configuration>
                    <instructions>
                        <Bundle-Name>${project.name}</Bundle-Name>
                        <Export-Package>
                            <!-- core.transport.internal is imported by jersey2 connector! -->
                            <!-- !org.openstack4j.core.transport.internal,  -->
                            !org.openstack4j.openstack.compute.internal,
                            !org.openstack4j.openstack.compute.internal.ext,
                            !org.openstack4j.openstack.heat.internal,
                            !org.openstack4j.openstack.identity.internal,
                            !org.openstack4j.openstack.image.internal,
                            <!--  openstack.internal is imported by connectors! -->
                            <!--  !org.openstack4j.openstack.internal, -->
                            <!-- logging.internal is imported by logging plugins! -->
                            <!-- !org.openstack4j.openstack.logging.internal,  -->
                            !org.openstack4j.openstack.networking.internal,
                            !org.openstack4j.openstack.networking.internal.ext,
                            !org.openstack4j.openstack.storage.block.internal,
                            !org.openstack4j.openstack.storage.object.internal,
                            !org.openstack4j.openstack.telemetry.internal,
                            org.openstack4j,
                            org.openstack4j.*
                        </Export-Package>
                        <Private-Package>
                            org.openstack4j.openstack.compute.internal,
                            org.openstack4j.openstack.compute.internal.ext,
                            org.openstack4j.openstack.heat.internal,
                            org.openstack4j.openstack.identity.internal,
                            org.openstack4j.openstack.image.internal,
                            org.openstack4j.openstack.networking.internal,
                            org.openstack4j.openstack.networking.internal.ext,
                            org.openstack4j.openstack.storage.block.internal,
                            org.openstack4j.openstack.storage.object.internal,
                            org.openstack4j.openstack.telemetry.internal
                        </Private-Package>
                        <Import-Package>
                            !org.openstack*,
                            *
                        </Import-Package>
                        <!--
                            Required for SPI in OSGi:
                            http://aries.apache.org/modules/spi-fly.html#specconf

                            This bundles uses SPI to locate implementations for:
                            org.openstack4j.api.APIProvider
                            org.openstack4j.core.transport.HttpExecutorService
                            org.openstack4j.openstack.logging.LoggerFactorySupplier
                            This bundle defines an implementation for following services in META-INF-services:
                            org.openstack4j.api.APIProvider
                        -->
                        <Require-Capability>
                            osgi.serviceloader;
                            filter:="(osgi.serviceloader=org.openstack4j.api.APIProvider)";cardinality:=multiple,
                            osgi.serviceloader;
                            filter:="(osgi.serviceloader=org.openstack4j.core.transport.HttpExecutorService)";cardinality:=multiple,
                            osgi.serviceloader;
                            filter:="(osgi.serviceloader=org.openstack4j.openstack.logging.LoggerFactorySupplier)";cardinality:=multiple;resolution:=optional,
                            osgi.extender; filter:="(osgi.extender=osgi.serviceloader.processor)",
                            osgi.extender; filter:="(osgi.extender=osgi.serviceloader.registrar)"
                        </Require-Capability>
                        <Provide-Capability>
                            osgi.serviceloader; osgi.serviceloader=org.openstack4j.api.APIProvider
                        </Provide-Capability>
                        <Embed-Transitive>
                            true
                        </Embed-Transitive>
                        <Embed-Dependency>
                            jackson-dataformat-yaml
                        </Embed-Dependency>
                    </instructions>
                </configuration>
            </plugin>
        </plugins>
        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>2.5</version>
                    <!-- Build jar with specified name and including the OSGi-ready manifest -->
                    <configuration>
                        <finalName>${project.artifactId}-${release.version}</finalName>
                        <!-- Take manifest generated by maven-bundle-plugin -->
                        <archive>
                            <manifestFile>${project.build.outputDirectory}/META-INF/MANIFEST.MF</manifestFile>
                        </archive>
                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.felix</groupId>
                    <artifactId>maven-bundle-plugin</artifactId>
                    <version>4.2.1</version>
                    <executions>
                        <!-- Generate bundle manifest -->
                        <execution>
                            <id>bundle-manifest</id>
                            <phase>process-classes</phase>
                            <goals>
                                <goal>manifest</goal>
                            </goals>
                            <configuration>
                                <instructions>
                                    <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
                                </instructions>
                            </configuration>
                        </execution>
                    </executions>
                </plugin>
                <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
                <plugin>
                    <groupId>org.eclipse.m2e</groupId>
                    <artifactId>lifecycle-mapping</artifactId>
                    <version>1.0.0</version>
                    <configuration>
                        <lifecycleMappingMetadata>
                            <pluginExecutions>
                                <pluginExecution>
                                    <pluginExecutionFilter>
                                        <groupId>
                                            org.apache.felix
                                        </groupId>
                                        <artifactId>
                                            maven-bundle-plugin
                                        </artifactId>
                                        <versionRange>
                                            [2.5.3,)
                                        </versionRange>
                                        <goals>
                                            <goal>manifest</goal>
                                        </goals>
                                    </pluginExecutionFilter>
                                    <action>
                                        <ignore />
                                    </action>
                                </pluginExecution>
                            </pluginExecutions>
                        </lifecycleMappingMetadata>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>29.0-jre</version>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
            <version>1.33</version>
        </dependency>

        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    <reporting>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-javadoc-plugin</artifactId>
                <version>${maven.javadoc.plugin.version}</version>
                <configuration>
                    <author>true</author>
                    <protected>true</protected>
                    <excludePackageNames>*.internal</excludePackageNames>
                    <reportOutputDirectory>docs</reportOutputDirectory>
                    <destDir>javadoc</destDir>
                    <doclint>none</doclint>
                </configuration>
            </plugin>
        </plugins>
    </reporting>
</project>
