<?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.felix.atomos.tests</groupId>
        <artifactId>org.apache.felix.atomos.tests</artifactId>
        <version>1.0.0</version>
    </parent>
    <packaging>pom</packaging>
    <artifactId>org.apache.felix.atomos.tests.testbundles</artifactId>
    <name>atomos.tests.testbundles</name>
    <modules>
        <module>atomos.tests.testbundles.service.contract</module>
        <module>atomos.tests.testbundles.service.impl</module>
        <module>atomos.tests.testbundles.service.impl.activator</module>
        <module>atomos.tests.testbundles.service.impl.a</module>
        <module>atomos.tests.testbundles.service.impl.b</module>
        <module>atomos.tests.testbundles.service.user</module>
        <module>atomos.tests.testbundles.service.library</module>
        <module>atomos.tests.testbundles.resources.a</module>
        <module>atomos.tests.testbundles.bom</module>
        <module>atomos.tests.testbundles.reflect.command</module>
        <module>atomos.tests.testbundles.reflect.dto</module>
        <module>atomos.tests.testbundles.dependency.a</module>
        <module>atomos.tests.testbundles.dependency.b</module>
        <module>atomos.tests.testbundles.dependent.x</module>
    </modules>
</project>
