#
# List of Apache Felix downloads
# This file is processed by the downloads template and view
# lines starting with a hash sign and empty lines are ignored

#
# This file contains three parts:
#   (1) version number of the Felix Framework Distribution
#   (2) Subprojects
#   (3) Maven Plugins
#   (4) Ant Tasks

#
# (1) Felix Framework Distribution version
framework|7.0.3
#
# (2) Subprojects
# This list is sorted by the title before writing the table
# Format: title|artifactId|version[|source-classifier[|classifier][|changelog]]
#
#  - title: (required) user friendly module title
#  - artifactId: (required) bundle file base name (Maven artifactId)
#  - version: (required) module version
#  - source-classifier: (optional) Maven classifier for source release archive
#        default: source-release
#        for pre-Felix parent POM 2.1 releases use: project
#  - classifier: (optional) Non-Source Maven classifier (default: none)
#  - changelog: (optional) path to the change log file relative to the
#        bundle's release tag folder in SVN (default: changelog.txt)
#        Use - to not have a changelog link
#
Atomos|org.apache.felix.atomos|1.0.0
AutoConf Resource Processor|org.apache.felix.deployment.rp.autoconf|0.1.8
Bundle Repository|org.apache.felix.bundlerepository|2.0.10|||doc/changelog.txt
CM Json|org.apache.felix.cm.json|1.0.6
Configuration Admin|org.apache.felix.configadmin|1.9.22
Configurator|org.apache.felix.configurator|1.0.14
Configuration Admin Interceptor Plugin|org.apache.felix.configadmin.plugin.interpolation|1.2.2
Connect|org.apache.felix.connect|0.2.0
Converter|org.apache.felix.converter|1.0.12
Coordinator|org.apache.felix.coordinator|1.0.2
Dependency Manager 4|org.apache.felix.dependencymanager|r16|src|bin
Deployment Admin|org.apache.felix.deploymentadmin|0.9.10|||changelog.txt
Event Admin|org.apache.felix.eventadmin|1.6.2
File Install|org.apache.felix.fileinstall|3.6.4|||doc/changelog.txt
Framework|org.apache.felix.framework|7.0.3|||framework/doc/changelog.txt
Framework Security|org.apache.felix.framework.security|2.8.3|||framework.security/doc/changelog.txt
Gogo Runtime|org.apache.felix.gogo.runtime|1.1.4|project||doc/changelog.txt
Gogo JLine|org.apache.felix.gogo.jline|1.1.8|project||doc/changelog.txt
Gogo Shell|org.apache.felix.gogo.shell|1.1.4|project||doc/changelog.txt
Gogo Command|org.apache.felix.gogo.command|1.1.2|project||doc/changelog.txt
Health Check Annotations|org.apache.felix.healthcheck.annotation|2.0.0|project||-
Health Check API|org.apache.felix.healthcheck.api|2.0.4|project||-
Health Check Core|org.apache.felix.healthcheck.core|2.0.14|project||-
Health Check General Checks|org.apache.felix.healthcheck.generalchecks|3.0.0|project||-
Health Check Webconsole Plugin|org.apache.felix.healthcheck.webconsoleplugin|2.0.2|project||-
HTTP Service Base|org.apache.felix.http.base|4.2.0
HTTP Service Bridge|org.apache.felix.http.bridge|4.2.0
HTTP Service Jetty|org.apache.felix.http.jetty|4.2.0
HTTP Service Proxy|org.apache.felix.http.proxy|3.0.6
HTTP Service SSL filter|org.apache.felix.http.sslfilter|1.2.6
HTTP Service Whiteboard|org.apache.felix.http.whiteboard|4.0.0
HTTP Servlet 2.6 + 3.0 + 4.0 API|org.apache.felix.http.servlet-api|1.2.0
Inventory Printer|org.apache.felix.inventory|1.0.6
iPOJO (Core)|org.apache.felix.ipojo|1.12.1|project||-
iPOJO Runtime Project (containing all iPOJO runtime modules)|org.apache.felix.ipojo.runtime-project|1.12.1|source-release||-
iPOJO Architecture Command for the Felix Shell|org.apache.felix.ipojo.arch|1.6.0|project||-
iPOJO Architecture Command for Gogo|org.apache.felix.ipojo.gogo|1.12.1|source-release||-
iPOJO Composite|org.apache.felix.ipojo.composite|1.12.1|project||-
iPOJO Annotations|org.apache.felix.ipojo.annotations|1.12.1|project||-
iPOJO Ant Task and CLI|org.apache.felix.ipojo.ant|1.12.1|project||-
iPOJO BND Plugin|bnd-ipojo-plugin|1.12.1|project||-
iPOJO WebConsole Plugin|org.apache.felix.ipojo.webconsole|1.7.0|project||-
iPOJO API|org.apache.felix.ipojo.api|1.12.1|project||-
iPOJO Manipulator|org.apache.felix.ipojo.manipulator|1.12.1|project||-
iPOJO Manipulator Project (containing all iPOJO manipulator modules)|org.apache.felix.ipojo.manipulator-project|1.12.1|source-release||-
iPOJO Whiteboard pattern handler|org.apache.felix.ipojo.handler.whiteboard|1.6.0|project||-
iPOJO Extender pattern handler|org.apache.felix.ipojo.handler.extender|1.4.0|project||-
iPOJO JMX handler|org.apache.felix.ipojo.handler.jmx|1.4.0|project||-
iPOJO Event Admin handler|org.apache.felix.ipojo.handler.eventadmin|1.8.0|project||-
iPOJO Temporal Dependency handler|org.apache.felix.ipojo.handler.temporal|1.6.0|project||-
Jaas Support Bundle|org.apache.felix.jaas|1.0.2|source-release||changelog.txt
Jaas Support Boot Classpath Jar|org.apache.felix.jaas|1.0.2|source-release|boot|changelog.txt
junit4osgi|org.apache.felix.ipojo.junit4osgi|1.0.0|project||doc/changelog.txt
junit4osgi - shell command|org.apache.felix.ipojo.junit4osgi.felix-command|1.0.0|project||doc/changelog.txt
junit4osgi - swing gui|org.apache.felix.ipojo.junit4osgi.swing-gui|1.0.0|project||doc/changelog.txt
Lightweight HTTP Service Core|org.apache.felix.httplite.core|0.1.4|project||doc/changelog.txt
Lightweight HTTP Service Complete|org.apache.felix.httplite.complete|0.1.4|project||doc/changelog.txt
Log|org.apache.felix.log|1.2.2|project||doc/changelog.txt
Log Extension|org.apache.felix.log.extension|1.0.0
Logback|org.apache.felix.logback|1.0.2
Main|org.apache.felix.main|7.0.3|project||main/doc/changelog.txt
Metatype|org.apache.felix.metatype|1.2.4
OSGi OBR service API|org.osgi.service.obr|1.0.2|project||doc/changelog.txt
Preferences|org.apache.felix.prefs|1.1.0
Remote Shell|org.apache.felix.shell.remote|1.1.2|project||doc/changelog.txt
Resolver|org.apache.felix.resolver|2.0.2|||doc/changelog.txt
SCR (Declarative Services)|org.apache.felix.scr|2.2.0
SCR Compat (Declarative Services)|org.apache.felix.scr.compat|1.0.4
SCR Annotations|org.apache.felix.scr.annotations|1.12.0
SCR DS Annotations|org.apache.felix.scr.ds-annotations|1.2.10
SCR Generator|org.apache.felix.scr.generator|1.18.4|project
Shell|org.apache.felix.shell|1.4.3|project||doc/changelog.txt
Shell Text UI|org.apache.felix.shell.tui|1.4.1|project||doc/changelog.txt
UPnP Base Driver (JDK 1.4+)|org.apache.felix.upnp.basedriver|0.8.0|project||-
UPnP Base Driver (JDK 1.3)|org.apache.felix.upnp.basedriver|0.8.0|project|jdk13|-
UPnP Extra|org.apache.felix.upnp.extra|0.4.0|project||doc/changelog.txt
UPnP Tester|org.apache.felix.upnp.tester|0.4.0|project||doc/changelog.txt
User Admin  |org.apache.felix.useradmin|1.0.4|project||-
User Admin File-based store|org.apache.felix.useradmin.filestore|1.0.2|project||-
User Admin MongoDB-based store|org.apache.felix.useradmin.mongodb|1.0.1|project||-
Utils|org.apache.felix.utils|1.11.0|||doc/changelog.txt
Web Console|org.apache.felix.webconsole|4.7.0
Web Console (all-in-one bundle)|org.apache.felix.webconsole|4.6.0||all
Web Console DS Plugin|org.apache.felix.webconsole.plugins.ds|2.1.0
Web Console Event Admin Plugin|org.apache.felix.webconsole.plugins.event|1.1.8
Web Console Memory Usage Plugin|org.apache.felix.webconsole.plugins.memoryusage|1.0.10
Web Console OBR Plugin|org.apache.felix.webconsole.plugins.obr|1.0.4
Web Console PackageAdmin Plugin|org.apache.felix.webconsole.plugins.packageadmin|1.0.4
Web Console Script Console Plugin|org.apache.felix.webconsole.plugins.scriptconsole|1.0.2|project
Web Console ServiceDiagnostics Plugin|org.apache.felix.servicediagnostics.plugin|0.1.3|||changelog.txt
Web Console Subsystems Plugin|org.apache.felix.webconsole.plugins.subsystem|0.1.0
Web Console UPNP Plugin|org.apache.felix.webconsole.plugins.upnp|1.0.6
Web Console User Admin Plugin|org.apache.felix.webconsole.plugins.useradmin|1.0.2

