<?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://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.apisupport.project</type>
    <configuration>
        <data xmlns="http://www.netbeans.org/ns/nb-module-project/3">
            <code-name-base>org.netbeans.lib.v8debug</code-name-base>
            <module-dependencies>
                <dependency>
                    <code-name-base>org.netbeans.libs.json_simple</code-name-base>
                    <build-prerequisite/>
                    <compile-dependency/>
                    <run-dependency>
                        <release-version>1</release-version>
                        <specification-version>0.10</specification-version>
                    </run-dependency>
                </dependency>
            </module-dependencies>
            <test-dependencies>
                <test-type>
                    <name>unit</name>
                    <test-dependency>
                        <code-name-base>org.netbeans.libs.junit4</code-name-base>
                        <compile-dependency/>
                    </test-dependency>
                    <test-dependency>
                        <code-name-base>org.netbeans.modules.nbjunit</code-name-base>
                        <recursive/>
                        <compile-dependency/>
                    </test-dependency>
                </test-type>
            </test-dependencies>
            <friend-packages>
                <friend>org.netbeans.modules.javascript.v8debug</friend>
                <friend>org.netbeans.modules.javascript.v8debug.ui</friend>
                <package>org.netbeans.lib.v8debug</package>
                <package>org.netbeans.lib.v8debug.commands</package>
                <package>org.netbeans.lib.v8debug.connection</package>
                <package>org.netbeans.lib.v8debug.events</package>
                <package>org.netbeans.lib.v8debug.vars</package>
            </friend-packages>
        </data>
    </configuration>
</project>
