##################################################################################
# Copyright (c) 2007, 2013 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#     IBM Corporation - initial API and implementation
#     Jesper S Moller - Bug 421938: [1.8] ExecutionEnvironmentDescription#getVMArguments does not preserve VM arguments
##################################################################################

# Test ".ee" file for testing installed JRE definition

-Dee.executable=jrew.txt
-Dee.executable.console=jre.txt

-Dee.bootclasspath=..\lib\classes.txt;..\lib\others.txt
-Dee.src=..\lib\source\source.txt
-Dee.src.map=..\lib\endorsed\*.jar=..\lib\source\*.txt;..\lib\ext\ext?*.jar=..\lib\source\extra?-src.txt;..\lib\additional\*.???=..\lib\source\source*source.???
-Dee.javadoc=http://a.javadoc.location
-Dee.additional.dirs=..\lib\additional
-Dee.ext.dirs=..\lib\ext;..\lib\opt-ext
-Dee.endorsed.dirs=..\lib\endorsed

# all args should get passed through to command line
-XspecialArg:123

# tests an empty property
-Dee.empty=

# test new index attribute
-Dee.index=http://a.index.location

-Dee.language.level=1.4
-Dee.class.library.level=CDC-1.1/Foundation-1.1
-Dee.id=CDC-1.1/Foundation-1.1
-Dee.name=Eclipse JDT Test JRE Definition
-Dee.description=Foundation Specification v1.1
-Dee.copyright=(c) Copyright IBM Corp. 2007  All Rights Reserved
-Djava.home=..

# all args should get passed through to command line
-XspecialArg2=456
-XspecialArg3=789
