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

    Copyright (c) 2017, 2018 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://www.netbeans.org/ns/project/1">
    <type>org.netbeans.modules.ant.freeform</type>
    <configuration>
        <general-data xmlns="http://www.netbeans.org/ns/freeform-project/1">
            <!-- Do not use Project Properties customizer when editing this file manually. -->
            <name>admin-devtests</name>
            <properties/>
            <folders>
                <source-folder>
                    <label>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</label>
                    <location>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</location>
                </source-folder>
                <source-folder>
                    <label>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</label>
                    <type>java</type>
                    <location>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</location>
                </source-folder>
                <source-folder>
                    <label>src</label>
                    <type>java</type>
                    <location>src</location>
                </source-folder>
            </folders>
            <ide-actions>
                <action name="build">
                    <target>build</target>
                </action>
                <action name="clean">
                    <target>clean</target>
                </action>
                <action name="run">
                    <target>all</target>
                </action>
                <action name="test">
                    <target>runtest</target>
                </action>
                <action name="rebuild">
                    <target>clean</target>
                    <target>build</target>
                </action>
            </ide-actions>
            <view>
                <items>
                    <source-folder style="packages">
                        <label>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</label>
                        <location>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</location>
                    </source-folder>
                    <source-folder style="packages">
                        <label>src</label>
                        <location>src</location>
                    </source-folder>
                    <source-file>
                        <location>build.xml</location>
                    </source-file>
                </items>
                <context-menu>
                    <ide-action name="build"/>
                    <ide-action name="rebuild"/>
                    <ide-action name="clean"/>
                    <ide-action name="run"/>
                    <ide-action name="test"/>
                </context-menu>
            </view>
            <subprojects/>
        </general-data>
        <java-data xmlns="http://www.netbeans.org/ns/freeform-project-java/1">
            <compilation-unit>
                <package-root>C:\gf\v2\appserv-tests\util\reportbuilder\src\main\java</package-root>
                <package-root>src</package-root>
                <classpath mode="compile">../../../util/reportbuilder/src/main/java;../../../lib/com-sun-commons-logging.jar;../../../lib/commons-logging.jar;../../../lib/filediff.jar;../../../lib/httpunit.jar;../../../lib/isql.jar;../../../lib/js.jar;../../../lib/junit.jar;../../../lib/ldapjdk.jar;../../../lib/nekohtml.jar;../../../lib/reportbuilder.jar;../../../lib/reporter.jar;../../../lib/selenium-java-client-driver-tests.jar;../../../lib/selenium-java-client-driver.jar;../../../lib/selenium-server-0.9.1-20070223.200626-116-standalone.jar;../../../lib/selenium-server.jar;../../../lib/sslutil.jar;../../../lib/testdriversecurity.jar;../../../lib/testng-5.5-jdk15.jar;../../../lib/testng.jar;../../../lib/Tidy.jar;../../../lib/webtest.jar;../../../lib/xercesImpl.jar;../../../lib/xmlParserAPIs.jar</classpath>
                <source-level>1.5</source-level>
            </compilation-unit>
        </java-data>
    </configuration>
</project>
