#    Licensed 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.

#-runjdb: 8000

-runfw: org.eclipse.osgi
-runproperties: \
	eclipse.log.enabled=false,\
	logback.configurationFile=file:${.}/logback.xml,\
	org.osgi.service.http.port=0,\
	osgi.console=,\
	tck.config.test.javaconfig.converter.stringvalues=foo,\
	test.property.a=blah,\
	test.property.b=,\
	org.apache.felix.http.host=localhost

-resolve.effective: resolve, active

-runpath: \
	ch.qos.logback.classic,\
	ch.qos.logback.core,\
	org.apache.felix.logback,\
	slf4j.api

-runsystempackages: \
	org.slf4j;version=${slf4j.version},\
	org.slf4j.event;version=${slf4j.version},\
	org.slf4j.helpers;version=${slf4j.version},\
	org.slf4j.spi;version=${slf4j.version},\
	sun.invoke,\
	sun.misc

-runrequires.base: \
	osgi.identity;filter:='(osgi.identity=${project.artifactId})',\
	osgi.identity;filter:='(osgi.identity=${project.artifactId}-tests)',\
	osgi.identity;filter:='(osgi.identity=org.apache.felix.gogo.command)'

-runblacklist.base: \
	osgi.identity;filter:='(osgi.identity=biz.aQute.bndlib)'

-runstartlevel: \
	order=sortbynameversion,\
	begin=-1