# (3) Maven Plugins
# This list is sorted by the title before writing the table
# Format: title|artifactId|version[|classifier[|extension]]
Maven Bundle Plugin|maven-bundle-plugin|5.1.1|||changelog.txt
Maven iPOJO Plugin|maven-ipojo-plugin|1.12.1|||-
Maven junit4osgi Plugin|maven-junit4osgi-plugin|1.0.0|||doc/changelog.txt
Maven OBR Plugin|maven-obr-plugin|1.2.0|||-
Maven SCR Plugin|maven-scr-plugin|1.26.4
OSGi Check Maven Plugin|osgicheck-maven-plugin|0.1.0
Atomos Maven Plugin|atomos-maven-plugin|0.9.0

# (3) Ant Tasks
# This list is sorted by the title before writing the table
# Format: title|artifactId|version[|classifier[|extension]]
iPOJO Ant Task and CLI|org.apache.felix.ipojo.ant|1.11.0|
SCR Ant Task|org.apache.felix.scr.ant|1.18.0

# (3) Bnd PLugins
# This list is sorted by the title before writing the table
# Format: title|artifactId|version[|classifier[|extension]]
SCR bnd Plugin|org.apache.felix.scr.bnd|1.9.6
SCR Ext Anno|org.apache.felix.scr.ext.anno|1.0.0
