# Licensed to the Apache Software Foundation (ASF) under the terms of ASLv2 (http://www.apache.org/licenses/LICENSE-2.0).

Test-Cases: ${classes;CONCRETE;EXTENDS;org.apache.ace.it.IntegrationTestBase}
-buildpath: \
	junit.osgi,\
	osgi.core;version=6.0.0,\
	osgi.cmpn,\
	javax.servlet,\
	org.apache.felix.dependencymanager,\
	org.apache.ace.test;version=latest,\
	org.apache.ace.http.listener;version=latest,\
	org.apache.ace.discovery.api;version=latest,\
	org.apache.ace.discovery.property;version=latest,\
	org.apache.ace.identification.api;version=latest,\
	org.apache.ace.identification.property;version=latest,\
	org.apache.ace.log.server.store.api;version=latest,\
	org.apache.ace.scheduler.api;version=latest,\
	org.apache.ace.deployment.servlet;version=latest,\
	org.apache.ace.deployment.provider.api;version=latest,\
	org.apache.ace.deployment.provider.filebased;version=latest,\
	org.apache.ace.deployment.util.test;version=latest,\
	org.apache.ace.feedback.common;version=latest,\
	org.apache.ace.deployment.provider.base;version=latest,\
	org.apache.ace.deployment.task;version=latest
-runfw: org.apache.felix.framework;version='[5.2.0,6)'
-runvm: -ea
-runbundles: osgi.cmpn,\
	org.apache.felix.dependencymanager,\
	org.apache.felix.configadmin,\
	org.apache.felix.eventadmin,\
	org.apache.felix.http.jetty,\
	org.apache.felix.deploymentadmin,\
	org.apache.felix.log,\
	org.apache.felix.prefs,\
	org.apache.ace.http.listener;version=latest,\
	org.apache.ace.authentication.api;version=latest,\
	org.apache.ace.connectionfactory;version=latest,\
	org.apache.ace.deployment.api;version=latest,\
	org.apache.ace.deployment.deploymentadmin;version=latest,\
	org.apache.ace.deployment.provider.api;version=latest,\
	org.apache.ace.deployment.provider.base;version=latest,\
	org.apache.ace.deployment.provider.filebased;version=latest,\
	org.apache.ace.deployment.provider.repositorybased;version=latest,\
	org.apache.ace.deployment.servlet;version=latest,\
	org.apache.ace.deployment.streamgenerator;version=latest,\
	org.apache.ace.deployment.task;version=latest,\
	org.apache.ace.deployment.task.base;version=latest,\
	org.apache.ace.discovery.api;version=latest,\
	org.apache.ace.discovery.property;version=latest,\
	org.apache.ace.feedback.common;version=latest,\
	org.apache.ace.identification.api;version=latest,\
	org.apache.ace.identification.property;version=latest,\
	org.apache.ace.obr.metadata;version=latest,\
	org.apache.ace.obr.servlet;version=latest,\
	org.apache.ace.obr.storage;version=latest,\
	org.apache.ace.repository.api;version=latest,\
	org.apache.ace.repository.ext;version=latest,\
	org.apache.ace.repository.impl;version=latest,\
	org.apache.ace.repository.servlet;version=latest,\
	org.apache.ace.repository.task;version=latest,\
	org.apache.ace.scheduler.impl;version=latest,\
	org.apache.ace.scheduler.api;version=latest,\
	org.apache.ace.test;version=latest,\
	org.apache.ace.range.api;version=latest
Private-Package: org.apache.ace.it.deployment, org.apache.ace.deployment.util.test
Bundle-Version: 1.0.0
Bundle-Name: Apache ACE Deployment itest
Bundle-Description: Integration test bundle for Apache ACE Deployment
Bundle-Category: itest

-baseline:
