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

    Copyright (c) 2013, 2021 Oracle and/or its affiliates. All rights reserved.

    This program and the accompanying materials are made available under the
    terms of the Eclipse Distribution License v. 1.0, which is available at
    http://www.eclipse.org/org/documents/edl-v10.php.

    SPDX-License-Identifier: BSD-3-Clause

-->

<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>com.sun.xml.bind.mvn</groupId>
        <artifactId>jaxb-osgi</artifactId>
        <version>3.0.2-SNAPSHOT</version>
    </parent>

    <artifactId>tests</artifactId>
    <name>JAXB OSGi Tests</name>
    <description>
        Tests for JAXB RI OSGi bundles.
        They should be in separate module because of dependency-hell of osgi and extra-osgi modules.
    </description>
    <url>https://eclipse-ee4j.github.io/jaxb-ri/</url>

    <dependencies>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-osgi</artifactId>
        </dependency>
    </dependencies>

    <profiles>
        <profile>
            <id>default-profile</id>
            <activation>
                <property>
                    <name>!dev</name>
                </property>
            </activation>
            <dependencies>
                <dependency>
                    <groupId>org.osgi</groupId>
                    <artifactId>osgi.core</artifactId>
                    <version>${felix.osgi.core}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jaxb</groupId>
                    <artifactId>osgi-test-osgi</artifactId>
                    <version>${project.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.glassfish.jaxb</groupId>
                    <artifactId>osgi-test-parent</artifactId>
                    <version>${project.version}</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </profile>
    </profiles>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.felix</groupId>
                <artifactId>maven-junit4osgi-plugin</artifactId>
                <version>${felix.junit4osgi}</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>test</goal>
                        </goals>
                        <phase>integration-test</phase>
                        <configuration>
                            <skip>${skipOsgiTests}</skip>
                            <m_deployProjectArtifact>true</m_deployProjectArtifact>
                            <configuration>
                                <org.osgi.framework.system.packages.extra>
                                    javax.xml,
                                    javax.xml.stream,
                                    javax.lang.model.util,
                                    org.xml.sax.ext,
                                    javax.lang.model.type,
                                    javax.lang.model,
                                    jakarta.xml.bind.annotation,
                                    jakarta.xml.bind.helpers,
                                    jakarta.xml.bind,
                                    org.xml.sax.helpers,
                                    javax.xml.transform.dom,
                                    javax.annotation.processing,
                                    javax.xml.transform.dom,
                                    javax.xml.validation,
                                    javax.xml.namespace,
                                    jakarta.xml.bind.annotation.adapters,
                                    com.sun.source.tree,
                                    org.w3c.dom,
                                    javax.lang.model.element,
                                    javax.imageio.stream,
                                    org.xml.sax,
                                    javax.xml.stream.util,
                                    javax.xml.transform.sax,
                                    jakarta.activation,
                                    javax.tools,
                                    javax.xml.parsers,
                                    javax.imageio,
                                    javax.xml.transform,
                                    javax.swing.border,
                                    javax.xml.xpath,
                                    javax.swing.tree,
                                    javax.xml.transform.stream,
                                    org.w3c.dom.ls,
                                    javax.xml.datatype,
                                    javax.swing,
                                    javax.xml.stream.events,
                                    com.sun.source.util,
                                    jakarta.xml.bind.attachment
                                </org.osgi.framework.system.packages.extra>
                            </configuration>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
