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

Bundle-Name: Apache ACE Agent
Bundle-Description: Implementation of the Apache ACE Agent
Bundle-Version: 1.0.3
Bundle-Activator: org.apache.ace.agent.impl.Activator

Private-Package: org.apache.ace.range,\
	org.apache.ace.agent.impl,\
	org.apache.ace.agent.updater,\
	org.apache.felix.deploymentadmin,\
	org.apache.felix.deploymentadmin.spi,\
	org.osgi.service.event,\
	org.osgi.service.log,\
	org.osgi.util.tracker,\
	org.apache.ace.feedback,\
	org.apache.ace.feedback.util

# No wildcard import here on purpose. Are you sure the agent must 
# require an extra external dependency? Probably not...
Import-Package: !org.apache.felix.dm, *

# This is a minimal set on purpose. Are you really sure the agent must 
# expose another package? Probably not...
Export-Package: org.apache.ace.agent,\
	org.osgi.service.deploymentadmin;-split-package:=merge-last,\
	org.osgi.service.deploymentadmin.spi;-split-package:=merge-last

mavenGroupId: org.apache.ace

-pom: \
	groupid=${mavenGroupId},\
	version=${Bundle-Version}

# Keeping the agent as lean as possible. Remove debug when compiling
# offline
#javac.debug:  off

-buildpath: \
	${^-buildpath},\
	${testng},\
	osgi.core;version=4.3,\
	osgi.cmpn;version=4.3,\
	org.easymock,\
	javax.servlet,\
	org.apache.felix.http.jetty;version='[2.2,3)',\
	org.apache.felix.deploymentadmin,\
	org.apache.ace.range.api;version=latest,\
	org.apache.ace.feedback.common;version=latest

javac.source: 1.7
javac.target: 1.7