#    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=1.7.25,\
	org.slf4j.event;version=1.7.25,\
	org.slf4j.helpers;version=1.7.25,\
	org.slf4j.spi;version=1.7.25,\
	sun.invoke,\
	sun.misc,\
	${bndjava15temorarysupplementalpackages}

-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
