/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You 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.
 */

		    Apache Karaf 4.1.6
		    ==================
 Apache Karaf 4.1.6 is a maintenance release on the 4.1.x series, bringing bug fixes, updates and some improvements.

 ChangeLog:
 ----------
** Bug
    * [KARAF-4996] - Missing packages in created instances 
    * [KARAF-5422] - Feature Repository with Spaces in Path
    * [KARAF-5642] - karaf:deploy goal broken
    * [KARAF-5645] - Karaf crashes when using the character ']' in the console
    * [KARAF-5646] - Support env:XXX subtitution missing for system.properties
    * [KARAF-5647] - start, stop, shell, status and client fail on Solaris Sparc 11
    * [KARAF-5657] - client.bat doesn't work on Windows
    * [KARAF-5671] - Demo profiles still use "old style" pax-logging configuration
    * [KARAF-5683] - Completion is "weird" on Windows 8
    * [KARAF-5689] - Console is broken after Ctrl+C
    * [KARAF-5694] - strip url to ensure it's a valid one which could download
    * [KARAF-5699] - Upgrade to jolokia 1.5.0
    * [KARAF-5781] - Properties edit doesn't conserve the existing ones
    * [KARAF-5798] - Karaf slave instance does not write pid or port file until it becomes master
    * [KARAF-5851] - Remove heading spaces in the cfg files

** New Feature
    * [KARAF-5665] - Sometimes the command description does not show when listing commands with "TAB"

** Improvement
    * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean
    * [KARAF-5677] - deploy goal throws NPE with artifactLocations is not provided
    * [KARAF-5742] - Possibility to configure colors for karaf shell
    * [KARAF-5759] - Add an option to config:list to list only the PIDs
    * [KARAF-5787] - Improve scheduler whiteboard to avoid ClassCastException
    * [KARAF-5796] - Heap dump needs to end in .hprof w/ newer JDK

** Dependency upgrade
    * [KARAF-5602] - Upgrade to Spring Security 4.2.4.RELEASE
    * [KARAF-5616] - Upgrade to SCR 2.0.14
    * [KARAF-5618] - Upgrade to Aries JMX Blueprint 1.2.0
    * [KARAF-5619] - Upgrade to Aries JMX Core 1.1.8 & JMX Whiteboard 1.2.0
    * [KARAF-5623] - Upgrade to maven-bundle-plugin 3.5.0
    * [KARAF-5624] - Upgrade to jline 3.6.1
    * [KARAF-5668] - Upgrade to JLine 3.6.2
    * [KARAF-5710] - Upgrade to Felix Resolver 1.16.0
    * [KARAF-5717] - Upgrade to easymock 3.6
    * [KARAF-5718] - Upgrade to Equinox 3.12.100
    * [KARAF-5719] - Upgrade to Jansi 1.17.1
    * [KARAF-5829] - Upgrade to Xerces 2.12.0
    * [KARAF-5860] - Upgrade to Pax Web 6.0.11 / Jetty 9.3.24.v20180605
    * [KARAF-5863] - Upgrade to Spring 4.3.18.RELEASE

		    Apache Karaf 4.1.5
		    ==================
 Apache Karaf 4.1.5 is a maintenance release on the 4.1.x series, bringing bug fixes, updates and some improvements.

 ChangeLog:
 ----------
** Bug
    * [KARAF-4662] - Unable to create Karaf Cave 4.0.0 Kar file
    * [KARAF-5210] - Seemingly random NPEs from Aether resolver
    * [KARAF-5333] -  UnsupportedCharsetException: cp65001 and unprintable characters from karaf 4.1.2 console
    * [KARAF-5473] - Karaf SSH session timing out
    * [KARAF-5542] - Installing a feature triggers restarting previous ones
    * [KARAF-5546] - incorrect acl rules for system:start-level
    * [KARAF-5559] - log:tail kills ssh & karaf when root logger is in DEBUG
    * [KARAF-5566] - Features installed through prerequisites lead to errors when uninstalling features
    * [KARAF-5569] - Cannot pass commands to client script when sftpEnabled=false
    * [KARAF-5572] - The parent pom of the karaf manual module in 4.1.x still points to 4.1.3-SNAPSHOT
    * [KARAF-5573] - Karaf on Windows does not pass the version check when JAVA_HOME contains whitespace
    * [KARAF-5585] - Verify mojo configure pax-url-mvn with non existent settings.xml

** Improvement
    * [KARAF-4496] - UserPrincipal lookup in the JAAS' BackingEngine
    * [KARAF-5511] - Proper Provide-Capability for org.apache.karaf.jaas.modules.EncryptionService
    * [KARAF-5558] - Be able to configure the Quartz Scheduler
    * [KARAF-5568] - Karaf Commands cannot have return codes
    * [KARAF-5588] - Increase max number of threads in the scheduler by default
    * [KARAF-5604] - karaf:features-generate-descriptor takes long when faced with complex feature dependencies

** Dependency upgrade
    * [KARAF-5550] - Upgrade to pax-url 2.5.4
    * [KARAF-5595] - Upgrade toJLine 3.6.0 and Jansi 1.17
    * [KARAF-5597] - Upgrade to Spring 4.3.14.RELEASE
    * [KARAF-5605] - Upgrade to OpenJPA 2.4.2
    * [KARAF-5606] - Upgrade to EclipseLink 2.7.1
    * [KARAF-5607] - Upgrade to Hibernate 5.2.9.Final

		    Apache Karaf 4.1.4
		    ==================
 Apache Karaf 4.1.4 is a maintenance release on the 4.1.x series, bringing bug fixes, updates and some improvements.

 ChangeLog:
 ----------
** Bug
    * [KARAF-3875] - Karaf scheduler should wrap QuartzException in exported SchedulerException
    * [KARAF-3976] - Broken compatibility with 3.x jdbc DataSources
    * [KARAF-4756] - Redeploying Features in the Deploy directory with install="auto" does not work for same feature versions
    * [KARAF-5203] - KAR:Create missing bundles that are marked conditional
    * [KARAF-5296] - The command "shell:watch" fails with a NPE
    * [KARAF-5446] - Fragment bundles are not resolved properly when installing/restarting the container
    * [KARAF-5464] - karaf.bat file is missing KARAF_SYSTEM_OPTS property
    * [KARAF-5471] - Jetty version in Karaf and Pax Web are not aligned
    * [KARAF-5487] - SshRole restriction not enforced when using username/password
    * [KARAF-5493] - InvalidPathException is thrown when execute config:property-set command from ssh client
    * [KARAF-5495] - Upgrade SyncopeBackingEngineFactory to support Syncope 2.x
    * [KARAF-5496] - NPEs in SyncopeLoginModule if "version" is not specified
    * [KARAF-5497] - Karaf shuts down when installing CXF feature
    * [KARAF-5498] - SyncopeLoginModule parses roles instead of groups for Syncope 2.0.x
    * [KARAF-5527] - the karaf.secured.command.compulsory.roles should only affect command ACL rules
    * [KARAF-5528] - Karaf feature deployer should stop refreshed bundles together with the updated ones
    * [KARAF-5533] - KarArtifactInstaller does not properly detect already installed KAR files

** Dependency upgrade
    * [KARAF-5488] - Upgrade to Felix Framework 5.6.10
    * [KARAF-5489] - Upgrade to commons-io 2.6
    * [KARAF-5490] - Upgrade to JNA 4.5.0
    * [KARAF-5491] - Upgrade to commons-compress 1.15
    * [KARAF-5517] - Upgrade to Apache Felix Metatype 1.1.6
    * [KARAF-5518] - Upgrade to Apache Felix WebConsole DS plugin 2.0.8
    * [KARAF-5519] - Upgrade to Apache Felix WebConsole EventAdmin plugin 1.1.8
    * [KARAF-5522] - Upgrade to easymock 3.5.1
    * [KARAF-5523] - Upgrade to Equinox 3.12.50
    * [KARAF-5525] - Upgrade to PAX tinybundle 3.0.0 
    * [KARAF-5531] - Upgrade to maven-compiler-plugin 3.7.0
    * [KARAF-5532] - Upgrade to maven-dependency-plugin 3.0.2
    * [KARAF-5534] - Upgrade to Pax Web 6.0.9
    * [KARAF-5535] - Upgrade to maven-javadoc-plugin 3.0.0
    * [KARAF-5536] - Upgrade to maven-war-plugin 3.2.0
    * [KARAF-5537] - Upgrade to modello-maven-plugin 1.9.1
    * [KARAF-5538] - Upgrade to maven-invoker-plugin 3.0.1
    * [KARAF-5539] - Upgrade to maven-archetype-plugin 3.0.1

** Improvement
    * [KARAF-5418] - SSH public key authentication from LDAP
    * [KARAF-5486] - Add a command to change job scheduling

** New Feature
    * [KARAF-4188] - Add support for Systemd's watchdog
    * [KARAF-5307] - Add SchedulerMBean to mimic scheduler shell commands
    * [KARAF-5485] - Be able to disable the sftp server


		    Apache Karaf 4.1.3
		    ==================
 Apache Karaf 4.1.0 is a maintenance release on the 4.1.x series, bringing bug fixes and updates.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3531] - SimpleMavenResolver does not handle wrap: prefix in mvn urls
    * [KARAF-4655] - karaf-maven-plugin add-features-to-repo goal can't add Camel feature
    * [KARAF-5103] - Quick start fails at the step "feature:install camel-spring"
    * [KARAF-5283] - Karaf in offline (no internet) environment - NamespaceHandler bugs
    * [KARAF-5304] - checkRootInstance function in karaf script fails under AIX
    * [KARAF-5311] - NPE in karaf-maven-plugin when specifying descriptor by file url
    * [KARAF-5312] - bin/stop script output some unwanted message on mac
    * [KARAF-5313] - Exception when deleting a .cfg file from hot deploy directory 
    * [KARAF-5314] - The performance of profile builder used by karaf maven plugin has reduced significantly in 4.1 compared to 4.0
    * [KARAF-5315] - Race condition during shutdown using SIGTERM
    * [KARAF-5317] - "Exception in thread "SIGWINCH handler" java.lang.UnsupportedOperationException" occurs when resizing the console while `log:tail` is run
    * [KARAF-5320] - Karaf Command Arguments escapes backslash characters
    * [KARAF-5326] - variables in cfg files are expanded
    * [KARAF-5328] - NPE is thrown when execute source command from client/ssh
    * [KARAF-5330] - Require a specific role to access the SSH console
    * [KARAF-5332] - bin/stop script fails when KARAF_DEBUG is set
    * [KARAF-5333] -  UnsupportedCharsetException: cp65001 and unprintable characters from karaf 4.1.2 console
    * [KARAF-5334] - Fix broken shell.support.table.ShellTableTest on Windows
    * [KARAF-5337] - karaf-maven-plugin generates an "override.properties" instead of "overrides.properties"
    * [KARAF-5338] - Unable to access the local JMX server on OSX
    * [KARAF-5343] - Upgrade to pax-web-6.0.7
    * [KARAF-5352] - KARAF_ETC envvar ignored
    * [KARAF-5371] - Race condition between FeatureService and Fileinstall
    * [KARAF-5373] - Karaf-maven-plugin fails to create feature file
    * [KARAF-5374] - karaf-maven-plugin can't configure the start-level for the startupBundles
    * [KARAF-5375] - feature:stop command does not stop the bundles
    * [KARAF-5377] - Speed up repository loading
    * [KARAF-5388] - create dump doesn't include log file anymore
    * [KARAF-5390] - tar.gz archives contains invalid data in demos\web\src\main\webapp\WEB-INF\karaf\system\org\apache\felix
    * [KARAF-5394] - maven-metadata-local.xml in KARs cause SAXParseException
    * [KARAF-5397] - Remove org.apache.karaf.shell config from ssh feature
    * [KARAF-5404] - CLI autocompletion issue
    * [KARAF-5406] - CLI error on window resize on Linux(Wayland)
    * [KARAF-5411] - Client doesn't prompt for user if no user.properties file
    * [KARAF-5414] - Features mentioned in feature.xml stubs aren't taken into account in dependency calculations
    * [KARAF-5423] - Karaf is flagged as vulnerable to CVE-2015-5262
    * [KARAF-5435] - BundleException when installing a bundle by API when the FeatureService install a feature
    * [KARAF-5436] - Factory configurations file in etc/ are not deleted when the configuration is deleted
    * [KARAF-5440] - No override facility for properties in system.properties

** Dependency upgrade
    * [KARAF-5359] - Upgrade to JLine 3.5.0
    * [KARAF-5365] - Upgrade to Aries Subsystem 2.0.10
    * [KARAF-5366] - Upgrade to Felix ConfigAdmin 1.8.16
    * [KARAF-5367] - Upgrade to Felix EventAdmin 1.4.10
    * [KARAF-5368] - Upgrade to Felix Framework & Main 5.6.8
    * [KARAF-5369] - Upgrade to Felix Metatype 1.1.4
    * [KARAF-5370] - Upgrade to Felix Resolver 1.14.0
    * [KARAF-5419] - Upgrade to Aries Blueprint Core 1.8.3
    * [KARAF-5430] - Upgrade to Spring 4.0.9.RELEASE & 4.3.12.RELEASE

** Documentation
    * [KARAF-5357] - Help string for feature:stop is incorrect

** Improvement
    * [KARAF-4803] - Turn off Karaf configuration persistence manager
    * [KARAF-4932] - Remove blueprint compat and blueprint annotations bundles
    * [KARAF-5080] - Use the full ttop command from gogo-jline
    * [KARAF-5294] - Cleanup Maven repository
    * [KARAF-5319] - the jetty feature in karaf shouldn't depend on pax-jetty feature
    * [KARAF-5363] - Add --no-start option to kar:install, kar cfg and kar MBean


		    Apache Karaf 4.1.2
		    ==================
 Apache Karaf 4.1.0 is a maintenance release on the 4.1.x series, bringing bug fixes and updates.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3347] - 'LATEST' placeholder is not resolved correctly for descriptors and repositories
    * [KARAF-3429] - always use proxy server listed in maven settings.xml when installing features
    * [KARAF-4174] - NullPointerException when running obr:info on a bundle served by cave
    * [KARAF-4324] - Shell commands and optional @Reference
    * [KARAF-4490] - LDAPLoginModule use authentication to check user password
    * [KARAF-4603] - Nashorn support in Karaf
    * [KARAF-4655] - karaf-maven-plugin add-features-to-repo goal can't add Camel feature
    * [KARAF-4985] - Karaf does not start with JDK 9 in Windows 
    * [KARAF-4988] - Refreshing a feature repository from webconsole fails
    * [KARAF-5016] - Possible NPE while running "log:tail" in Karaf console
    * [KARAF-5031] - Subshell doesn't show in prompt
    * [KARAF-5051] - Command "shell wrapper:install" fails
    * [KARAF-5073] - OpenSSHGeneratorFileKeyProvider is unable to write SSH keys
    * [KARAF-5078] - Shell crash
    * [KARAF-5079] - Log:tail does not print messages steadily
    * [KARAF-5089] - GuardingEventHook may stop filtering listeners if one of the bundles is not valid
    * [KARAF-5091] - log:get does not show correct level
    * [KARAF-5094] - Remove -server option in Karaf scripts
    * [KARAF-5096] - Karaf 4.1.1 Console Issues Over SSH (PuTTY)
    * [KARAF-5103] - Quick start fails at the step "feature:install camel-spring"
    * [KARAF-5105] - Issue with bin/shell command in karaf 4.1.1
    * [KARAF-5106] - karaf-maven-plugin hangs the build (probably when having cyclic deps in the features def)
    * [KARAF-5109] - endorsed and ext directories are not set properly when using instance start
    * [KARAF-5115] - Error while installing cxf
    * [KARAF-5116] - Defining karaf.log.console as a log4j2 log level causes exceptions
    * [KARAF-5119] - log:tail on OSX does not display updates without user input and exits shell on ctrl + c
    * [KARAF-5120] - etc/org.apache.karaf.shell.cfg is "raw", all comments are lost in the distribution
    * [KARAF-5121] - blueprint created by jms:create is not correct
    * [KARAF-5123] - Executing feature:repo-remove can leave karaf in an invalid state
    * [KARAF-5124] - NPE when location information is included in console logging pattern
    * [KARAF-5128] - Upgrade to aries.proxy 1.1.1
    * [KARAF-5134] - Instance org.apache.karaf.features.cfg refers to 4.1.1-SNAPSHOT
    * [KARAF-5138] - CTRL-D on a connected instance exits from the root one
    * [KARAF-5143] - Command cannot be executed via SSH when property "karaf.shell.init.script" (etc/system.properties) has its default value
    * [KARAF-5144] - java.lang.RuntimeException: Command name evaluates to null: $.jline.terminal
    * [KARAF-5147] - Upgrade to pax-web-6.0.4
    * [KARAF-5165] - Custom Distributions: Pax-Web gets installed twice
    * [KARAF-5167] - Instance etc folder is not sync automatically
    * [KARAF-5171] - Upgrade to ServiceMix Specs 2.9.0
    * [KARAF-5174] - Uninstalling feature using liquibase-slf4j crashes karaf
    * [KARAF-5176] - Fix support for characters entered while executing a command
    * [KARAF-5179] - Setting the karaf.restart.jvm property to true causes system halt commands to behave as reboots
    * [KARAF-5181] - NPE while running "threads --tree" command from console
    * [KARAF-5182] - Console command log:list returns "null"
    * [KARAF-5184] - ClassLoader leak when org.apache.karaf.shell.core bundle is refreshed
    * [KARAF-5196] - Strongly consider removing -XX:+UnsyncloadClass from start scripts
    * [KARAF-5197] - Features deployed from a KAR file do not respect the feature's install setting
    * [KARAF-5206] - Karaf doesn't start after not clean reboot, because stored PID corresponds to running process
    * [KARAF-5207] - Features 1.4 namespace not supported by the features deployer
    * [KARAF-5211] - NPE in StoredWiringResolver if BundleEvent.UNRESOLVED handled before BundleEvent.RESOLVED event
    * [KARAF-5216] - Exiting karaf shell, mess the bash shell
    * [KARAF-5218] - bin/client exists when typing CTRL-C
    * [KARAF-5221] - karaf-maven-plugin's pidsToExtract handled incorrectly
    * [KARAF-5223] - "Error in initialization script" messages printed to the main console when clients connect through ssh
    * [KARAF-5234] - Update BUILDING file to reference Java 8
    * [KARAF-5247] - java.lang.InterruptedException after logout command in shell
    * [KARAF-5255] - Upgrade to pax-web-6.0.6
    * [KARAF-5259] - Duplicate log entries displayed when using log:tail
    * [KARAF-5260] - log:tail default should start at the end of the file
    * [KARAF-5267] - Karaf does not work correctly after log:tail
    * [KARAF-5276] - Do not use right prompt by default
    * [KARAF-5279] - InterruptedException when updating the shell.core bundle

** Dependency upgrade
    * [KARAF-4921] - Upgrade to pax-logging 1.10.0
    * [KARAF-5085] - Upgrade to Aries JPA 2.6.1
    * [KARAF-5087] - Upgrade to Spring 4.3.7.RELEASE
    * [KARAF-5090] - Update equinox to 3.11.3
    * [KARAF-5112] - Upgrade to jansi 1.16
    * [KARAF-5113] - Upgrade to jline 3.3.0
    * [KARAF-5114] - Upgrade to gogo 1.0.6
    * [KARAF-5149] - Upgrade to JNA 4.4.0
    * [KARAF-5150] - Upgrade to Aries Blueprint Core 1.8.1
    * [KARAF-5151] - Upgrade to Aries Transaction Manager 1.3.3
    * [KARAF-5152] - Upgrade to commons-compress 1.14
    * [KARAF-5153] - Upgrade to Felix BundleRepository 2.0.10
    * [KARAF-5154] - Upgrade to Felix Framework 5.6.4
    * [KARAF-5155] - Upgrade to Felix HttpLite 0.1.6
    * [KARAF-5157] - Upgrade to Felix Resolver 1.14.0
    * [KARAF-5158] - Upgrade to Felix SCR 2.0.10
    * [KARAF-5159] - Upgrade to Felix WebConsole 4.3.4
    * [KARAF-5160] - Upgrade to Equinox Region 1.2.101.v20150831-1342
    * [KARAF-5214] - Upgrade to Pax Logging 1.10.1
    * [KARAF-5231] - Upgrade to jline 3.3.1
    * [KARAF-5248] - Upgrade to blueprint-core 1.8.2
    * [KARAF-5249] - Upgrade to blueprint spring 0.4.0
    * [KARAF-5253] - Update pax-jdbc to 1.1.0
    * [KARAF-5256] - Upgrade to Felix SCR 2.0.12
    * [KARAF-5257] - Upgrade to sshd 1.6.0
    * [KARAF-5258] - Upgrade to Pax Exam 4.11.0
    * [KARAF-5278] - Update to felix framework 5.6.6
    * [KARAF-5281] - Upgrade to Spring 4.3.10.RELEASE
    * [KARAF-5289] - Upgrade to jline 3.4.0

** Improvement
    * [KARAF-3825] - Add ability to shutdown Karaf with a disabled shutdown port
    * [KARAF-4748] - Make Felix Resolver Threads configurable
    * [KARAF-4973] - Refactoring of features extension
    * [KARAF-5075] - Use the JDK provided StandardEmitterMBean
    * [KARAF-5081] - Fix problem with resource extraction from kar files
    * [KARAF-5102] - org.ops4j.pax.logging.cfg contains non-ASCII character
    * [KARAF-5104] - karaf:run should support a features set
    * [KARAF-5162] - Code can be simplified using new Map methods
    * [KARAF-5205] - Add -r/--refresh option to bundle:update command
    * [KARAF-5208] - Improve feature:install error message
    * [KARAF-5222] - Make possible to force the start of a karaf instance even if another one has been detected as running.
    * [KARAF-5241] - Improve RBAC logging for JMX
    * [KARAF-5243] - add -p option for bin/client
    * [KARAF-5266] - log commands should limit number of lines printed instead of number of log entries
    * [KARAF-5280] - Shell should not display the welcome message again when it is restarted
    * [KARAF-5282] - SyncopeLoginModule should support Syncope 2.x response format

** New Feature
    * [KARAF-5107] - Allow hooking into the feature installation process
    * [KARAF-5172] - Add simple LDAPBackingEngine

** Task
    * [KARAF-5148] - Replace use of org.json

		    Apache Karaf 4.1.1
		    ==================
 Apache Karaf 4.1.0 is a maintenance release on the 4.1.x series, bringing bug fixes and dependency
 updates.

 ChangeLog:
 ----------

** Bug
    * [KARAF-4210] - Unreleased Resource: Streams
    * [KARAF-4260] - Setting karaf.clean.all = true breaks service wrapper service script
    * [KARAF-4275] - StaticConfigurationAdmin and NPE with spring dm
    * [KARAF-4314] - karaf-maven-plugin issue when parsing feature xmls with <repository> entries that contain a newline and/or whitespaces
    * [KARAF-4439] - Prevent user authentication (shell & JMX) if he doesn't have role
    * [KARAF-4701] - Problem installing feature
    * [KARAF-4964] - Can't convert wrap URL used in shell commands
    * [KARAF-4968] - LDAPLoginModule does not correctly implement login method
    * [KARAF-4974] - service:list does not work if the service property ObjectClass returns an empty array
    * [KARAF-4978] - Features Subsystem leaks native memory
    * [KARAF-4979] - Features StaxParser and UrlLoader leak resources
    * [KARAF-4984] - Karaf exits when typing < or > in the shell
    * [KARAF-4990] - Exception caused by Jetty Websocket server
    * [KARAF-4993] - Unsecured access to gogo console over web
    * [KARAF-4995] - Disable LDAP cache by default
    * [KARAF-4996] - Missing packages in created instances 
    * [KARAF-4997] - The generator doesn't merge common entries between feature.xml and POM
    * [KARAF-4999] - Configfiles which are also POM dependencies end up duplicated
    * [KARAF-5002] - Upgrade to Felix Configadmin 1.8.14
    * [KARAF-5003] - Possible bugs in the source code
    * [KARAF-5006] - Upgrade to Hibernate 5.2.8.Final
    * [KARAF-5016] - Possible NPE while running "log:tail" in Karaf console
    * [KARAF-5018] - Missing files in distribution created by instance:create
    * [KARAF-5019] -  The source command doesn't work as before in karaf 4.1.0
    * [KARAF-5022] - The repo defines an unnecessary dependency to pax web
    * [KARAF-5026] - Set org.ops4j.pax.url.mvn.certificateCheck to true by default
    * [KARAF-5027] - Missing jansi lib in the CLASSPATH of the client/client.bat
    * [KARAF-5050] - Update maven prerequisite version to 3.0.5
    * [KARAF-5055] - Service wrapper shutdown timeout is not taken into account when Karaf's JVM is 'Stopped'
    * [KARAF-5059] - The terminal size is not set correctly when connecting through SSH
    * [KARAF-5067] - Add option not to register StandardManageableRegionDigraph
    * [KARAF-5070] - Uninstall of asm causes bad refresh cascades

** Dependency upgrade
    * [KARAF-4861] - Upgrade to sshd 1.4.0
    * [KARAF-4967] - Upgrade to Felix Resolver 1.12.0
    * [KARAF-4981] - Upgrade to Aries Blueprint Spring (and Extender) 0.3.0
    * [KARAF-4991] - Upgrade to Narayana 5.5.2.Final
    * [KARAF-5001] - Upgrade to Felix Framework 5.6.2
    * [KARAF-5009] - Upgrade to JNA 4.3.0
    * [KARAF-5010] - Upgrade to Aries JPA 2.6.0
    * [KARAF-5011] - Upgrade to Aries Transaction Blueprint 2.1.0
    * [KARAF-5012] - Upgrade to Felix Utils 1.9.0
    * [KARAF-5013] - Upgrade to Felix WebConsole 4.3.0, DS Plugin 2.0.6, Event Plugin 1.1.6
    * [KARAF-5021] - Downgrade to Jetty 9.3.14
    * [KARAF-5024] - Upgrade to JLine 3.2.0
    * [KARAF-5025] - Upgrade to Gogo 1.0.4
    * [KARAF-5032] - Upgrade to Pax Web 6.0.3
    * [KARAF-5035] - Upgrade pax web to 6.0.3
    * [KARAF-5037] - Upgrade to Aries Blueprint Core 1.8.0 and Aries Blueprint CM 1.1.0
    * [KARAF-5038] - Upgrade to maven-bundle-plugin 3.3.0
    * [KARAF-5039] - Upgrade to maven-assembly-plugin 3.0.0
    * [KARAF-5040] - Upgrade maven-compiler-plugin to 3.6.1
    * [KARAF-5041] - Upgrade to maven-dependency-plugin 3.0.0
    * [KARAF-5042] - Upgrade to maven-javadoc-plugin 2.10.4
    * [KARAF-5043] - Upgrade to maven-resources-plugin 3.0.2
    * [KARAF-5044] - Upgrade to maven-site-plugin 3.6
    * [KARAF-5045] - Upgrade to maven-source-plugin 3.0.1
    * [KARAF-5047] - Upgrade to ServiceMix depends-maven-plugin 1.4.0
    * [KARAF-5048] - Upgrade to build-helper-maven-plugin 3.0.0
    * [KARAF-5049] - Upgrade to exec-maven-plugin 1.6.0
    * [KARAF-5061] - Upgrade to ServiceMix Specs 2.8.0
    * [KARAF-5068] - Update pax-jdbc to 1.0.1

** Improvement
    * [KARAF-4973] - Refactoring of features extension
    * [KARAF-4980] - OSGi framework capabilities: add all services
    * [KARAF-4982] - Remove packages already provided by the assembly builder through libraries
    * [KARAF-4983] - Improve osgi.ee capabilities
    * [KARAF-4989] - Make LDAPLoginModule role.mapping option understand also fqdn
    * [KARAF-4998] - Specify dependency/prerequisite features
    * [KARAF-5017] - Random user used when running bin/client without -u option
    * [KARAF-5028] - Set java.io.tmpdir when using the service wrapper
    * [KARAF-5058] - Use ttop implementation from JLine

** New Feature
    * [KARAF-4514] - Add config:install command and MBean

** Task
    * [KARAF-5029] - ensure Karaf can build and pass all tests with JDK9 latest EA kit

		    Apache Karaf 4.1.0
		    ==================
 Apache Karaf 4.1.0 is the first release of the new 4.1.x serie.
 It brings lot of new features, like for instance: 
    - new shell console based on new jline 3.x with much better completion and behavior, 
    - improvements on the Karaf features system, from the resolver to the features repositories location
    - better Maven artifacts resolution
    - improved web container
    - and much more (take a look on the following changelog for details).

 ChangeLog:
 ----------

** Sub-task
    * [KARAF-4672] - Make karaf.shutdown.pid.file active by default
    * [KARAF-4673] - Rename karaf.shutdown.pid.file to karaf.pid.file

** Bug
    * [KARAF-571] - Karaf failed to startup due to maven resolution failure on specific cases.
    * [KARAF-1583] - karaf-maven-plugin ignores dependency on feature
    * [KARAF-1674] - Abnormal Timeout with multiple maven repositories in pax-url
    * [KARAF-2454] - Portable way to make custom shell commands (without inheriting from OsgiCommandSupport)
    * [KARAF-3400] - Enabling Java System Security and OSGi security leaves Karaf in unusable state
    * [KARAF-3744] - Configure the Felix logger correctly
    * [KARAF-3798] - FeaturesServiceImpl not threadsafe
    * [KARAF-3938] - NPE in Felix when installing camel-spark-rest feature
    * [KARAF-3974] - SSH :: impossible to connect through SSH after reboot clean
    * [KARAF-3983] - Failed to start openjpa bundle - javax.transaction.SystemException not found
    * [KARAF-3997] - Provide a RegionDigraphPersistence service
    * [KARAF-4072] - Karaf shell not working properly in windows
    * [KARAF-4100] - [karaf-3.0.x] Error resolving artifact of feature due to org.ops4j.pax.url.mvn.cfg not loaded yet
    * [KARAF-4105] - karaf-assembly fails when used Maven versions do not match derived OSGi versions
    * [KARAF-4129] - Installing a feature with a fragment that attaches to pax-logging-api fails
    * [KARAF-4192] - java.lang.ClassCastException in org.apache.karaf.features.internal.region.CandidateComparator
    * [KARAF-4207] - Poor Error Handling: Empty Catch Block
    * [KARAF-4267] - Remove derby config from windows karaf.bat
    * [KARAF-4270] - Shell-compat gets NPE trying to give help for combo of local and compat commands
    * [KARAF-4271] - Circular dependency not handled properly when a feature references itself directly
    * [KARAF-4272] - Karaf freezes when a circular dependency is introduced where a feature references itself over a chain of other features
    * [KARAF-4278] - clean not working
    * [KARAF-4280] - Feature config overwrites existing values
    * [KARAF-4282] - Wrapper set KARAF_DATA to null in the generated wrapper.conf file
    * [KARAF-4288] - karaf-maven-plugin doesn't pass custom settings.xml option onto pax-url-aether
    * [KARAF-4293] - SyncopeLoginModule could potentialy receive wrong message format
    * [KARAF-4294] - System scripts: Improove support for Solaris 10 init scripts
    * [KARAF-4299] - NoSuchElementException when clearing history
    * [KARAF-4307] - Archive Mojo does not set permissions properly in bin if usePathPrefix=false
    * [KARAF-4309] - Missing dependency javax.transaction.TransactionManager with transaction feature and activemq-camel
    * [KARAF-4311] - karaf maven plugin does not respect -s setting on maven
    * [KARAF-4313] - karaf-maven-plugin should set x bit on assembly
    * [KARAF-4319] - Completion does not work after semicolon
    * [KARAF-4322] - feature:repo-remove / cluster:feature-repo-remove -u flag has no effect
    * [KARAF-4328] - Align group definition in users.properties and keys.properties
    * [KARAF-4330] - Instance script doesn't return correct PID number if root instance is started two times
    * [KARAF-4335] - Scripts attribute in ClientMojo is null by default.
    * [KARAF-4348] - [RBAC] Wildcard PIDs chosen before more specific ones
    * [KARAF-4350] - Error while entering percent-symbol (%) between quotation marks in karaf-shell.
    * [KARAF-4357] - OBR R5 Resources do not have Presentation Names
    * [KARAF-4358] - Spring feature forces the wrong jta version. Can cause an error if it is installed before transaction
    * [KARAF-4365] - Document feature prerequiste option in feature descriptor
    * [KARAF-4371] - karaf shell scripts use "local" which is not a posix compliant
    * [KARAF-4372] - Content assist for paths does not work correctly
    * [KARAF-4373] - Karaf.bat script produces "The syntax of the command is incorrect" even if it is working properly
    * [KARAF-4374] - Problems in Karaf start script
    * [KARAF-4408] - FileCompleter does not work correctly
    * [KARAF-4411] - FeatureResolver: spring-dm-web feature installs Spring ver 3.1.4 and 3.2.14 at the same time
    * [KARAF-4413] - Can't start karaf on solaris 10
    * [KARAF-4416] - When reporting problems, the verify goal lists all bundles downloaded so far instead of just the ones from the failing feature
    * [KARAF-4420] - Ensure the maven plugin uses the same policy for service requirements
    * [KARAF-4423] - jaas: AutoEncryptionSupport can fail to shutdown
    * [KARAF-4428] - The bin/client script displays a badly formatted message from the AcceptAllServerKeyVerifier
    * [KARAF-4429] - JaxB marshalling failure due to endorsed java.lang.Exception 
    * [KARAF-4433] - Unable to connect to a child instance with instance:connect
    * [KARAF-4441] - Datasource config file created from feature.xml without instance suffix
    * [KARAF-4444] - service:get --help throws an error
    * [KARAF-4446] - Display error in the console. glued text
    * [KARAF-4447] - BUILDING (file) update distribution directory
    * [KARAF-4456] - Features repo without name breaks WebConsole features plugin
    * [KARAF-4475] - Performing status check will wipe cache if karaf.clean.all/karaf.clean.cache is set
    * [KARAF-4479] - Incorrect syntax in wrapper launch script karaf-service
    * [KARAF-4485] - The failover page is not up to date regarding lock package
    * [KARAF-4486] - LDAPOptions sets Context.SECURITY_AUTHENTICATION only if username is provided
    * [KARAF-4498] - Fileinstall polls too early on clean start
    * [KARAF-4499] - Can't start a crashed server on Windows
    * [KARAF-4500] - Refresh of the pax-logging-service cause log:* commands errors
    * [KARAF-4509] - Windows: if KARAF_DATA folder doesn't exist lets create it
    * [KARAF-4510] - Initial instance.properties file root location uses karaf.home instead of karaf.base
    * [KARAF-4511] - grep leaves around Ansi reset char sequence
    * [KARAF-4517] - bin/client ends with "Failed to get the session"
    * [KARAF-4519] - If an action does not have a @Command annotation, fallback to calling a description() method via reflection to get an Action's description
    * [KARAF-4527] - The number in "Display all n possibilities?" differs from the actual number of commands listed
    * [KARAF-4535] - OpenJPA 2.4.1 Missing dependencies: objectClass=javax.persistence.EntityManager
    * [KARAF-4547] - Embed resolver in features.core to avoid errors in bundle resolution when installing CXF as boot feature
    * [KARAF-4551] - wrapper:install on solaris lacks instructions to symlink scripts
    * [KARAF-4554] - Completion of the 'watch' command hangs Karaf
    * [KARAF-4564] -  Can't start karaf using symbolic link
    * [KARAF-4566] -  "karaf" script invokes /bin/sh but requires /bin/bash functions
    * [KARAF-4572] - NullPointer Exception when deploying EclipseLink model bundle
    * [KARAF-4575] - Re-add "install all" and "uninstall all" features repository options
    * [KARAF-4578] - Fileinstaller does not install bundle to root region after clean start
    * [KARAF-4581] - There is a typo in the description of the UserDeleteCommand
    * [KARAF-4588] - Features service lost install options
    * [KARAF-4591] - UnknownFormatConversionException when version range determination fails during feature creation
    * [KARAF-4596] - log:tail doesn't correct correctly with jline 3
    * [KARAF-4598] - Wrapper karaf-service should return 0 if the service is already running
    * [KARAF-4599] - KARAF-4564 impact: karaf startup command now only works when invoked from current directoy, no longer via absolute path
    * [KARAF-4606] - Align jetty and pax-jetty version
    * [KARAF-4607] - ldap connection pool not created when using ssl (ldaps)
    * [KARAF-4615] - Cannot get OpenJPA 2.4.1 to work due to JPA 2.1 being installed
    * [KARAF-4620] - ACL default configuration for feature:start/stop missing
    * [KARAF-4621] - Instance check doesn't check if pid exists
    * [KARAF-4626] - Feature build fails when version-ranges are enabled and a transitive dependency needs system properties
    * [KARAF-4628] - Can not start karaf on linux
    * [KARAF-4630] - Race condition in StreamPumper causes an infinite loop in it's deamon thread which prevents shell command from terminating
    * [KARAF-4636] - karaf.secured.command.compulsory.roles does not work
    * [KARAF-4641] - Possible problems with wrap jars in profiles
    * [KARAF-4642] - featuresBoot order is not honored
    * [KARAF-4648] - Feature service-wrapper creates invalid SERVICENAME-wrapper.conf file
    * [KARAF-4649] - AssemblyMojo : blacklistPolicy set to null if not defined in pom
    * [KARAF-4650] - Can't authenticate to Web Container in non root instance
    * [KARAF-4652] - ConcurrentModificationException and NullPointerException when starting Karaf
    * [KARAF-4657] - karaf-maven-plugin attach artifact multiple times
    * [KARAF-4659] - Ability to disable ldap listeners
    * [KARAF-4660] - Fix typo in the wrapper:install output message
    * [KARAF-4677] - Karaf branding doesn't work anymore using branding bundle
    * [KARAF-4680] - Karaf shell console (jline 3) leaves the terminal in "bad" state
    * [KARAF-4682] - avoid ConsoleSessionImpl thread running indefinitely 
    * [KARAF-4686] - ClassLoader leak with RmiRegistryFactory and sun.rmi.transport.tcp.TCPEndpoint
    * [KARAF-4687] - ClassLoader leak with java.lang.Exception and karaf.exception library
    * [KARAF-4688] - jre.properties should export all JavaFX packages for JRE 1.8+
    * [KARAF-4692] - Inconsistent behavior towards Bundle-ManifestVersion
    * [KARAF-4693] - shell:new issue with class wildcards
    * [KARAF-4695] - Unable to use http://karaf.apache.org/xmlns/shell/v1.0.0
    * [KARAF-4700] - Overrides and blacklist do not work by default and produce an exception
    * [KARAF-4703] - system-script: document bin/contrib
    * [KARAF-4704] - Unwanted variable interpolation in shell scripts
    * [KARAF-4705] - java.lang.ClassNotFoundException: org.jledit.ConcreteEditorFactory
    * [KARAF-4710] - The feature service may not finish properly and leave bundles in the wrong state during boot install
    * [KARAF-4712] - Karaf assembly builder does not handle versions correctly
    * [KARAF-4713] - Using client fails with Error executing 'stty -F /dev/pts/0 -a': stty: /dev/pts/0: Permission denied
    * [KARAF-4714] - shell (so also ssh) not working anymore on ARM
    * [KARAF-4717] - Update webconsole.css to the latest one
    * [KARAF-4719] - Aether cannot to resolve m2 repositories after adjustments in org.ops4j.pax.url.mvn.cfg
    * [KARAF-4720] - NamespaceHandler implementations hijack namespaces
    * [KARAF-4723] - Karaf sometimes will prioritize bundles in deploy folder at first start regardless of run level
    * [KARAF-4726] - Improve os-integration doc
    * [KARAF-4727] - SCR bundle state should not report SATISFIED components
    * [KARAF-4737] - Bundle start attribute in features XML is ignored
    * [KARAF-4739] - Rebooting Karaf can cause some bundles to not resolve anymore
    * [KARAF-4745] - MBean may loose all information when throwing exceptions
    * [KARAF-4752] - Support for logback configuration
    * [KARAF-4779] - Maven urls are updated at most once
    * [KARAF-4782] - Encoding is lost in ssh print streams
    * [KARAF-4784] - OsgiConfiguration for JAAS should fallback to default configuration
    * [KARAF-4796] - Possible NPE while installing features when using framework extensions
    * [KARAF-4802] - Auto Deploy does not release resource
    * [KARAF-4805] - configfiles are not copied to system directory
    * [KARAF-4806] - Some shell scripts include bashisms but use a /bin/sh shebang
    * [KARAF-4810] - karaf.bat / status.bat do not exit with a proper exit code
    * [KARAF-4813] - RMI should not listen to all hosts
    * [KARAF-4814] - Special character in stop script
    * [KARAF-4815] - karaf script fail to locate KARAF_HOME.
    * [KARAF-4820] - wrapper:install command does not use ---include and --env parameters
    * [KARAF-4827] - Cannot install feature depending on other 2+ levels of features with prerequisite="true"
    * [KARAF-4830] - Karaf does not start with staged features in etc/org.apache.karaf.features.cfg
    * [KARAF-4832] - Cannot enter karaf command over multi lines
    * [KARAF-4833] - Incorrect behaviour of executing commands over multi lines via source
    * [KARAF-4834] - Infinite loop if Exception occurs during the execution of karaf.shell.init.script
    * [KARAF-4836] - Incorrect behaviour of the auto-completion of file path in command export-bundles
    * [KARAF-4837] - Session#readLine should not append to history
    * [KARAF-4838] - The shell:source command does not forward Ctrl+C to the command being executed
    * [KARAF-4839] - Infinite System bundle restart on feature deployment
    * [KARAF-4842] - Karaf Maven Plugin builds features with invalid configuration
    * [KARAF-4843] - Updating factory configuration leads to new configuration instance
    * [KARAF-4844] - ERROR logged if the property featuresBoot contains pax-jetty in 2nd stage  
    * [KARAF-4845] - Cannot start karaf with JRE 9
    * [KARAF-4846] - Property karaf.etc must be a canoncial path
    * [KARAF-4847] - Cannot start feature pax-jetty with JDK 9
    * [KARAF-4852] - Minor issues with start script
    * [KARAF-4865] - Karaf startup no longer works on platforms without "readlink"
    * [KARAF-4867] - java.lang.NullPointerException during instance creation
    * [KARAF-4868] - Encoding problems in CLI with shell table output
    * [KARAF-4869] - Instance start failed.
    * [KARAF-4871] - LDAPLoginModule NPEs if no role filter is specified
    * [KARAF-4872] - Karaf build failed when assemby the minimal distribution
    * [KARAF-4875] - bundle:list should limit the table size to the terminal width
    * [KARAF-4876] - Allow an empty role.query for the JDBCLoginModule
    * [KARAF-4892] - Encode username in LDAPLoginModule to avoid "code" injection
    * [KARAF-4898] - Remove hibernate 3 support
    * [KARAF-4904] - instance:create should use next free ssh port
    * [KARAF-4905] - o.a.k.main.util.SimpleMavenResolver uses duplicate system repo
    * [KARAF-4907] - bin/status logging WARN every time
    * [KARAF-4926] - Command "shell wrapper:install" not working
    * [KARAF-4927] - NamespaceHandlers should return null for unknown namespaces
    * [KARAF-4931] - Static Profile generation fails if configfile element contains a placeholder
    * [KARAF-4933] - Resolve maven versions when downloading maven artifacts during assembly
    * [KARAF-4934] - Allow blacklisting repositories
    * [KARAF-4945] - ensure LDAPCache is cleared when jaas module bundle get reloaded
    * [KARAF-4949] - Karaf 4.0.8 doesn't work on Solaris 11
    * [KARAF-4951] - Incorrect Equals/HashCode implementation crashes Deployer
    * [KARAF-4959] - Log messages duplicated in log:tail
    * [KARAF-4960] - Karaf exits when typing "la |"
    * [KARAF-4963] - "Old" shell commands doesn't work anymore
    * [KARAF-4970] - Problem when restoring the wiring for bundles with attached fragments
    * [KARAF-4972] - Commands using the shell-compatibility layer appear twice in the completion proposal

** Dependency upgrade
    * [KARAF-4107] - Upgrade Json to version 20150729
    * [KARAF-4190] - Upgrade to pax-logging 1.9.1
    * [KARAF-4266] - Upgrade to Spring 4.2.4.RELEASE
    * [KARAF-4286] - Upgrade Felix Utils to version 1.8.2
    * [KARAF-4287] - Upgrade Felix Fileinstall to version 3.5.2
    * [KARAF-4289] - Upgrade to ServiceMix Specs 2.6.0
    * [KARAF-4292] - Upgrade Felix Eventadmin to version 1.4.6
    * [KARAF-4301] - Upgrade Hibernate Validator to version 5.2.3.Final
    * [KARAF-4343] - Upgrade to Xalan 2.7.2_3
    * [KARAF-4345] - Upgrade to Jolokia 1.3.3
    * [KARAF-4352] - Upgrade Hibernate Validator to version 5.2.4.Final
    * [KARAF-4353] - Upgrade to Pax URL 2.4.6
    * [KARAF-4359] - Update Openjpa to 2.4.1
    * [KARAF-4381] - Upgrade to maven-antrun-plugin 1.8
    * [KARAF-4382] - Upgrade to maven-assembly-plugin 2.6
    * [KARAF-4384] - Upgrade to maven-compiler-plugin 3.5.1
    * [KARAF-4385] - Upgrade to maven-dependency-plugin 2.10
    * [KARAF-4386] - Upgrade to maven-deploy-plugin 2.8.2
    * [KARAF-4387] - Upgrade to maven-eclipse-plugin 2.10
    * [KARAF-4388] - Upgrade to maven-enforcer-plugin 1.4.1
    * [KARAF-4389] - Upgrade to maven-gpg-plugin 1.6
    * [KARAF-4390] - Upgrade to maven-install-plugin 2.5.2
    * [KARAF-4391] - Upgrade to maven-jar-plugin 2.6
    * [KARAF-4392] - Upgrade to maven-javadoc-plugin 2.10.3
    * [KARAF-4393] - Upgrade to maven-jxr-plugin 2.5
    * [KARAF-4394] - Upgrade to maven-project-info-reports-plugin 2.9
    * [KARAF-4395] - Upgrade to maven-release-plugin 2.5.3
    * [KARAF-4396] - Upgrade to maven-resources-plugin 2.7
    * [KARAF-4397] - Upgrade to maven-site-plugin 3.5
    * [KARAF-4398] - Upgrade to maven-source-plugin 3.0.0
    * [KARAF-4399] - Upgrade to maven-surefire-plugin and maven-surefire-report-plugin 2.18.1
    * [KARAF-4400] - Upgrade to maven-war-plugin 2.6
    * [KARAF-4401] - Upgrade to depends-maven-plugin 1.3.1
    * [KARAF-4402] - Upgrade to build-helper-maven-plugin 1.10
    * [KARAF-4403] - Upgrade to exec-maven-plugin 1.4.0
    * [KARAF-4405] - Upgrade to Felix Framework 5.6.1
    * [KARAF-4409] - Upgrade to pax-jdbc 0.8.0
    * [KARAF-4410] - Upgrade to Aries JPA Container 1.0.4
    * [KARAF-4421] - Upgrade to JLine 2.14.x
    * [KARAF-4449] - Upgrade to Aries proxy-impl 1.0.5
    * [KARAF-4450] - Upgrade to Aries jmx-core 1.1.6
    * [KARAF-4451] - Upgrade to Aries blueprint-core 1.6.0
    * [KARAF-4452] - Upgrade to Aries blueprint-cm 1.0.8
    * [KARAF-4459] - Upgrade Cglib to version 3.2.1
    * [KARAF-4461] - Upgrade to sshd 1.2.0
    * [KARAF-4469] - Upgrade to Felix FileInstall 3.5.4
    * [KARAF-4472] - Upgrade to Felix BundleRepository 2.0.8
    * [KARAF-4476] - Upgrade to Aries Blueprint Core 1.6.1
    * [KARAF-4477] - Upgrade to Pax URL 2.4.7
    * [KARAF-4492] - Upgrade Apache Commons-compress to version 1.11
    * [KARAF-4497] - Upgrade to Apache ServiceMix Specs 2.7.0
    * [KARAF-4504] - Upgrade Pax Exam to version 4.9.0
    * [KARAF-4512] - Upgrade to Aries Blueprint Core 1.6.2
    * [KARAF-4563] - Upgrade Cglib to version 3.2.2
    * [KARAF-4576] - Upgrade to Narayana 5.3.3.Final
    * [KARAF-4583] - Upgrade to equinox 3.10.101.v20150820-1432
    * [KARAF-4584] - Update Exec Maven Plugin to version 1.5.0
    * [KARAF-4592] - Cleanup Aries JDBC Transaction 2.1.2 from the pom.xml
    * [KARAF-4616] - Upgrade to Felix SCR 2.0.6, SCR Compat 1.0.4, SCR Annotations 1.11.0
    * [KARAF-4622] - Upgrade to Spring 3.2.17
    * [KARAF-4623] - Upgrade to Spring 4.1.9.RELEASE
    * [KARAF-4675] - Upgrade to Narayana 5.3.4.Final
    * [KARAF-4716] - Upgrade to Aries Blueprint Core 1.7.0 and Aries Blueprint CM 1.0.9
    * [KARAF-4731] - Upgrade Felix Framework 5.6.0 and Resolver 1.10.0
    * [KARAF-4743] - Upgrade Cglib to version 3.2.4
    * [KARAF-4744] - Upgrade to Narayana 5.3.5.Final
    * [KARAF-4746] - Upgrade to Pax-Web 4.4.0
    * [KARAF-4751] - Upgrade to jansi 1.14
    * [KARAF-4758] - Upgrade to Aries Transaction Manager 1.3.1
    * [KARAF-4760] - Upgrade to Felix FileInstall 3.5.6
    * [KARAF-4762] - Upgrade to PaxUrl 2.5.1
    * [KARAF-4783] - Upgrade to Pax CDI 1.0.0.RC2
    * [KARAF-4786] - Upgrade to Aries Blueprint Core 1.7.1
    * [KARAF-4788] - Upgrade to Aries JXM Core 1.1.7
    * [KARAF-4789] - Upgrade to Pax Exam 4.9.2
    * [KARAF-4790] - Upgrade to felix framework security 2.6.0
    * [KARAF-4797] - Upgrade to Aries Util 1.1.3
    * [KARAF-4798] - Upgrade to JLine 3.0.1
    * [KARAF-4807] - Upgrade Hibernate Validator to version 5.3.1.Final
    * [KARAF-4812] - Upgrade to Felix ConfigAdmin 1.8.12
    * [KARAF-4816] - Upgrade to Eclipselink 2.6.4
    * [KARAF-4823] - Upgrade Hibernate Validator to version 5.3.2.Final
    * [KARAF-4848] - Upgrade Hibernate Validator to version 5.3.3.Final
    * [KARAF-4855] - Upgrade to commons-compress 1.12
    * [KARAF-4856] - Upgrade to maven-bundle-plugin 3.2.0
    * [KARAF-4857] - Upgrade to Felix EventAdmin 1.4.8
    * [KARAF-4858] - Upgrade to Felix Resolver 1.10.1
    * [KARAF-4859] - Upgrade to Felix Utils 1.8.4
    * [KARAF-4860] - Upgrade to Felix WebConsole 4.2.16
    * [KARAF-4862] - Upgrade to jline 3.1.0
    * [KARAF-4886] - Upgrade Hibernate Validator to version 5.3.4.Final
    * [KARAF-4888] - Upgrade to Pax-Web 6.0.0
    * [KARAF-4890] - Upgrade to Spring 4.2.8.RELEASE
    * [KARAF-4891] - Provide Spring 4.3.5.RELEASE feature
    * [KARAF-4903] - Upgrade to Narayana 5.5.0.Final
    * [KARAF-4913] - Upgrade to Pax-Web 6.0.1 
    * [KARAF-4918] - Upgrade to Felix FileInstall 3.5.8
    * [KARAF-4919] - Upgrade to Aries Proxy 1.0.6
    * [KARAF-4920] - Upgrade to Aries Transaction Manager 1.3.2
    * [KARAF-4922] - Upgrade to Jolokia 1.3.5
    * [KARAF-4923] - Upgrade to Eclipse Equinox 3.11.2 (Neon.2)
    * [KARAF-4924] - Upgrade to commons-compress 1.13
    * [KARAF-4925] - Upgrade to ant 1.9.7_1
    * [KARAF-4944] - Upgrade to Pax Web 6.0.2
    * [KARAF-4946] - Upgrade to Spring 4.2.9.RELEASE
    * [KARAF-4947] - Upgrade to Spring 3.2.18.RELEASE
    * [KARAF-4948] - Upgrade to Felix SCR 2.0.8/SCR Annotations 1.12.0/DS WebConsole plugin 2.0.4
    * [KARAF-4954] - Upgrade to Aries JPA 2.5.0
    * [KARAF-4955] - Upgrade to Pax JDBC 1.0.0
    * [KARAF-4965] - Upgrade to Pax Exam 4.10.0
    * [KARAF-4971] - Upgrade to jline 3.1.3

** Documentation
    * [KARAF-4056] - Developer-guide/extending: replace mvn archetype:create by generate
    * [KARAF-4147] - karaf-maven-plugin: Add description of configuration property "libraries"
    * [KARAF-4415] - karaf-maven-plugin - The feature validate goal is missing
    * [KARAF-4590] - Document environment variable reference from configuration files

** Improvement
    * [KARAF-129] - Support for upgrading from one version of a feature to another version of the same feature
    * [KARAF-884] - karaf-maven-plugin should more closely map to POMs
    * [KARAF-2971] - there is no MBean operation for easily get bundle status
    * [KARAF-3551] - Extend Karaf Instance interface with getRmiRegistryHost, getRmiServerHost, getSshHost
    * [KARAF-3622] - Enhance SSH configuration mechanism
    * [KARAF-3779] - Be able to define the copied location of the kar files
    * [KARAF-3859] - bin/client script should go in interactive way to prompt the password when the "-u" option is used
    * [KARAF-3871] - Offer bundle:diag (without args) output via JMX
    * [KARAF-3952] - Be able to provide full ObjectName to registerMBean()
    * [KARAF-4060] - Throw an error when removing a repo containing installed features
    * [KARAF-4084] - Only one flag could be used in list command
    * [KARAF-4091] - Support restarting the Karaf JVM and updating it's lib directory
    * [KARAF-4187] - Make karaf-maven-plugin @threadSafe
    * [KARAF-4273] - Add -o (--only-matching) option to grep command
    * [KARAF-4340] - System scripts: improve system scripts templates
    * [KARAF-4346] - Support array of values with etc/*.config files
    * [KARAF-4351] - [RBAC] Optimize access to JMXSecurityMBean.canInvoke(Map)
    * [KARAF-4362] - Improve the maven assembly goal so that it can run at package phase instead of install phase
    * [KARAF-4366] - system scripts : fallback to generic init script for unknown os 
    * [KARAF-4376] - Make grep return the list of results rather than null
    * [KARAF-4412] - system scripts : first line in solaris smf template should not be empty
    * [KARAF-4414] - Add LogAuditLoginModule and replace FileAuditLoginModule by default
    * [KARAF-4422] - Ability to show wiring beten features or all resources after a resolution
    * [KARAF-4442] - Improve slightly misleading message after SNAPSHOT feature installation
    * [KARAF-4454] - Resolve scr:list conflict between gogo and Karaf
    * [KARAF-4487] - LDAPLoginModule and GSSAPI
    * [KARAF-4489] - Introduce a property in etc/org.apache.karaf.features.cfg to decide if <config/> should create cfg file or not
    * [KARAF-4505] - Add dataSourceType option to jdbc:ds-create command.
    * [KARAF-4520] - Add  DigestPasswordLoginModule so PasswordDigest can work with Karaf JAAS realm
    * [KARAF-4523] - JMXSecurityMBean bulk canInvoke should be robust even if bulkQuery contains duplicate operations
    * [KARAF-4524] - SCTP class from JDK missing in jre.properties
    * [KARAF-4526] - System scripts : Solaris SMS sevice not started if path contains spaces
    * [KARAF-4533] - Adds Kerberos support
    * [KARAF-4557] - Add config:property-get and getProperty operation on the ConfigMBean
    * [KARAF-4569] - OSGi framework is not shut-down gracefully on SIGTERM
    * [KARAF-4571] - karaf-maven-plugin should respect version ranges when generating features repos
    * [KARAF-4577] - Use ServiceComponentRuntime api and provide a BundleStateService for DS
    * [KARAF-4589] - Add bundle location in BundleMBean
    * [KARAF-4595] - Log when shell startup is suppressed
    * [KARAF-4635] - Upgrade Pax JDBC to version 0.9.0
    * [KARAF-4637] - LDAPLoginModule - add "trim usernames" option
    * [KARAF-4638] - Improve shell table output by using unicode box drawing characters
    * [KARAF-4639] - Add job control in the console
    * [KARAF-4643] - Fix the feature repositories default version to RELEASE / karaf.version
    * [KARAF-4644] - Pin Build to CXF 3.1.7
    * [KARAF-4651] - Update tooling to use wagon-http to 2.10
    * [KARAF-4658] - Allow defaultTargetFile to be overridden for any kind of packaging
    * [KARAF-4666] - Have karaf write pid file by default
    * [KARAF-4735] - Add option to append command history instead of overwriting it by client consoles
    * [KARAF-4764] - Provide ability to configure RmiRegistryFactory create and locate options
    * [KARAF-4770] - Update etc/org.apache.karaf.management.cfg
    * [KARAF-4773] - Leverage smart download retries from pax-url-aether 2.5.0
    * [KARAF-4787] - Remove the generate goal and add the verify goal from the feature packaging
    * [KARAF-4795] - Expose timeout related options for pax-url-aether 2.5.0
    * [KARAF-4801] - Remove some requirements for the verify goal
    * [KARAF-4821] - enable to configure the external moduli-url for the sshd server
    * [KARAF-4828] - Support OFF log level in log:set console command
    * [KARAF-4851] - Remove config files from the default distributions
    * [KARAF-4853] - Option to prevent execution as root
    * [KARAF-4854] - Enable archetype.test.skip on fastinstall profile
    * [KARAF-4863] - Trim down the number of configuration files in apache-karaf-minimal and static framework
    * [KARAF-4866] - detect JVM vendor and ensure correct saaj factories is picked up when it's IBM JDK
    * [KARAF-4870] - Store the wiring in the output file when using "feature:install --store"
    * [KARAF-4879] - The log:get command should display all loggers by default
    * [KARAF-4901] - Make warning for "Unable to create a system terminal" less verbose
    * [KARAF-4928] - Allow specifying a resource type when blacklisting
    * [KARAF-4932] - Remove blueprint compat and blueprint annotations bundles
    * [KARAF-4956] - Update pax jdbc to 1.0.0
    * [KARAF-4958] - bundle:list -s is too wide
    * [KARAF-4961] - Legacy features should be in the default org.apache.karaf.features.repos.cfg file

** New Feature
    * [KARAF-397] - Allow completion of non Karaf based osgi commands
    * [KARAF-3749] - Add support for the Narayana Transaction Manager
    * [KARAF-4157] - Provide system script to start Karaf without service wrapper
    * [KARAF-4189] - Switch to log4j v2 by default
    * [KARAF-4263] - Require JDK 1.8
    * [KARAF-4277] - System scripts: add option to configure the executable to use to start/stop karaf
    * [KARAF-4281] - System scripts: provide Systemd templates to manage Karaf child instances
    * [KARAF-4327] - Features for spring-security 3.2.x and 4.0.x
    * [KARAF-4354] - Provide a bin/run script
    * [KARAF-4370] - Provide commands for eventadmin
    * [KARAF-4460] - New feature for Aries Blueprint Spring support
    * [KARAF-4462] - Allow control of attachment of generated assembly artifacts
    * [KARAF-4493] - Add the option to specify customized branding for SSH
    * [KARAF-4570] - Upgrade to jline 3
    * [KARAF-4624] - Create Karaf component to create Activemq connection factories
    * [KARAF-4653] - enable to build and run Karaf with JAVA9
    * [KARAF-4775] - Implement a thread top command
    * [KARAF-4781] - Support auto loading multiple initialization scripts
    * [KARAF-4824] - Add Option to bundle:update which doesn't rewrite MANIFEST file
    * [KARAF-4841] - Add support for Felix httplite
    * [KARAF-4897] - Add an option to simplify bundle dependencies
    * [KARAF-4902] - Create config from metatype defaults
    * [KARAF-4957] - Move old features into enterprise-legacy and spring-legacy modules

** Question
    * [KARAF-4654] - Karaf shell command

** Task
    * [KARAF-4258] - Cleanup deprecated and unused properties
    * [KARAF-4349] - Use the same approach of KARAF-4330 in karaf.bat script
    * [KARAF-4363] - ssh:sshd command shows default values twice
    * [KARAF-4377] - Refer to hibernate-validator feature repository instead of using the current one 
    * [KARAF-4379] - Upgrade to Narayana 5.3.1.Final
    * [KARAF-4406] - Use javax.servlet-api 3.1.0 instead of Geronimo servlet spec
    * [KARAF-4464] - Upgrade to Spring 4.2.5
    * [KARAF-4465] - Upgrade to Narayana 5.3.2.Final
    * [KARAF-4709] - use new JVM options with recent java9 kit
    * [KARAF-4740] - Upgrade to pax-logging 1.9.0
    * [KARAF-4774] - Remove gemini-blueprint support
    * [KARAF-4780] - Migrate SCR demos to the standard OSGi annotations
    * [KARAF-4835] - Add content assist for paths in shell:source command
    * [KARAF-4864] - Change the default Karaf client log Level to 0
    * [KARAF-4900] - karaf java9 build is broken since 9-ea+148

** Test
    * [KARAF-1897] - Use dynamic port allocation of integration tests
    * [KARAF-4597] - Avoid npe and exception logging in main module tests
    * [KARAF-4646] - LdapPoolingTest fails with IBM JDK
    * [KARAF-4681] - System.setOut(null) in GrepTest cause other tests failure which need use System.out
    * [KARAF-4761] - EnterpriseFeaturesTest installTransaction130Feature test fails during full build
    * [KARAF-4962] - Karaf itests are flaky on Jenkins

** Wish
    * [KARAF-3853] - Use configured Java path to startup wrapper

                    Apache Karaf 4.0.8
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing bug fixes.

 ChangeLog:
 ----------

** Sub-task
    * [KARAF-4672] - Make karaf.shutdown.pid.file active by default
    * [KARAF-4673] - Rename karaf.shutdown.pid.file to karaf.pid.file

** Bug
    * [KARAF-3400] - Enabling Java System Security and OSGi security leaves Karaf in unusable state
    * [KARAF-4192] - java.lang.ClassCastException in org.apache.karaf.features.internal.region.CandidateComparator
    * [KARAF-4498] - Fileinstall polls too early on clean start
    * [KARAF-4517] - bin/client ends with "Failed to get the session"
    * [KARAF-4564] -  Can't start karaf using symbolic link
    * [KARAF-4578] - Fileinstaller does not install bundle to root region after clean start
    * [KARAF-4695] - Unable to use http://karaf.apache.org/xmlns/shell/v1.0.0
    * [KARAF-4714] - shell (so also ssh) not working anymore on ARM
    * [KARAF-4720] - NamespaceHandler implementations hijack namespaces
    * [KARAF-4723] - Karaf sometimes will prioritize bundles in deploy folder at first start regardless of run level
    * [KARAF-4726] - Improve os-integration doc
    * [KARAF-4737] - Bundle start attribute in features XML is ignored
    * [KARAF-4805] - configfiles are not copied to system directory
    * [KARAF-4806] - Some shell scripts include bashisms but use a /bin/sh shebang
    * [KARAF-4810] - karaf.bat / status.bat do not exit with a proper exit code
    * [KARAF-4814] - Special character in stop script
    * [KARAF-4815] - karaf script fail to locate KARAF_HOME.
    * [KARAF-4830] - Karaf does not start with staged features in etc/org.apache.karaf.features.cfg
    * [KARAF-4839] - Infinite System bundle restart on feature deployment
    * [KARAF-4842] - Karaf Maven Plugin builds features with invalid configuration
    * [KARAF-4849] - Corrupt EventAdmin file in etc
    * [KARAF-4865] - Karaf startup no longer works on platforms without "readlink"
    * [KARAF-4871] - LDAPLoginModule NPEs if no role filter is specified
    * [KARAF-4876] - Allow an empty role.query for the JDBCLoginModule
    * [KARAF-4892] - Encode username in LDAPLoginModule to avoid "code" injection

** Dependency upgrade
    * [KARAF-4405] - Upgrade to Felix Framework 5.6.1
    * [KARAF-4623] - Upgrade to Spring 4.1.9.RELEASE
    * [KARAF-4716] - Upgrade to Aries Blueprint Core 1.7.0 and Aries Blueprint CM 1.0.9
    * [KARAF-4731] - Upgrade Felix Framework 5.6.0 and Resolver 1.10.0
    * [KARAF-4743] - Upgrade Cglib to version 3.2.4
    * [KARAF-4751] - Upgrade to jansi 1.14
    * [KARAF-4758] - Upgrade to Aries Transaction Manager 1.3.1
    * [KARAF-4760] - Upgrade to Felix FileInstall 3.5.6
    * [KARAF-4762] - Upgrade to PaxUrl 2.5.1
    * [KARAF-4786] - Upgrade to Aries Blueprint Core 1.7.1
    * [KARAF-4788] - Upgrade to Aries JXM Core 1.1.7
    * [KARAF-4790] - Upgrade to felix framework security 2.6.0
    * [KARAF-4812] - Upgrade to Felix ConfigAdmin 1.8.12
    * [KARAF-4816] - Upgrade to Eclipselink 2.6.4
    * [KARAF-4855] - Upgrade to commons-compress 1.12
    * [KARAF-4856] - Upgrade to maven-bundle-plugin 3.2.0
    * [KARAF-4857] - Upgrade to Felix EventAdmin 1.4.8
    * [KARAF-4858] - Upgrade to Felix Resolver 1.10.1
    * [KARAF-4859] - Upgrade to Felix Utils 1.8.4
    * [KARAF-4860] - Upgrade to Felix WebConsole 4.2.16
    * [KARAF-4890] - Upgrade to Spring 4.2.8.RELEASE

** Improvement
    * [KARAF-3622] - Enhance SSH configuration mechanism
    * [KARAF-4487] - LDAPLoginModule and GSSAPI
    * [KARAF-4548] - Avoid extensive spifly logging
    * [KARAF-4666] - Have karaf write pid file by default
    * [KARAF-4764] - Provide ability to configure RmiRegistryFactory create and locate options
    * [KARAF-4770] - Update etc/org.apache.karaf.management.cfg
    * [KARAF-4773] - Leverage smart download retries from pax-url-aether 2.5.0
    * [KARAF-4795] - Expose timeout related options for pax-url-aether 2.5.0
    * [KARAF-4821] - enable to configure the external moduli-url for the sshd server
    * [KARAF-4853] - Option to prevent execution as root
    * [KARAF-4854] - Enable archetype.test.skip on fastinstall profile
    * [KARAF-4866] - detect JVM vendor and ensure correct saaj factories is picked up when it's IBM JDK

** Task
    * [KARAF-4864] - Change the default Karaf client log Level to 0

** Test
    * [KARAF-4761] - EnterpriseFeaturesTest installTransaction130Feature test fails during full build


                    Apache Karaf 4.0.7
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing bug fixes.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3997] - Provide a RegionDigraphPersistence service
    * [KARAF-4411] - FeatureResolver: spring-dm-web feature installs Spring ver 3.1.4 and 3.2.14 at the same time
    * [KARAF-4677] - Karaf branding doesn't work anymore using branding bundle
    * [KARAF-4686] - ClassLoader leak with RmiRegistryFactory and sun.rmi.transport.tcp.TCPEndpoint
    * [KARAF-4687] - ClassLoader leak with java.lang.Exception and karaf.exception library
    * [KARAF-4688] - jre.properties should export all JavaFX packages for JRE 1.8+
    * [KARAF-4693] - shell:new issue with class wildcards
    * [KARAF-4696] - Upgrade to Pax-Web 4.3.0
    * [KARAF-4703] - system-script: document bin/contrib
    * [KARAF-4710] - The feature service may not finish properly and leave bundles in the wrong state during boot install
    * [KARAF-4712] - Karaf assembly builder does not handle versions correctly
    * [KARAF-4717] - Update webconsole.css to the latest one

** Improvement
    * [KARAF-4520] - Add  DigestPasswordLoginModule so PasswordDigest can work with Karaf JAAS realm

** Test
    * [KARAF-4681] - System.setOut(null) in GrepTest cause other tests failure which need use System.out

                    Apache Karaf 4.0.6
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-1583] - karaf-maven-plugin ignores dependency on feature
    * [KARAF-3798] - FeaturesServiceImpl not threadsafe
    * [KARAF-3938] - NPE in Felix when installing camel-spark-rest feature
    * [KARAF-4158] - Unexpected behavior on first startup
    * [KARAF-4202] - Password Management: Hardcoded Password
    * [KARAF-4207] - Poor Error Handling: Empty Catch Block
    * [KARAF-4322] - feature:repo-remove / cluster:feature-repo-remove -u flag has no effect
    * [KARAF-4372] - Content assist for paths does not work correctly
    * [KARAF-4408] - FileCompleter does not work correctly
    * [KARAF-4444] - service:get --help throws an error
    * [KARAF-4499] - Can't start a crashed server on Windows
    * [KARAF-4500] - Refresh of the pax-logging-service cause log:* commands errors
    * [KARAF-4502] - REGRESSION: using OpenJDK on CentOS 7 causes bin/client to fail with "Unable to negotiate key exchange for kex algorithms"
    * [KARAF-4509] - Windows: if KARAF_DATA folder doesn't exist lets create it
    * [KARAF-4510] - Initial instance.properties file root location uses karaf.home instead of karaf.base
    * [KARAF-4511] - grep leaves around Ansi reset char sequence
    * [KARAF-4519] - If an action does not have a @Command annotation, fallback to calling a description() method via reflection to get an Action's description
    * [KARAF-4527] - The number in "Display all n possibilities?" differs from the actual number of commands listed
    * [KARAF-4547] - Embed resolver in features.core to avoid errors in bundle resolution when installing CXF as boot feature
    * [KARAF-4551] - wrapper:install on solaris lacks instructions to symlink scripts
    * [KARAF-4554] - Completion of the 'watch' command hangs Karaf
    * [KARAF-4564] -  Can't start karaf using symbolic link
    * [KARAF-4566] -  "karaf" script invokes /bin/sh but requires /bin/bash functions
    * [KARAF-4575] - Re-add "install all" and "uninstall all" features repository options
    * [KARAF-4581] - There is a typo in the description of the UserDeleteCommand
    * [KARAF-4588] - Features service lost install options
    * [KARAF-4591] - UnknownFormatConversionException when version range determination fails during feature creation
    * [KARAF-4598] - Wrapper karaf-service should return 0 if the service is already running
    * [KARAF-4599] - KARAF-4564 impact: karaf startup command now only works when invoked from current directoy, no longer via absolute path
    * [KARAF-4606] - Align jetty and pax-jetty version
    * [KARAF-4607] - ldap connection pool not created when using ssl (ldaps)
    * [KARAF-4615] - Cannot get OpenJPA 2.4.1 to work due to JPA 2.1 being installed
    * [KARAF-4620] - ACL default configuration for feature:start/stop missing
    * [KARAF-4621] - Instance check doesn't check if pid exists
    * [KARAF-4626] - Feature build fails when version-ranges are enabled and a transitive dependency needs system properties
    * [KARAF-4630] - Race condition in StreamPumper causes an infinite loop in it's deamon thread which prevents shell command from terminating
    * [KARAF-4632] - Default serviceRequirements should handle 1.4.0 schema
    * [KARAF-4636] - karaf.secured.command.compulsory.roles does not work
    * [KARAF-4641] - Possible problems with wrap jars in profiles
    * [KARAF-4642] - featuresBoot order is not honored
    * [KARAF-4648] - Feature service-wrapper creates invalid SERVICENAME-wrapper.conf file
    * [KARAF-4649] - AssemblyMojo : blacklistPolicy set to null if not defined in pom
    * [KARAF-4650] - Can't authenticate to Web Container in non root instance
    * [KARAF-4652] - ConcurrentModificationException and NullPointerException when starting Karaf
    * [KARAF-4657] - karaf-maven-plugin attach artifact multiple times
    * [KARAF-4659] - Ability to disable ldap listeners
    * [KARAF-4660] - Fix typo in the wrapper:install output message

** Dependency upgrade
    * [KARAF-4504] - Upgrade Pax Exam to version 4.9.0
    * [KARAF-4508] - Upgrade to Pax Exam 4.9.1
    * [KARAF-4512] - Upgrade to Aries Blueprint Core 1.6.2
    * [KARAF-4555] - Update to jline 2.14.2
    * [KARAF-4563] - Upgrade Cglib to version 3.2.2
    * [KARAF-4583] - Upgrade to equinox 3.10.101.v20150820-1432
    * [KARAF-4584] - Update Exec Maven Plugin to version 1.5.0
    * [KARAF-4592] - Upgrade to Aries JDBC Transaction 2.1.2
    * [KARAF-4616] - Upgrade to Felix SCR 2.0.6, SCR Compat 1.0.4, SCR Annotations 1.11.0
    * [KARAF-4622] - Upgrade to Spring 3.2.17
    * [KARAF-4656] - Upgrade to Pax Web 4.2.8

** Documentation
    * [KARAF-4590] - Document environment variable reference from configuration files

** Improvement
    * [KARAF-884] - karaf-maven-plugin should more closely map to POMs
    * [KARAF-3859] - bin/client script should go in interactive way to prompt the password when the "-u" option is used
    * [KARAF-4084] - Only one flag could be used in list command
    * [KARAF-4442] - Improve slightly misleading message after SNAPSHOT feature installation
    * [KARAF-4505] - Add dataSourceType option to jdbc:ds-create command.
    * [KARAF-4520] - Add  DigestPasswordLoginModule so PasswordDigest can work with Karaf JAAS realm
    * [KARAF-4523] - JMXSecurityMBean bulk canInvoke should be robust even if bulkQuery contains duplicate operations
    * [KARAF-4524] - SCTP class from JDK missing in jre.properties
    * [KARAF-4526] - System scripts : Solaris SMS sevice not started if path contains spaces
    * [KARAF-4533] - Adds Kerberos support
    * [KARAF-4548] - Avoid extensive spifly logging
    * [KARAF-4557] - Add config:property-get and getProperty operation on the ConfigMBean
    * [KARAF-4569] - OSGi framework is not shut-down gracefully on SIGTERM
    * [KARAF-4571] - karaf-maven-plugin should respect version ranges when generating features repos
    * [KARAF-4589] - Add bundle location in BundleMBean
    * [KARAF-4595] - Log when shell startup is suppressed
    * [KARAF-4635] - Upgrade Pax JDBC to version 0.9.0
    * [KARAF-4637] - LDAPLoginModule - add "trim usernames" option
    * [KARAF-4644] - Pin Build to CXF 3.1.7
    * [KARAF-4651] - Update tooling to use wagon-http to 2.10
    * [KARAF-4658] - Allow defaultTargetFile to be overridden for any kind of packaging

** New Feature
    * [KARAF-4188] - Add support for Systemd's watchdog
    * [KARAF-4462] - Allow control of attachment of generated assembly artifacts
    * [KARAF-4493] - Add the option to specify customized branding for SSH
    * [KARAF-4624] - Create Karaf component to create Activemq connection factories

** Question
    * [KARAF-4654] - Karaf shell command

** Test
    * [KARAF-4597] - Avoid npe and exception logging in main module tests
    * [KARAF-4646] - LdapPoolingTest fails with IBM JDK

                    Apache Karaf 4.0.5
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3983] - Failed to start openjpa bundle - javax.transaction.SystemException not found
    * [KARAF-4072] - Karaf shell not working properly in windows
    * [KARAF-4129] - Installing a feature with a fragment that attaches to pax-logging-api fails
    * [KARAF-4267] - Remove derby config from windows karaf.bat
    * [KARAF-4270] - Shell-compat gets NPE trying to give help for combo of local and compat commands
    * [KARAF-4278] - clean not working
    * [KARAF-4280] - Feature config overwrites existing values
    * [KARAF-4282] - Wrapper set KARAF_DATA to null in the generated wrapper.conf file
    * [KARAF-4288] - karaf-maven-plugin doesn't pass custom settings.xml option onto pax-url-aether
    * [KARAF-4293] - SyncopeLoginModule could potentialy receive wrong message format
    * [KARAF-4294] - System scripts: Improove support for Solaris 10 init scripts
    * [KARAF-4299] - NoSuchElementException when clearing history
    * [KARAF-4307] - Archive Mojo does not set permissions properly in bin if usePathPrefix=false
    * [KARAF-4309] - Missing dependency javax.transaction.TransactionManager with transaction feature and activemq-camel
    * [KARAF-4311] - karaf maven plugin does not respect -s setting on maven
    * [KARAF-4313] - karaf-maven-plugin should set x bit on assembly
    * [KARAF-4319] - Completion does not work after semicolon
    * [KARAF-4328] - Align group definition in users.properties and keys.properties
    * [KARAF-4330] - Instance script doesn't return correct PID number if root instance is started two times
    * [KARAF-4335] - Scripts attribute in ClientMojo is null by default.
    * [KARAF-4348] - [RBAC] Wildcard PIDs chosen before more specific ones
    * [KARAF-4357] - OBR R5 Resources do not have Presentation Names
    * [KARAF-4358] - Spring feature forces the wrong jta version. Can cause an error if it is installed before transaction
    * [KARAF-4365] - Document feature prerequiste option in feature descriptor
    * [KARAF-4371] - karaf shell scripts use "local" which is not a posix compliant
    * [KARAF-4373] - Karaf.bat script produces "The syntax of the command is incorrect" even if it is working properly
    * [KARAF-4374] - Problems in Karaf start script
    * [KARAF-4413] - Can't start karaf on solaris 10
    * [KARAF-4416] - When reporting problems, the verify goal lists all bundles downloaded so far instead of just the ones from the failing feature
    * [KARAF-4420] - Ensure the maven plugin uses the same policy for service requirements
    * [KARAF-4423] - jaas: AutoEncryptionSupport can fail to shutdown
    * [KARAF-4428] - The bin/client script displays a badly formatted message from the AcceptAllServerKeyVerifier
    * [KARAF-4429] - JaxB marshalling failure due to endorsed java.lang.Exception 
    * [KARAF-4433] - Unable to connect to a child instance with instance:connect
    * [KARAF-4441] - Datasource config file created from feature.xml without instance suffix
    * [KARAF-4446] - Display error in the console. glued text
    * [KARAF-4447] - BUILDING (file) update distribution directory
    * [KARAF-4456] - Features repo without name breaks WebConsole features plugin
    * [KARAF-4475] - Performing status check will wipe cache if karaf.clean.all/karaf.clean.cache is set
    * [KARAF-4479] - Incorrect syntax in wrapper launch script karaf-service
    * [KARAF-4485] - The failover page is not up to date regarding lock package

** Dependency upgrade
    * [KARAF-4266] - Upgrade to Spring 4.2.4.RELEASE
    * [KARAF-4286] - Upgrade Felix Utils to version 1.8.2
    * [KARAF-4287] - Upgrade Felix Fileinstall to version 3.5.2
    * [KARAF-4289] - Upgrade to ServiceMix Specs 2.6.0
    * [KARAF-4292] - Upgrade Felix Eventadmin to version 1.4.6
    * [KARAF-4343] - Upgrade to Xalan 2.7.2_3
    * [KARAF-4345] - Upgrade to Jolokia 1.3.3
    * [KARAF-4353] - Upgrade to Pax URL 2.4.6
    * [KARAF-4359] - Update Openjpa to 2.4.1
    * [KARAF-4381] - Upgrade to maven-antrun-plugin 1.8
    * [KARAF-4382] - Upgrade to maven-assembly-plugin 2.6
    * [KARAF-4384] - Upgrade to maven-compiler-plugin 3.5.1
    * [KARAF-4385] - Upgrade to maven-dependency-plugin 2.10
    * [KARAF-4386] - Upgrade to maven-deploy-plugin 2.8.2
    * [KARAF-4387] - Upgrade to maven-eclipse-plugin 2.10
    * [KARAF-4388] - Upgrade to maven-enforcer-plugin 1.4.1
    * [KARAF-4389] - Upgrade to maven-gpg-plugin 1.6
    * [KARAF-4390] - Upgrade to maven-install-plugin 2.5.2
    * [KARAF-4391] - Upgrade to maven-jar-plugin 2.6
    * [KARAF-4393] - Upgrade to maven-jxr-plugin 2.5
    * [KARAF-4394] - Upgrade to maven-project-info-reports-plugin 2.9
    * [KARAF-4395] - Upgrade to maven-release-plugin 2.5.3
    * [KARAF-4396] - Upgrade to maven-resources-plugin 2.7
    * [KARAF-4397] - Upgrade to maven-site-plugin 3.5
    * [KARAF-4398] - Upgrade to maven-source-plugin 3.0.0
    * [KARAF-4399] - Upgrade to maven-surefire-plugin and maven-surefire-report-plugin 2.18.1
    * [KARAF-4400] - Upgrade to maven-war-plugin 2.6
    * [KARAF-4401] - Upgrade to depends-maven-plugin 1.3.1
    * [KARAF-4402] - Upgrade to build-helper-maven-plugin 1.10
    * [KARAF-4403] - Upgrade to exec-maven-plugin 1.4.0
    * [KARAF-4410] - Upgrade to Aries JPA Container 1.0.4
    * [KARAF-4421] - Upgrade to JLine 2.14.x
    * [KARAF-4449] - Upgrade to Aries proxy-impl 1.0.5
    * [KARAF-4450] - Upgrade to Aries jmx-core 1.1.6
    * [KARAF-4451] - Upgrade to Aries blueprint-core 1.6.0
    * [KARAF-4452] - Upgrade to Aries blueprint-cm 1.0.8
    * [KARAF-4459] - Upgrade Cglib to version 3.2.1
    * [KARAF-4469] - Upgrade to Felix FileInstall 3.5.4
    * [KARAF-4470] - Upgrade to Pax Web 4.2.5
    * [KARAF-4471] - Upgrade to Pax JDBC 0.8.0
    * [KARAF-4472] - Upgrade to Felix BundleRepository 2.0.8
    * [KARAF-4473] - Upgrade to Pax Web 4.2.6
    * [KARAF-4476] - Upgrade to Aries Blueprint Core 1.6.1
    * [KARAF-4477] - Upgrade to Pax URL 2.4.7
    * [KARAF-4492] - Upgrade Apache Commons-compress to version 1.11
    * [KARAF-4497] - Upgrade to Apache ServiceMix Specs 2.7.0

** Documentation
    * [KARAF-4056] - Developer-guide/extending: replace mvn archetype:create by generate
    * [KARAF-4147] - karaf-maven-plugin: Add description of configuration property "libraries"
    * [KARAF-4180] - Document overrides configuration
    * [KARAF-4415] - karaf-maven-plugin - The feature validate goal is missing

** Improvement
    * [KARAF-129] - Support for upgrading from one version of a feature to another version of the same feature
    * [KARAF-2971] - there is no MBean operation for easily get bundle status
    * [KARAF-3551] - Extend Karaf Instance interface with getRmiRegistryHost, getRmiServerHost, getSshHost
    * [KARAF-3871] - Offer bundle:diag (without args) output via JMX
    * [KARAF-4187] - Make karaf-maven-plugin @threadSafe
    * [KARAF-4340] - System scripts: improve system scripts templates
    * [KARAF-4351] - [RBAC] Optimize access to JMXSecurityMBean.canInvoke(Map)
    * [KARAF-4366] - system scripts : fallback to generic init script for unknown os 
    * [KARAF-4412] - system scripts : first line in solaris smf template should not be empty
    * [KARAF-4414] - Add LogAuditLoginModule and replace FileAuditLoginModule by default
    * [KARAF-4454] - Resolve scr:list conflict between gogo and Karaf
    * [KARAF-4489] - Introduce a property in etc/org.apache.karaf.features.cfg to decide if <config/> should create cfg file or not

** New Feature
    * [KARAF-4157] - Provide system script to start Karaf without service wrapper
    * [KARAF-4277] - System scripts: add option to configure the executable to use to start/stop karaf
    * [KARAF-4281] - System scripts: provide Systemd templates to manage Karaf child instances

** Task
    * [KARAF-4258] - Cleanup deprecated and unused properties
    * [KARAF-4349] - Use the same approach of KARAF-4330 in karaf.bat script
    * [KARAF-4363] - ssh:sshd command shows default values twice
    * [KARAF-4406] - Use javax.servlet-api 3.1.0 instead of Geronimo servlet spec
    * [KARAF-4464] - Upgrade to Spring 4.2.5


** Test
    * [KARAF-1897] - Use dynamic port allocation of integration tests

** Wish
    * [KARAF-3853] - Use configured Java path to startup wrapper

                    Apache Karaf 4.0.4
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3303] - "keyStoreAvailabilityTimeout" is treated as boolean in JMX configuration
    * [KARAF-3812] - Exception caused by featuresRepositories property being set incorrectly
    * [KARAF-3918] - An installed blueprint.xml has always been updated and restarted when install another unrelated feature
    * [KARAF-3985] - ArrayIndexOutOfBoundsException is thrown after configure http/https and limit access from localhost,127.0.0.1
    * [KARAF-4031] - Unresolved repository inside the feature causes Karaf freezing during startup
    * [KARAF-4083] - Reference to the invalid repository in feature file breaks commands
    * [KARAF-4118] - Command service declaration doesn't work
    * [KARAF-4119] - la outputs results twice
    * [KARAF-4132] - assembly archetype should remove runtime scope to the standard features XML
    * [KARAF-4134] - karaf-maven-plugin mixes up prerequisities
    * [KARAF-4138] - wrapper:install doesn't work on Windows due to path issues in karaf.home and karaf.data
    * [KARAF-4139] - Bundles with activation policy lazy remain in status starting when run with equinox
    * [KARAF-4142] - Allow for relative URLs from a Cave repository
    * [KARAF-4145] - KAR is created with defect maven metadata
    * [KARAF-4150] - bin/status fails if KARAF_DEBUG is set
    * [KARAF-4152] - Resolution of relative URLs from OBR repositories not working when there are multiple URLs
    * [KARAF-4155] - Fall to feature start-level
    * [KARAF-4159] - FeatureResolver: Wrong dependencies installed
    * [KARAF-4169] - Blueprint creates unnecessary prototype bean instances
    * [KARAF-4184] - ArgumentCompleter has incorrect check for enum type
    * [KARAF-4218] - JAAS boot classes are not marked serializable
    * [KARAF-4226] - Web Console is missing package exports for bundleinfo and i18n
    * [KARAF-4241] - Karaf clean doesn't work if KARAF_DATA and KARAF_BASE point to same dir
    * [KARAF-4246] - sshd 0.14.0 breaks client timeout
    * [KARAF-4247] - Issues with LDAP caching
    * [KARAF-4252] - scr feature doesn't install the WebConsole DS plugin
    * [KARAF-4254] - NPE when building karaf-assembly target with installAllFeaturesByDefault=false

** Dependency upgrade
    * [KARAF-4117] - Upgrade to Pax Web 4.2.4
    * [KARAF-4126] - Upgrade Cglib bundle to version 3.1_1
    * [KARAF-4135] - Upgrade commons-collections to version 3.2.2
    * [KARAF-4136] - Upgrade Maven-bundle-plugin to version 3.0.1
    * [KARAF-4149] - Upgrade to Derby 10.12.1.1
    * [KARAF-4151] - Upgrade Felix Coordinator to version 1.0.2
    * [KARAF-4168] - Upgrade to Pax Exam 4.7.0
    * [KARAF-4182] - Upgrade to Spring 4.2.3.RELEASE
    * [KARAF-4185] - Upgrade Pax-url to version 2.4.4
    * [KARAF-4196] - Upgrade Cglib to version 3.2.0
    * [KARAF-4197] - Upgrade to blueprint.core-1.5.0, jpa-2.3.0, transaction.blueprint-2.1.0
    * [KARAF-4220] - Upgrade to eclipselink 2.6.1
    * [KARAF-4227] - Upgrade to Pax-exam 4.8.0
    * [KARAF-4228] - Upgrade to Aries Subsystem 2.0.8
    * [KARAF-4230] - Upgrade to Aries Blueprint Core 1.5.0
    * [KARAF-4233] - Upgrade to Aries JPA Container 1.0.3
    * [KARAF-4238] - Upgrade to Pax URL 2.4.5
    * [KARAF-4239] - Upgrade to Pax-Logging 1.8.5

** Documentation
    * [KARAF-3679] - Change current documentation from Scalate to Asciidoc

** Improvement
    * [KARAF-2966] - scr:details - Sort the properties so its easier for humans to read
    * [KARAF-3100] - Add Option To Create Config Files For Feature Configs Instead Of Importing Directly Into Config Admin
    * [KARAF-3278] - Display warning message when trying to install an already installed bundle
    * [KARAF-3390] - Karaf client should allow passing arguments to command
    * [KARAF-3880] - Provide a standard feature just wrapping all boot features from the standard distribution
    * [KARAF-3982] - Be able to change standard files during distribution assembly
    * [KARAF-4082] - .kar file generated by karaf-maven-plugin does not contain all jars (no offline support)
    * [KARAF-4102] - It should be possible to change the primary feature name to be other than the artifact id
    * [KARAF-4130] - Use OSGi Resource repositories in features XML
    * [KARAF-4166] - Add karaf.lock.slave.block property to prevent a slave instance to start
    * [KARAF-4193] - Add option to dev:dump-create command (and MBean) to exclude heap and thread dumps
    * [KARAF-4198] - Support m2e incremental build in karaf-services-plugin
    * [KARAF-4242] - Add apache artemis to repo-add shorthand list
    * [KARAF-4243] - Add apache ignite to feature repo:add shorthand

** New Feature
    * [KARAF-222] - Provide karaf:run, karaf:deploy, karaf:client Maven goals
    * [KARAF-545] - Config file creation and update from features descriptor
    * [KARAF-3259] - Add support for executing of OSGi commands with karaf-maven-plugin
    * [KARAF-4240] - Provide Asciidoc command help printer

** Task
    * [KARAF-4127] - Missing license in Karaf-maven-plugin test-rename-main-feature file 

** Wish
    * [KARAF-2963] - osgi:headers - Add option to not display uses:= in exported headers as its too verbose and useless information
    * [KARAF-4146] - Add option to show only package name in Package:imports and package:exports commands 

                    Apache Karaf 4.0.3
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-3443] - Deployed KAR files may be installed in the wrong order.
    * [KARAF-3812] - Exception caused by featuresRepositories property being set incorrectly
    * [KARAF-3879] - jdbc feature should installs pax-jdbc feature
    * [KARAF-3961] - Reference to generated featuresRepositories is invalid on Windows
    * [KARAF-3972] - can't genrate feature with prerequisite using karaf-maven-plugin
    * [KARAF-3974] - SSH :: impossible to connect through SSH after reboot clean
    * [KARAF-3994] - karaf-maven-plugin is ignoring the feature version and installing all available versions of given feature in the repository.  
    * [KARAF-4003] - Karaf jenkins build fails at apache-karaf-minimal as it can not find framework kar
    * [KARAF-4011] - karaf-maven-plugin:features-add-to-repository NPE with blueprint:file: URL
    * [KARAF-4024] - role.policy "group" ceased to function
    * [KARAF-4026] - Karaf wrapper:install produces a SPARC32 binary on Solaris x86_64
    * [KARAF-4029] - Karaf maven plugin assembly goal requires project artifact to be installed first
    * [KARAF-4058] - ssh:sshd command isn't available
    * [KARAF-4062] - Karaf client does now work after installing BouncyCastle
    * [KARAF-4065] - Standard distribution doesn't ship the ACL files in the etc folder
    * [KARAF-4066] - Features command bundle should recover if FeatureService unavailable initially
    * [KARAF-4068] - Memory leak in SessionFactoryImpl class
    * [KARAF-4069] - ConsoleSessionImpl does not close the session in function close()
    * [KARAF-4070] - Unable to install deployed features for bundle
    * [KARAF-4076] - Support Windows 10 for Bundle-NativeCode
    * [KARAF-4079] - Karaf maven plugin doesn't support overriding configuration files
    * [KARAF-4080] - Karaf 3.0.5 demo POMs contain a few invalid path references
    * [KARAF-4081] - Karaf-Command 'diag' does not provide full information for Spring-DM bundles
    * [KARAF-4086] - NPE in karaf-maven-plugin features-export-meta-data when there is no Manifest

** Dependency upgrade
    * [KARAF-4077] - Update to blueprint core 1.4.5
    * [KARAF-4085] - Upgrade to Felix Framework 5.4.0
    * [KARAF-4087] - Upgrade to Aries Subsystem 2.0.4
    * [KARAF-4088] - Upgrade to Felix Resolver 1.8.0
    * [KARAF-4089] - Upgrade to Felix WebConsole 4.2.14
    * [KARAF-4090] - Upgrade to Aries Subsystem 2.0.6
    * [KARAF-4096] - Upgrade Jolokia to version 1.3.2
    * [KARAF-4097] - Upgrade to Spring 4.2.2.RELEASE
    * [KARAF-4098] - Upgrade to Pax Web 4.2.3

** Documentation
    * [KARAF-3923] - Karaf opens RMI port even when not using the management feature

                    Apache Karaf 4.0.2
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-1159] - Region support should be part of karaf-features-1.1.0.xsd
    * [KARAF-3638] - karaf-maven-plugin:features-add-to-repository fails with NPE
    * [KARAF-3885] - Memory leak when use interactive client shell
    * [KARAF-3893] - Unable to start offline container
    * [KARAF-3945] - Don't try and set permgen settings in Java 8
    * [KARAF-3946] - LDAP role mapping too sensitive to extra whitespace
    * [KARAF-3956] - should also add xalan into the endorse folder of distributions
    * [KARAF-3964] - cygpath call in "start" to convert CLASSPATH should first verify it's set
    * [KARAF-3965] - Calling Ctrl+D in Karaf console, when karaf asks if it is necessary to dispay all console commands, causes console not responding forever
    * [KARAF-3968] - The assembly mojo does not respect --offline
    * [KARAF-3969] - assembly goal has no way to set javase version
    * [KARAF-3971] - log:tail and pressing Ctrl-D freezes karaf shell console
    * [KARAF-3975] - Wrong start-level for eclipselink adapter in eclipselink feature
    * [KARAF-3996] - bin/karaf does not set ulimit if MAX_FD_LIMIT="unlimited"
    * [KARAF-3998] - org.apache.felix.coordinator missing in transaction 1.3.0 feature
    * [KARAF-3999] - transaction feature is missing coordinator bundle
    * [KARAF-4002] - Karaf build on jenkins always fail at karaf-maven-plugin
    * [KARAF-4005] - Different locations for KARAF_HOME and KARAF_BASE
    * [KARAF-4006] - karaf-maven-plugin does not seem to use the local repository
    * [KARAF-4012] - On MacOSX, java_home check should be on 1.8
    * [KARAF-4015] - Verification of the deployer feature fails
    * [KARAF-4020] - karaf-maven-plugin:archive doesn't respect an empty prefixPath
    * [KARAF-4022] - avoid the generated bundle file name too long in startup.properties
    * [KARAF-4028] - karaf-wrapper-main.jar generated by wrapper is corrupted
    * [KARAF-4030] - Doclint for Javadoc fails on JDK 8
    * [KARAF-4032] - Karaf maven plugin assembly goal does not use repositories declared in pom.xml
    * [KARAF-4055] - karaf-maven-plugin: feature XML with a @ character

** Dependency upgrade
    * [KARAF-3943] - Upgrade to Aries Util 1.1.1
    * [KARAF-3947] - Upgrade to Aries Blueprint Core 1.4.4 & Aries Blueprint CM 1.0.7
    * [KARAF-3948] - Upgrade to commons-compress 1.10
    * [KARAF-4009] - Upgrade to Pax URL 2.4.3
    * [KARAF-4019] - Upgrade jpa feature to 2.2.0
    * [KARAF-4023] - Upgrade to Pax Logging 1.8.4
    * [KARAF-4025] - Update scr to 2.0.0
    * [KARAF-4033] - Upgrade to Aries JMX 1.1.5
    * [KARAF-4034] - Upgrade to Aries JPA 2.2.0
    * [KARAF-4035] - Upgrade to Aries Subsystem 2.0.2
    * [KARAF-4036] - Upgrade to Aries Transaction Blueprint 2.0.0
    * [KARAF-4037] - Upgrade to maven-bundle-plugin 3.0.0
    * [KARAF-4038] - Upgrade to Felix BundleRepository 2.0.6
    * [KARAF-4039] - Upgrade to Felix ConfigAdmin 1.8.8
    * [KARAF-4040] - Upgrade to Felix EventAdmin 1.4.4
    * [KARAF-4041] - Upgrade to Felix Framework/Main 5.2.0
    * [KARAF-4042] - Upgrade to Felix Metatype 1.1.2
    * [KARAF-4043] - Upgrade to Felix Resolver 1.6.0
    * [KARAF-4044] - Upgrade to Felix SCR 2.0.2
    * [KARAF-4045] - Upgrade to Felix WebConsole 4.2.12
    * [KARAF-4046] - Upgrade to Felix WebConsole Plugins DS 2.0.2
    * [KARAF-4047] - Upgrade to Felix WebConsole Plugins Event 1.1.4
    * [KARAF-4049] - Upgrade to Easymock 3.4
    * [KARAF-4050] - Upgrade to Pax Exam 4.6.0
    * [KARAF-4051] - Upgrade to Pax Web 4.2.2
    * [KARAF-4052] - Upgrade to Pax Tinybundles 2.1.1
    * [KARAF-4053] - Upgrade to ASM 5.0.4

** Documentation
    * [KARAF-3936] - Stray TODO in production docs
    * [KARAF-3990] - Missing documentation for debugging environment variables

** Improvement
    * [KARAF-3262] - Being able to use ${karaf.etc} in feature <configfile/> element
    * [KARAF-3858] - Add systemd support in the wrapper
    * [KARAF-3882] - karaf should permit alternative host key formats
    * [KARAF-3954] - Convey terminal size changes through SSH
    * [KARAF-3962] - Client can't use properties defined in custom.properties
    * [KARAF-3963] - Some slight improvements to the doc for the feature generation mojo.
    * [KARAF-3978] - enable specify different shell.init.script env for remote shell in "exec" and "shell" mode
    * [KARAF-4007] - Use official spec bundle for jdbc
    * [KARAF-4010] - Add feature repo for eclipsesource jaxrs
    * [KARAF-4018] - Add transaction.blueprint 2.0.0 to transaction feature

** New Feature
    * [KARAF-3950] - Add feature:export-bundles command

                    Apache Karaf 4.0.1
                    ==================

 This is an update patch for Apache Karaf 4.0.x, containing many bug fixes, dependency updates, and improvements. New feature highlights include: Providing Spring 4.2.0.RELEASE, OpenJPA 2.4.0, and JTA 1.2 features. Important dependency upgrades include: Spring 4.1.7.RELEASE, Spring 3.2.14.RELEASE, transaction.blueprint 1.1.1, and Pax-Web 4.2.0. It is recommended that users update their deployment after reviewing the changelog below.

 ChangeLog:
 ----------

** Bug
    * [KARAF-969] - Feature installer should not accept different features with equal names
    * [KARAF-3362] - Version for Jetty in standard features is wrong.
    * [KARAF-3758] - Uninstalling activemq-blueprint may cause the shell to be refreshed
    * [KARAF-3805] - Distribution contains absolute path instead of mvn URL
    * [KARAF-3811] - Exception thrown when including the feature "feature" in Maven karaf:assembly goal
    * [KARAF-3813] - InvalidPathException thrown on karaf:assembly Maven goal
    * [KARAF-3819] - bundle:list command is not able to be executed from client script
    * [KARAF-3821] - dev:dump-create doesn't include feature.txt anymore
    * [KARAF-3830] - karaf-services-maven-plugin ignores certain files
    * [KARAF-3833] - Project org.apache.karaf.jpa:hibernate does not have name set in pom.xml
    * [KARAF-3837] - The installation of the activemq feature is not stable wrt to the resolver
    * [KARAF-3843] - Get rid of blueprint dependency in the web console
    * [KARAF-3846] - Version number not correct for the subsystems feature
    * [KARAF-3850] - Better support for extension fragments
    * [KARAF-3886] - should escape specify characters in ROLE names
    * [KARAF-3888] - Karaf refreshes a lot of unrelated bundles during feature installation
    * [KARAF-3894] - Still class cast exception for LazyLocalResourceImpl => LocalResourceImpl
    * [KARAF-3896] - KAR Deployer not using karaf.data property, hardcoded to "data"
    * [KARAF-3899] - PID file for child instances not getting written when dir has spaces
    * [KARAF-3906] - NPE when doing log:clear and log:display and log full=true
    * [KARAF-3908] - shell:new does not work for most classes
    * [KARAF-3910] - Client.sh references nonexistant mina-core jar
    * [KARAF-3911] - bin/client and ssh doesn't work in interactive mode (can't type only one character)
    * [KARAF-3917] - bundle:list does not work from gogo webconsole.
    * [KARAF-3926] - Several transaction manager versions are installed
    * [KARAF-3929] - Syncope LoginModule throws a StringIndexOutOfBoundsException if the user has no roles
    * [KARAF-3930] - When starting the gogo shell in the webconsole the user is not fully authenticated
    * [KARAF-3931] - Typed characters in webconsole do not show

** Dependency upgrade
    * [KARAF-3914] - Upgrade to Spring 4.1.7.RELEASE
    * [KARAF-3915] - Upgrade to Spring 3.2.14.RELEASE
    * [KARAF-3924] - Upgrade to transaction.blueprint 1.1.1
    * [KARAF-3932] - Upgrade to Pax-Web 4.2.0

** Improvement
    * [KARAF-2862] - Reenable pax-cdi integration tests
    * [KARAF-3823] - introduce karaf.secured.command.compulsory.roles system property
    * [KARAF-3860] - fix [KARAF-3373] Log lower level root cause exception in LDAPLoginModule.doLogin()
    * [KARAF-3891] - Add JTA 1.2 features
    * [KARAF-3912] - Make default client log level configurable
    * [KARAF-3919] - Upgrade to JPA 2.1.0
    * [KARAF-3934] - Update Apache Directory + make use of random port generation

** New Feature
    * [KARAF-3913] - Provide Spring 4.2.0.RELEASE feature
    * [KARAF-3920] - Provide OpenJPA 2.4.0 feature
    * [KARAF-3927] - karaf-maven-plugin:assembly goal should chmod bin shell scripts a+x
    * [KARAF-3928] - karaf-maven-plugin:archive goal should support a pathPrefix config setting to control the prefix added to each entry in the archives that are produced.

                    Apache Karaf 4.0.0
                    ==================

 Apache Karaf 4.0.0 is the first production ready version of the new 4.0.0 branch.
 It's a major step forward, including a complete new features resolver, a large set of new features, improvements, and bug fixes.

 For more information, please see the below changelog:

 ChangeLog:
 ----------

** Bug
    * [KARAF-3181|https://issues.apache.org/jira/browse/KARAF-3181] - framework-security feature doesn't install
    * [KARAF-3236|https://issues.apache.org/jira/browse/KARAF-3236] - Unable to use character @ in Karaf console
    * [KARAF-3520|https://issues.apache.org/jira/browse/KARAF-3520] - FeatureService fails to install feature in case of missing capability
    * [KARAF-3648|https://issues.apache.org/jira/browse/KARAF-3648] - should zero out instance pid in instance.properties when we shutdown an instance from shell
    * [KARAF-3663|https://issues.apache.org/jira/browse/KARAF-3663] - Unable to deploy KAR
    * [KARAF-3669|https://issues.apache.org/jira/browse/KARAF-3669] - Missing files in standard distribution
    * [KARAF-3711|https://issues.apache.org/jira/browse/KARAF-3711] - LDAP login module doesn't handle case where CN, OU, DC case doesn't match
    * [KARAF-3740|https://issues.apache.org/jira/browse/KARAF-3740] - NPE on container startup
    * [KARAF-3757|https://issues.apache.org/jira/browse/KARAF-3757] - Unable to resolve org.apache.activemq.activemq-blueprint while installing feature activemq-blueprint
    * [KARAF-3764|https://issues.apache.org/jira/browse/KARAF-3764] - Features Service Refresh
    * [KARAF-3765|https://issues.apache.org/jira/browse/KARAF-3765] - Eventadmin logs warnings about wrong values
    * [KARAF-3767|https://issues.apache.org/jira/browse/KARAF-3767] - Generic JDBC datasource should use 1 instead of WHEN_EXHAUSTED_BLOCK
    * [KARAF-3768|https://issues.apache.org/jira/browse/KARAF-3768] - Unable to start child instance
    * [KARAF-3769|https://issues.apache.org/jira/browse/KARAF-3769] - NPE in resolver when installing CXF and ActiveMQ
    * [KARAF-3783|https://issues.apache.org/jira/browse/KARAF-3783] - NPE in karaf-maven-plugin features-export-meta-data
    * [KARAF-3784|https://issues.apache.org/jira/browse/KARAF-3784] - Kar hotdeployment doesn't work
    * [KARAF-3791|https://issues.apache.org/jira/browse/KARAF-3791] - Unable to connect to an instance with instance:connect command
    * [KARAF-3793|https://issues.apache.org/jira/browse/KARAF-3793] - WebConsole installs but it's not actually available

** Dependency upgrade
    * [KARAF-3561|https://issues.apache.org/jira/browse/KARAF-3561] - Upgrade to slf4j 1.7.12
    * [KARAF-3707|https://issues.apache.org/jira/browse/KARAF-3707] - Upgrade to Felix Framework 5.0.1/Resolver 1.4.0
    * [KARAF-3792|https://issues.apache.org/jira/browse/KARAF-3792] - Upgrade to Pax Web 4.1.3
    * [KARAF-3794|https://issues.apache.org/jira/browse/KARAF-3794] - Upgrade to equinox 3.10.2.v20150203-1939
    * [KARAF-3801|https://issues.apache.org/jira/browse/KARAF-3801] - Upgrade to Pax Web 4.1.4

** Improvement
    * [KARAF-1113|https://issues.apache.org/jira/browse/KARAF-1113] - Add a web:launch command
    * [KARAF-3790|https://issues.apache.org/jira/browse/KARAF-3790] - Add comment with karaf.lock.dir property in etc/system.properties
    * [KARAF-3796|https://issues.apache.org/jira/browse/KARAF-3796] - Provide aries jpa 2.0.0 and use feature for persistence-api
    * [KARAF-3799|https://issues.apache.org/jira/browse/KARAF-3799] - Add eclipselink feature
    * [KARAF-3802|https://issues.apache.org/jira/browse/KARAF-3802] - Disabling service requirements check for "old style" features

** New Feature
    * [KARAF-3759|https://issues.apache.org/jira/browse/KARAF-3759] - Provide tooling to store a resolution attempt that failed so that it can be replayed offline for analysis


                    Apache Karaf 4.0.0.M3
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M3 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  For more information, please see the below changelog:

 ChangeLog:
 ----------

**Bug
 * [KARAF-132|https://issues.apache.org/jira/browse/KARAF-132] - The user name for the main console session is always "karaf"
 * [KARAF-482|https://issues.apache.org/jira/browse/KARAF-482] - Maven 3 archetypes itests issue
 * [KARAF-609|https://issues.apache.org/jira/browse/KARAF-609] - Karaf features core bundle gets stack to creating state if there is no access to the default maven repositories
 * [KARAF-677|https://issues.apache.org/jira/browse/KARAF-677] - Karaf is missing osgi/minimum from the ee defined in config.properties
 * [KARAF-1074|https://issues.apache.org/jira/browse/KARAF-1074] - features-maven-plugin collects wrong artifacts
 * [KARAF-1137|https://issues.apache.org/jira/browse/KARAF-1137] - Corrupted output for bundle:info command in 3.0.0-SNAPSHOT
 * [KARAF-1146|https://issues.apache.org/jira/browse/KARAF-1146] - features-maven-plugin collects wrong artifacts
 * [KARAF-1246|https://issues.apache.org/jira/browse/KARAF-1246] - add a version checker for karaf start script
 * [KARAF-1350|https://issues.apache.org/jira/browse/KARAF-1350] - features-maven-plugin cannot resolve a feature without an explicit descriptor
 * [KARAF-1432|https://issues.apache.org/jira/browse/KARAF-1432] - karaf:features-validate-descriptor parses system packages incorrectly
 * [KARAF-1532|https://issues.apache.org/jira/browse/KARAF-1532] - packing with karaf-assembly error
 * [KARAF-1545|https://issues.apache.org/jira/browse/KARAF-1545] - Jar files in lib directory require "karaf-" prefix in order to be loaded
 * [KARAF-1553|https://issues.apache.org/jira/browse/KARAF-1553] - Command service references should be AUTO_EXPORT_INTERFACES
 * [KARAF-1560|https://issues.apache.org/jira/browse/KARAF-1560] - config:update throws ClassCastException when used on a Configuration with boolean fields created in the web console
 * [KARAF-1561|https://issues.apache.org/jira/browse/KARAF-1561] - Restart Framework from Web Console's System Information tab results in Karaf dying
 * [KARAF-1584|https://issues.apache.org/jira/browse/KARAF-1584] - karaf-maven-plugin ignores provided scope on dependency
 * [KARAF-1627|https://issues.apache.org/jira/browse/KARAF-1627] - Remove sshd command and instead make sshd react directly to config changes
 * [KARAF-1701|https://issues.apache.org/jira/browse/KARAF-1701] - Parsing of config for a field with cardinality > 1 is incorrectlyprocessed and displayed on Admin Console
 * [KARAF-1729|https://issues.apache.org/jira/browse/KARAF-1729] - Cannot uninstall bundle, bundle xx is invalid
 * [KARAF-1823|https://issues.apache.org/jira/browse/KARAF-1823] - Memory leak on windows in SSHD ServerSession
 * [KARAF-2095|https://issues.apache.org/jira/browse/KARAF-2095] - Camel Route (JMS Polling) not working when installing feature "jndi"
 * [KARAF-2110|https://issues.apache.org/jira/browse/KARAF-2110] - karaf-maven-plugin fails to use features with bundles with "wrap" keyword
 * [KARAF-2153|https://issues.apache.org/jira/browse/KARAF-2153] - wrong path in JAVA_ENDORSED_DIRS and JAVA_EXT_DIRS in bin/karaf script from snapshots
 * [KARAF-2173|https://issues.apache.org/jira/browse/KARAF-2173] - karaf-maven-plugin ci-build-profile failures
 * [KARAF-2260|https://issues.apache.org/jira/browse/KARAF-2260] - Overloaded put methord with List<String> comment parameter in InstallKarMojo$CommentProperties
 * [KARAF-2269|https://issues.apache.org/jira/browse/KARAF-2269] - Servicemix Specs Activator/OsgiLocator Broken due to KARAF-2136
 * [KARAF-2295|https://issues.apache.org/jira/browse/KARAF-2295] - features deployer is useless for dynamic updates
 * [KARAF-2315|https://issues.apache.org/jira/browse/KARAF-2315] - The check for jvm.dll happens to early in the bat file
 * [KARAF-2390|https://issues.apache.org/jira/browse/KARAF-2390] - Fix namespace handlers provided service header
 * [KARAF-2395|https://issues.apache.org/jira/browse/KARAF-2395] - karaf:features-generate-descriptor fails with Maven 3.1.0 : No implementation for org.sonatype.aether.RepositorySystem was bound
 * [KARAF-2420|https://issues.apache.org/jira/browse/KARAF-2420] - blueprint deployer: redeploy untouched blueprint xml in deploy folder after restart
 * [KARAF-2456|https://issues.apache.org/jira/browse/KARAF-2456] - Shutdown is stuck after wrapper:install
 * [KARAF-2467|https://issues.apache.org/jira/browse/KARAF-2467] - Regression on KARAF-2037
 * [KARAF-2481|https://issues.apache.org/jira/browse/KARAF-2481] - LogService WebConsole view doesn't work with Equinox
 * [KARAF-2506|https://issues.apache.org/jira/browse/KARAF-2506] - MBeans attributes are "unavailable"
 * [KARAF-2519|https://issues.apache.org/jira/browse/KARAF-2519] - karaf-maven-plugin ignores dependent feature repositories when building an assembly
 * [KARAF-2562|https://issues.apache.org/jira/browse/KARAF-2562] - When running karaf under Java 1.8, once the console comes up to the shell, any command cause a NullPointException
 * [KARAF-2563|https://issues.apache.org/jira/browse/KARAF-2563] - Compilation fails with JDK 8 ea
 * [KARAF-2596|https://issues.apache.org/jira/browse/KARAF-2596] - install-kars goal of the karaf-maven-plugin ignores bundles listed in the features that have the "dependency" property set to "true"
 * [KARAF-2600|https://issues.apache.org/jira/browse/KARAF-2600] - Failed to get the session when running client.bat to connect karaf instance
 * [KARAF-2602|https://issues.apache.org/jira/browse/KARAF-2602] - Support Java 8
 * [KARAF-2656|https://issues.apache.org/jira/browse/KARAF-2656] - Config service doesn't create a file in etc if it doesn't exist
 * [KARAF-2674|https://issues.apache.org/jira/browse/KARAF-2674] - Provide Spring 4.0.2.RELEASE_1 feature
 * [KARAF-2678|https://issues.apache.org/jira/browse/KARAF-2678] - txlog files locked during admin clone on windows
 * [KARAF-2725|https://issues.apache.org/jira/browse/KARAF-2725] - jpa feature should install org.osgi.enterprise 5.0.0 bundle
 * [KARAF-2726|https://issues.apache.org/jira/browse/KARAF-2726] - Openjpa feature installs wrong jpa spec bundle
 * [KARAF-2728|https://issues.apache.org/jira/browse/KARAF-2728] - feature:install fails with ArrayIndexOutOfBoundsException 
 * [KARAF-2732|https://issues.apache.org/jira/browse/KARAF-2732] - Karaf doesn't start without internet connection
 * [KARAF-2743|https://issues.apache.org/jira/browse/KARAF-2743] - karaf-maven-plugin can not create custom Karaf with Apache Camel
 * [KARAF-2750|https://issues.apache.org/jira/browse/KARAF-2750] - karaf-maven-plugin install-kar doesn't include config file in the system folder
 * [KARAF-2755|https://issues.apache.org/jira/browse/KARAF-2755] - Encrypt password mechanism pollutes the group
 * [KARAF-2758|https://issues.apache.org/jira/browse/KARAF-2758] - Karaf stops when updating the shell console bundle
 * [KARAF-2759|https://issues.apache.org/jira/browse/KARAF-2759] - Error in Client parameter parsing
 * [KARAF-2773|https://issues.apache.org/jira/browse/KARAF-2773] - Refreshing the console bundle closes karaf
 * [KARAF-2774|https://issues.apache.org/jira/browse/KARAF-2774] - Watched bundles are restarted twice
 * [KARAF-2775|https://issues.apache.org/jira/browse/KARAF-2775] - webconsole gogo plugin does not work:  Exception in thread "Karaf Console Web user karaf" java.lang.SecurityException: Current user has no associated roles.
 * [KARAF-2776|https://issues.apache.org/jira/browse/KARAF-2776] - Startup bundles are installed our of order
 * [KARAF-2777|https://issues.apache.org/jira/browse/KARAF-2777] - Substitution is scattered in various place and the code has bugs
 * [KARAF-2778|https://issues.apache.org/jira/browse/KARAF-2778] - The bin/shell script is broken
 * [KARAF-2779|https://issues.apache.org/jira/browse/KARAF-2779] - wrapper feature can't be installed
 * [KARAF-2781|https://issues.apache.org/jira/browse/KARAF-2781] - Enable rat profile by default
 * [KARAF-2785|https://issues.apache.org/jira/browse/KARAF-2785] - First line of sorted input not printed in sort command
 * [KARAF-2786|https://issues.apache.org/jira/browse/KARAF-2786] - Comment the default key and document how to change/enable it
 * [KARAF-2787|https://issues.apache.org/jira/browse/KARAF-2787] - Add a way to specify the client key
 * [KARAF-2790|https://issues.apache.org/jira/browse/KARAF-2790] - Bundle commands wrongly default to select all bundles
 * [KARAF-2793|https://issues.apache.org/jira/browse/KARAF-2793] - Remove tight coupling from bundle/core and kar/core to pax-url-aether
 * [KARAF-2794|https://issues.apache.org/jira/browse/KARAF-2794] - Remove gogo-runtime and jansi bundles
 * [KARAF-2797|https://issues.apache.org/jira/browse/KARAF-2797] - Allow FeaturesService to specify options during feature uninstallation
 * [KARAF-2798|https://issues.apache.org/jira/browse/KARAF-2798] - jdbc:create -i -t HSQL installs wrong db-engine
 * [KARAF-2800|https://issues.apache.org/jira/browse/KARAF-2800] - karaf-maven-plugin only supports mvn URL
 * [KARAF-2804|https://issues.apache.org/jira/browse/KARAF-2804] - Karaf Maven Plugin throws errors when trying to install pax-web-features with compile scope
 * [KARAF-2806|https://issues.apache.org/jira/browse/KARAF-2806] - The bundle:watch commands fails when updating o.a.k.bundle.core bundle
 * [KARAF-2807|https://issues.apache.org/jira/browse/KARAF-2807] - Unable to have multiple subshells in one bundle
 * [KARAF-2819|https://issues.apache.org/jira/browse/KARAF-2819] - datasource-xxx.xml contains wrong password after jdbc:create
 * [KARAF-2820|https://issues.apache.org/jira/browse/KARAF-2820] - features-maven-plugin:add-features-to-repo adds wrong transitive feature version
 * [KARAF-2821|https://issues.apache.org/jira/browse/KARAF-2821] - features-maven-plugin:add-features-to-repo is broken in 2.3.5-SNAPSHOT
 * [KARAF-2822|https://issues.apache.org/jira/browse/KARAF-2822] - org.apache.karaf.jaas.modules.jdbc.JDBCUtils.OSGI contains "bundles:" not "osgi:" as required by the OSGi JNDI spec"
 * [KARAF-2828|https://issues.apache.org/jira/browse/KARAF-2828] - Reintroduce system as a default repository
 * [KARAF-2830|https://issues.apache.org/jira/browse/KARAF-2830] - Karaf scripts java version check should be more "flexible"
 * [KARAF-2837|https://issues.apache.org/jira/browse/KARAF-2837] - The config.properties in features-maven-plugin is out-of-data.
 * [KARAF-2838|https://issues.apache.org/jira/browse/KARAF-2838] - features-maven-plugin:add-features-to-repo can't compare SNAPSHOT versions in 2.3.5-SNAPSHOT
 * [KARAF-2839|https://issues.apache.org/jira/browse/KARAF-2839] - Conditional features are not verified correctly after installing / uninstalling a feature
 * [KARAF-2840|https://issues.apache.org/jira/browse/KARAF-2840] - Creating child container using admin service should use KARAF_OPTS
 * [KARAF-2846|https://issues.apache.org/jira/browse/KARAF-2846] - Gogo webconsole plugin is broken
 * [KARAF-2847|https://issues.apache.org/jira/browse/KARAF-2847] - Connect connect to the root instance
 * [KARAF-2849|https://issues.apache.org/jira/browse/KARAF-2849] - MBeanServer unregistration is not correctly handled
 * [KARAF-2850|https://issues.apache.org/jira/browse/KARAF-2850] - The karaf-maven-plugin and boot features service should be more resilient with the bootFeatures list.
 * [KARAF-2851|https://issues.apache.org/jira/browse/KARAF-2851] - The FeaturesService can sometime loose the repository list
 * [KARAF-2856|https://issues.apache.org/jira/browse/KARAF-2856] - Assembly archetype itest fails
 * [KARAF-2863|https://issues.apache.org/jira/browse/KARAF-2863] - Spring features are not correct
 * [KARAF-2864|https://issues.apache.org/jira/browse/KARAF-2864] - The internal logger for the felix framework is not configured
 * [KARAF-2878|https://issues.apache.org/jira/browse/KARAF-2878] - The thread reading the system input stream should exit automatically when the console bundle stops
 * [KARAF-2880|https://issues.apache.org/jira/browse/KARAF-2880] - jms:* commands don't consume messages
 * [KARAF-2890|https://issues.apache.org/jira/browse/KARAF-2890] - The env variables can't be read while running karaf as a Linux service
 * [KARAF-2895|https://issues.apache.org/jira/browse/KARAF-2895] - installation website link produces 404 not found page
 * [KARAF-2898|https://issues.apache.org/jira/browse/KARAF-2898] - Maven feature validation did not accept WAR bundle (WAB) artifacts.
 * [KARAF-2899|https://issues.apache.org/jira/browse/KARAF-2899] - NPE when running features:listUrl
 * [KARAF-2910|https://issues.apache.org/jira/browse/KARAF-2910] - Properties login module seems to leak a PropertiesInstaller reference results in OOM
 * [KARAF-2913|https://issues.apache.org/jira/browse/KARAF-2913] - JAAS JDBCBackingEngine has the wrong condition to iterate results, no users are returned
 * [KARAF-2914|https://issues.apache.org/jira/browse/KARAF-2914] - JAAS JDBCBackingEngineFactory: Wrong query from the configuration
 * [KARAF-2920|https://issues.apache.org/jira/browse/KARAF-2920] - Karaf freezes during startup
 * [KARAF-2926|https://issues.apache.org/jira/browse/KARAF-2926] - Child instance doesn't start
 * [KARAF-2931|https://issues.apache.org/jira/browse/KARAF-2931] - Webconsole plugins are broken
 * [KARAF-2943|https://issues.apache.org/jira/browse/KARAF-2943] - Wrong polymorphism leads to null variables
 * [KARAF-2947|https://issues.apache.org/jira/browse/KARAF-2947] - Karaf master does not build because of rat errors when working with eclipse
 * [KARAF-2951|https://issues.apache.org/jira/browse/KARAF-2951] - Transitive repositories and bundles are not added to system repo
 * [KARAF-2957|https://issues.apache.org/jira/browse/KARAF-2957] - LDAP login module cannot handle slashes in CN
 * [KARAF-2959|https://issues.apache.org/jira/browse/KARAF-2959] - JDBC commands don't properly close connection
 * [KARAF-2968|https://issues.apache.org/jira/browse/KARAF-2968] - Existing Datasource can not be found using aries jndi
 * [KARAF-2980|https://issues.apache.org/jira/browse/KARAF-2980] - strip off tabs/spaces around role|group names
 * [KARAF-2981|https://issues.apache.org/jira/browse/KARAF-2981] - Karaf shutdown hangs in SshServer.stop()
 * [KARAF-2982|https://issues.apache.org/jira/browse/KARAF-2982] - Command history is off by one
 * [KARAF-2991|https://issues.apache.org/jira/browse/KARAF-2991] - Shell Console throws exception when a service contains int[] as value for a property
 * [KARAF-2992|https://issues.apache.org/jira/browse/KARAF-2992] - Generate the shutdown command at first boot
 * [KARAF-2996|https://issues.apache.org/jira/browse/KARAF-2996] - shutdown +n command not work and shutdown hh:mm not been validated
 * [KARAF-2998|https://issues.apache.org/jira/browse/KARAF-2998] - When chopping long lines, less does not take tabs into account
 * [KARAF-3000|https://issues.apache.org/jira/browse/KARAF-3000] -  Whitespace in feature file bundle element value causes NumberFormatException
 * [KARAF-3019|https://issues.apache.org/jira/browse/KARAF-3019] - karaf-maven-plugin cannot handle all types of mvn urls
 * [KARAF-3021|https://issues.apache.org/jira/browse/KARAF-3021] - Keyboard still read after log:tail cancelled
 * [KARAF-3032|https://issues.apache.org/jira/browse/KARAF-3032] - Multi-stage boot features function does not support over 3 stages.
 * [KARAF-3033|https://issues.apache.org/jira/browse/KARAF-3033] - The system bundle should export and boot delegate javax.xml.crypto packages
 * [KARAF-3044|https://issues.apache.org/jira/browse/KARAF-3044] - Can't shutdown karaf via wrapper on AIX
 * [KARAF-3052|https://issues.apache.org/jira/browse/KARAF-3052] - Allow passing through custom ldap properties
 * [KARAF-3054|https://issues.apache.org/jira/browse/KARAF-3054] - client doesn't load using IBM JDK
 * [KARAF-3055|https://issues.apache.org/jira/browse/KARAF-3055] - tabbing in subshell displays more than commands of the current subshell
 * [KARAF-3056|https://issues.apache.org/jira/browse/KARAF-3056] - Upgrade to JLine 2.12
 * [KARAF-3061|https://issues.apache.org/jira/browse/KARAF-3061] - Problems with jaas:realms / jaas:manage commands when using multiple realms of the same name
 * [KARAF-3064|https://issues.apache.org/jira/browse/KARAF-3064] - SSH Console regenerates the SSH key on each restart
 * [KARAF-3071|https://issues.apache.org/jira/browse/KARAF-3071] - etc/org.ops4j.pax.url.mvn.cfg file contains replaced string in instances that should not be
 * [KARAF-3072|https://issues.apache.org/jira/browse/KARAF-3072] - Instance etc files are not sync with the root etc files
 * [KARAF-3085|https://issues.apache.org/jira/browse/KARAF-3085] - features:chooseurl/feature:repo-add should support "real" version range
 * [KARAF-3092|https://issues.apache.org/jira/browse/KARAF-3092] - Remove ${services-${karaf.framework}} variables from org.osgi.framework.system.capabilities
 * [KARAF-3096|https://issues.apache.org/jira/browse/KARAF-3096] - Karaf doesn't start with Equinox 3.9.1
 * [KARAF-3098|https://issues.apache.org/jira/browse/KARAF-3098] - Check the usage of config.properties in main module
 * [KARAF-3102|https://issues.apache.org/jira/browse/KARAF-3102] - "New" resolver leaves some bundles in resolved state and install unexpected bundles
 * [KARAF-3103|https://issues.apache.org/jira/browse/KARAF-3103] - config:edit does not correctly handle configuration visibility for --factory calls.
 * [KARAF-3105|https://issues.apache.org/jira/browse/KARAF-3105] - Cannot use LDAPLoginModule with ActiveDirectory
 * [KARAF-3115|https://issues.apache.org/jira/browse/KARAF-3115] - add address flag when create a child instance
 * [KARAF-3123|https://issues.apache.org/jira/browse/KARAF-3123] - BundleWatcherImpl tries to stop bundle fragments
 * [KARAF-3127|https://issues.apache.org/jira/browse/KARAF-3127] - bin/instance  script doesn't work
 * [KARAF-3128|https://issues.apache.org/jira/browse/KARAF-3128] - Update ops4j/oss sonatype repositories URL
 * [KARAF-3129|https://issues.apache.org/jira/browse/KARAF-3129] - RAT plugin error on ssh key files
 * [KARAF-3133|https://issues.apache.org/jira/browse/KARAF-3133] - http command doesn't show any web resources
 * [KARAF-3136|https://issues.apache.org/jira/browse/KARAF-3136] - Karaf can't start if you have whitespaces in brackets in JAVA_OPTS
 * [KARAF-3138|https://issues.apache.org/jira/browse/KARAF-3138] - Having eventadmin listed as a boot features cause problems in other bundles startup
 * [KARAF-3147|https://issues.apache.org/jira/browse/KARAF-3147] - Local JMX connect is not possible
 * [KARAF-3149|https://issues.apache.org/jira/browse/KARAF-3149] - Karaf chooseurl for jclouds is wrong
 * [KARAF-3150|https://issues.apache.org/jira/browse/KARAF-3150] - kar:install doesn't support classifier in a MVN URL
 * [KARAF-3151|https://issues.apache.org/jira/browse/KARAF-3151] - Blueprint managed-properties doesn't call the update-method
 * [KARAF-3154|https://issues.apache.org/jira/browse/KARAF-3154] - Feature repo org.ops4j.pax.cdi-0.7.0 contains broken feature
 * [KARAF-3158|https://issues.apache.org/jira/browse/KARAF-3158] - Incorrect javax.annotation version for java7
 * [KARAF-3159|https://issues.apache.org/jira/browse/KARAF-3159] - Fix feature deployer documentation about auto installation of the features
 * [KARAF-3162|https://issues.apache.org/jira/browse/KARAF-3162] - Update the security documentation as the PropertiesConverter doesn't exist anymore
 * [KARAF-3170|https://issues.apache.org/jira/browse/KARAF-3170] - Java8 packages related to JavaFX are missing
 * [KARAF-3176|https://issues.apache.org/jira/browse/KARAF-3176] - sshRole and jmxRole are not functionnal
 * [KARAF-3180|https://issues.apache.org/jira/browse/KARAF-3180] - openwebbeans feature doesn't install
 * [KARAF-3192|https://issues.apache.org/jira/browse/KARAF-3192] - Don't throw IllegalStateException when can't find attribute for a certain bean
 * [KARAF-3196|https://issues.apache.org/jira/browse/KARAF-3196] - Export sun.misc package from the system bundle
 * [KARAF-3197|https://issues.apache.org/jira/browse/KARAF-3197] - Can't type anything in the console on Windows platform
 * [KARAF-3204|https://issues.apache.org/jira/browse/KARAF-3204] - Avoid calls to Configuration#setBundleLocation(null) which are not needed
 * [KARAF-3209|https://issues.apache.org/jira/browse/KARAF-3209] - Client doesn't select the correct user
 * [KARAF-3210|https://issues.apache.org/jira/browse/KARAF-3210] - karaf:features-generate-descriptor fails with Maven 3.1.x and 3.2.x : required class was missing ... org/sonatype/aether/RepositorySystem
 * [KARAF-3211|https://issues.apache.org/jira/browse/KARAF-3211] - Error while installing transaction feature
 * [KARAF-3212|https://issues.apache.org/jira/browse/KARAF-3212] - karaf.data variable not correctly resolved while installing the pax-http feature
 * [KARAF-3213|https://issues.apache.org/jira/browse/KARAF-3213] - ConcurrentModification exception in FileInstall/Upgrade to Felix FileInstall 3.4.1
 * [KARAF-3224|https://issues.apache.org/jira/browse/KARAF-3224] - Support wrap URL with option
 * [KARAF-3230|https://issues.apache.org/jira/browse/KARAF-3230] - jndi feature doesn't install
 * [KARAF-3232|https://issues.apache.org/jira/browse/KARAF-3232] - Feature installation looks for MANIFEST as first position in the jar
 * [KARAF-3248|https://issues.apache.org/jira/browse/KARAF-3248] - bundle:refresh doesn't work without argument
 * [KARAF-3249|https://issues.apache.org/jira/browse/KARAF-3249] - Error: "usage: dirname path" when Karaf is located under path with spaces
 * [KARAF-3250|https://issues.apache.org/jira/browse/KARAF-3250] - JVM options ignored on Windows
 * [KARAF-3251|https://issues.apache.org/jira/browse/KARAF-3251] - Karaf maven plugin does not install bundles in conditional as needed
 * [KARAF-3261|https://issues.apache.org/jira/browse/KARAF-3261] - jdbc command (using JdbcConnector.java) does not honour service ranking and throws IllegalArgumentException instead
 * [KARAF-3273|https://issues.apache.org/jira/browse/KARAF-3273] - zodiac.springsource.com repo is missing from the default repository set (required for gemini-blueprint feature)
 * [KARAF-3274|https://issues.apache.org/jira/browse/KARAF-3274] - MBean itests randomly fail
 * [KARAF-3284|https://issues.apache.org/jira/browse/KARAF-3284] - The shell-log bundle should not import org.apache.log4j.* package
 * [KARAF-3288|https://issues.apache.org/jira/browse/KARAF-3288] - karaf script doesn't start on Solaris if JAVA_HOME is not set
 * [KARAF-3325|https://issues.apache.org/jira/browse/KARAF-3325] - Karaf throws SocketTimeoutException and exits after 49 days
 * [KARAF-3327|https://issues.apache.org/jira/browse/KARAF-3327] - Incorrect LC_CTYPE parsing
 * [KARAF-3329|https://issues.apache.org/jira/browse/KARAF-3329] - javax.annotation-version in jre.properties does not reflect version of Java SE
 * [KARAF-3330|https://issues.apache.org/jira/browse/KARAF-3330] - embedded Karaf web demo doesn't deploy since 3.0.2
 * [KARAF-3333|https://issues.apache.org/jira/browse/KARAF-3333] - CXF 3.0.1 feature install fails in karaf
 * [KARAF-3335|https://issues.apache.org/jira/browse/KARAF-3335] - Endorsed org.apache.karaf.exception-3.0.2 jar causes issues with Java 8 Nashorn scripts
 * [KARAF-3350|https://issues.apache.org/jira/browse/KARAF-3350] - The log:display command fails with CNFE if the pax-logging-service bundle has been refreshed
 * [KARAF-3352|https://issues.apache.org/jira/browse/KARAF-3352] - Generate html and pdf artifacts in the manual
 * [KARAF-3363|https://issues.apache.org/jira/browse/KARAF-3363] - feature:install jetty does not install org.eclipse.jetty.client packages
 * [KARAF-3365|https://issues.apache.org/jira/browse/KARAF-3365] - typo in org.ops4j.pax.url.mvn.cfg
 * [KARAF-3369|https://issues.apache.org/jira/browse/KARAF-3369] - karaf-maven-plugin 3.0.2 breaks deployment to Nexus
 * [KARAF-3370|https://issues.apache.org/jira/browse/KARAF-3370] - itests using ssh or cdi related fail
 * [KARAF-3377|https://issues.apache.org/jira/browse/KARAF-3377] - Starting Karaf on Windows changes console title
 * [KARAF-3379|https://issues.apache.org/jira/browse/KARAF-3379] - jpa feature incompatible to hibernate 4.3 feature
 * [KARAF-3383|https://issues.apache.org/jira/browse/KARAF-3383] - Avoid exception causing completion to fail if a completer class can not be loaded (because of an optional package for example)
 * [KARAF-3384|https://issues.apache.org/jira/browse/KARAF-3384] - Commands are not unregistered correctly when a bundle is stopped
 * [KARAF-3385|https://issues.apache.org/jira/browse/KARAF-3385] - MultiException stacktraces do not display inner causes
 * [KARAF-3397|https://issues.apache.org/jira/browse/KARAF-3397] - FeaturesServiceMBeanImpl throws an Exception when listening the features
 * [KARAF-3399|https://issues.apache.org/jira/browse/KARAF-3399] - The host is not refreshed if a new fragment is installed
 * [KARAF-3408|https://issues.apache.org/jira/browse/KARAF-3408] - feature:repo-refresh doesn't work
 * [KARAF-3412|https://issues.apache.org/jira/browse/KARAF-3412] - should add javax.management.builder.initial flag for Karaf child instance
 * [KARAF-3413|https://issues.apache.org/jira/browse/KARAF-3413] - should also associate the role to run executeScript
 * [KARAF-3414|https://issues.apache.org/jira/browse/KARAF-3414] - SshCommandTestBase uses some deprecated sshd APIs
 * [KARAF-3416|https://issues.apache.org/jira/browse/KARAF-3416] - AutoEncryptionSupport randomly raises NullPointerException at startup
 * [KARAF-3420|https://issues.apache.org/jira/browse/KARAF-3420] - Java Debug options are Pre Java 5.0
 * [KARAF-3423|https://issues.apache.org/jira/browse/KARAF-3423] - Can't connect to a running instance with instance:connect
 * [KARAF-3425|https://issues.apache.org/jira/browse/KARAF-3425] - Need a solution to add a "specific version" of a feature in karaf-maven-plugin 
 * [KARAF-3428|https://issues.apache.org/jira/browse/KARAF-3428] - Upgrade to Pax CDI 0.10.0
 * [KARAF-3430|https://issues.apache.org/jira/browse/KARAF-3430] - User name/password missing in connection factory created with jms:create
 * [KARAF-3441|https://issues.apache.org/jira/browse/KARAF-3441] - The admin:stop Command Does Not Zero Out Root Container PID
 * [KARAF-3459|https://issues.apache.org/jira/browse/KARAF-3459] - PropertiesLoginModule throws NPE when callbackHandler is null
 * [KARAF-3460|https://issues.apache.org/jira/browse/KARAF-3460] - NPE in AutoEncryptionSupport.run
 * [KARAF-3465|https://issues.apache.org/jira/browse/KARAF-3465] - Add pax-* projects URLs in the etc/org.apache.karaf.features.repos.cfg
 * [KARAF-3471|https://issues.apache.org/jira/browse/KARAF-3471] - Karaf can't start if etc/config.properties is not writable
 * [KARAF-3476|https://issues.apache.org/jira/browse/KARAF-3476] - ConfigManagedServiceFactoryTest fails
 * [KARAF-3477|https://issues.apache.org/jira/browse/KARAF-3477] - HeapDumpProvider should use a JMXServiceURL in order to provide username/password
 * [KARAF-3487|https://issues.apache.org/jira/browse/KARAF-3487] - config:edit '(service.factorypid=myconfig)' throws NPE
 * [KARAF-3488|https://issues.apache.org/jira/browse/KARAF-3488] - Exiting Karaf (shutdown command or CTRL-D) displays "CLOSING SESSION!" on System.out
 * [KARAF-3490|https://issues.apache.org/jira/browse/KARAF-3490] - Unresolved dependency (equinox region) when running an unmodified custom distribution
 * [KARAF-3492|https://issues.apache.org/jira/browse/KARAF-3492] - Can't connect to Karaf sshd using key authentication
 * [KARAF-3493|https://issues.apache.org/jira/browse/KARAF-3493] - CreateArchiveMojo ignores the targetFile option
 * [KARAF-3494|https://issues.apache.org/jira/browse/KARAF-3494] - client should not fail if it can't read etc/org.apache.karaf.shell.cfg file
 * [KARAF-3501|https://issues.apache.org/jira/browse/KARAF-3501] - bin/client script doesn't work in latest 4.0 SNAPSHOT kit
 * [KARAF-3506|https://issues.apache.org/jira/browse/KARAF-3506] - karaf-maven-plugin doesn't handle leading whitespace on config file locations
 * [KARAF-3514|https://issues.apache.org/jira/browse/KARAF-3514] - RuntimeException when setting system.properties -->  karaf.lock.level to a value greater 4 and starting Karaf
 * [KARAF-3515|https://issues.apache.org/jira/browse/KARAF-3515] - branding.properties file in the etc folder doesn't work
 * [KARAF-3516|https://issues.apache.org/jira/browse/KARAF-3516] - JMS: Create command -u option changes username and url
 * [KARAF-3517|https://issues.apache.org/jira/browse/KARAF-3517] - Typo in features bundle info
 * [KARAF-3526|https://issues.apache.org/jira/browse/KARAF-3526] - feature:install foo doesn't fail anymore when no feature match
 * [KARAF-3527|https://issues.apache.org/jira/browse/KARAF-3527] - Appending config from feature doesn't work
 * [KARAF-3536|https://issues.apache.org/jira/browse/KARAF-3536] - Diagnostic module won't compile with IBM JDK
 * [KARAF-3537|https://issues.apache.org/jira/browse/KARAF-3537] - More and less commands do not handle ansi escape sequences correctly
 * [KARAF-3538|https://issues.apache.org/jira/browse/KARAF-3538] - Support multiline values in ShellTable
 * [KARAF-3542|https://issues.apache.org/jira/browse/KARAF-3542] - Correctly use opened streams when parsing xml
 * [KARAF-3543|https://issues.apache.org/jira/browse/KARAF-3543] - ClassNotFoundException when running shell.sh
 * [KARAF-3544|https://issues.apache.org/jira/browse/KARAF-3544] - Spring features should have a conditional on deployer for installing the spring url handler
 * [KARAF-3562|https://issues.apache.org/jira/browse/KARAF-3562] - DefaultJDBCLock case sensitive issue
 * [KARAF-3566|https://issues.apache.org/jira/browse/KARAF-3566] - The javax.annotation package should be exported from system bundle with version 1.0 in JDK8
 * [KARAF-3567|https://issues.apache.org/jira/browse/KARAF-3567] - Branding not applied to shell
 * [KARAF-3570|https://issues.apache.org/jira/browse/KARAF-3570] - The jaas realm configuration is broken
 * [KARAF-3582|https://issues.apache.org/jira/browse/KARAF-3582] - command extension: if one class failed inspection is stopped
 * [KARAF-3585|https://issues.apache.org/jira/browse/KARAF-3585] - Snapshots are not updated by the features service
 * [KARAF-3589|https://issues.apache.org/jira/browse/KARAF-3589] - karaf-maven-plugin doesn't allow specifying a version for a boot feature in etc/org.apache.karaf.features.cfg
 * [KARAF-3625|https://issues.apache.org/jira/browse/KARAF-3625] - Password encryption doesn't work
 * [KARAF-3632|https://issues.apache.org/jira/browse/KARAF-3632] - Change transaction parameter in features
 * [KARAF-3648|https://issues.apache.org/jira/browse/KARAF-3648] - should zero out instance pid in instance.properties when we shutdown an instance from shell
 * [KARAF-3650|https://issues.apache.org/jira/browse/KARAF-3650] - diagnostic.boot should not depend to sun.misc package
 * [KARAF-3651|https://issues.apache.org/jira/browse/KARAF-3651] - The karaf client can cause a NPE in org.apache.sshd.common.util.Buffer.putString(Buffer.java:434)
 * [KARAF-3653|https://issues.apache.org/jira/browse/KARAF-3653] - Karaf can't be started in offline mode
 * [KARAF-3656|https://issues.apache.org/jira/browse/KARAF-3656] - SSH message channel closed too early
 * [KARAF-3659|https://issues.apache.org/jira/browse/KARAF-3659] - shutdown of karaf throws NullPointerException if jmx ssl keystore is not configured properly
 * [KARAF-3660|https://issues.apache.org/jira/browse/KARAF-3660] - Setting JMX SSL causes StringIndexOutOfBoundsException when setting keyPasswords without = symbol
 * [KARAF-3662|https://issues.apache.org/jira/browse/KARAF-3662] - Unable to start on Windows
 * [KARAF-3668|https://issues.apache.org/jira/browse/KARAF-3668] - ManagedServiceFactory update is not called after restart
 * [KARAF-3670|https://issues.apache.org/jira/browse/KARAF-3670] - The client may use a group definition as the default user
 * [KARAF-3672|https://issues.apache.org/jira/browse/KARAF-3672] - Commands are missing from the manual
 * [KARAF-3684|https://issues.apache.org/jira/browse/KARAF-3684] - Karaf Manual doesn't contain Package-Imports
 * [KARAF-3703|https://issues.apache.org/jira/browse/KARAF-3703] - Unable to install ActiveMQ in Karaf 4 SNAPSHOT
 * [KARAF-3704|https://issues.apache.org/jira/browse/KARAF-3704] - Command jaas:groupadd allows adding duplicite groups
 * [KARAF-3706|https://issues.apache.org/jira/browse/KARAF-3706] - Exception at Karaf startup
 * [KARAF-3709|https://issues.apache.org/jira/browse/KARAF-3709] - The assembly builder should generate mvn urls for startup bundles
 * [KARAF-3713|https://issues.apache.org/jira/browse/KARAF-3713] - JDBC generic datasource doesn't use the correct username property
 * [KARAF-3721|https://issues.apache.org/jira/browse/KARAF-3721] - Installing some features (eventadmin) restart the shell console
 * [KARAF-3722|https://issues.apache.org/jira/browse/KARAF-3722] - Feature resolver change bundles package export
 * [KARAF-3747|https://issues.apache.org/jira/browse/KARAF-3747] - jndi:alias prefix a name with a /
 * [KARAF-3753|https://issues.apache.org/jira/browse/KARAF-3753] - Child instances can't resolve libs in child system folder
 * [KARAF-3754|https://issues.apache.org/jira/browse/KARAF-3754] - Child instances should honor bundle overrides in root
 * [KARAF-3755|https://issues.apache.org/jira/browse/KARAF-3755] - shell.support.table.ShellTableTest breaked build on Windows
 * [KARAF-3760|https://issues.apache.org/jira/browse/KARAF-3760] - Can't ssh to Karaf when using the karaf-maven-plugin
 * [KARAF-3761|https://issues.apache.org/jira/browse/KARAF-3761] - Build and test fail on Windows

** Dependency upgrade
 * [KARAF-2279|https://issues.apache.org/jira/browse/KARAF-2279] - Upgrade to OSGi Core 5.0.0
 * [KARAF-2565|https://issues.apache.org/jira/browse/KARAF-2565] - Upgrade to OSGi Compendium 5.0.0
 * [KARAF-2661|https://issues.apache.org/jira/browse/KARAF-2661] - Upgrade to ServiceMix Specs 2.4.0
 * [KARAF-2769|https://issues.apache.org/jira/browse/KARAF-2769] - Upgrade to Pax CDI 0.7.0
 * [KARAF-2783|https://issues.apache.org/jira/browse/KARAF-2783] - Upgrade to Pax Web 3.0.7-SNAPSHOT
 * [KARAF-2789|https://issues.apache.org/jira/browse/KARAF-2789] - Upgrade to sshd 0.11.0
 * [KARAF-2811|https://issues.apache.org/jira/browse/KARAF-2811] - Upgrade to felix utils 1.6.0
 * [KARAF-2813|https://issues.apache.org/jira/browse/KARAF-2813] - Use EventAdmin to provide an audit trail of events, but it's lacking the authenticated Subject who performed the action
 * [KARAF-2816|https://issues.apache.org/jira/browse/KARAF-2816] - upgrade to spring 3.2.8.RELEASE
 * [KARAF-2829|https://issues.apache.org/jira/browse/KARAF-2829] - Upgrade to pax-url 2.0.0
 * [KARAF-2853|https://issues.apache.org/jira/browse/KARAF-2853] - Upgrade to Apache POM 14
 * [KARAF-2860|https://issues.apache.org/jira/browse/KARAF-2860] - Upgrade to Felix Framework 4.4.0/Felix Framework Security 2.4.0
 * [KARAF-2861|https://issues.apache.org/jira/browse/KARAF-2861] - Upgrade to ASM 5.0.3
 * [KARAF-2868|https://issues.apache.org/jira/browse/KARAF-2868] - Upgrade to aries jmx core 1.1.2
 * [KARAF-2869|https://issues.apache.org/jira/browse/KARAF-2869] - Upgrade to Pax CDI 0.7.0
 * [KARAF-2874|https://issues.apache.org/jira/browse/KARAF-2874] - Upgrade to XBean 3.18
 * [KARAF-2877|https://issues.apache.org/jira/browse/KARAF-2877] - Upgrade to Pax Web 4.0.0
 * [KARAF-2889|https://issues.apache.org/jira/browse/KARAF-2889] - Upgrade to Equinox 3.9.1-v20140110-1610
 * [KARAF-2903|https://issues.apache.org/jira/browse/KARAF-2903] - Upgrade to gemini blueprint 1.0.2
 * [KARAF-2906|https://issues.apache.org/jira/browse/KARAF-2906] - Upgrade to fileinstall 3.4.0
 * [KARAF-2907|https://issues.apache.org/jira/browse/KARAF-2907] - Upgrade to ConfigAdmin 1.8.0
 * [KARAF-2908|https://issues.apache.org/jira/browse/KARAF-2908] - Upgrade to hibernate latest 4.2.x and 4.3.x versions
 * [KARAF-2909|https://issues.apache.org/jira/browse/KARAF-2909] - Upgrade to felix gogo runtime 0.12.0
 * [KARAF-2912|https://issues.apache.org/jira/browse/KARAF-2912] - Upgrade to equinox region 1.1.0.v20120522-1841
 * [KARAF-2928|https://issues.apache.org/jira/browse/KARAF-2928] - Upgrade to Aries JMX Core 1.1.2
 * [KARAF-2929|https://issues.apache.org/jira/browse/KARAF-2929] - Upgrade to Aries JNDI Url 1.1
 * [KARAF-2932|https://issues.apache.org/jira/browse/KARAF-2932] - Upgrade to Felix WebConsole 4.2.2
 * [KARAF-2933|https://issues.apache.org/jira/browse/KARAF-2933] - Upgrade to Jasypt 1.9.2
 * [KARAF-2935|https://issues.apache.org/jira/browse/KARAF-2935] - Upgrade to Pax URL 2.0.0
 * [KARAF-2936|https://issues.apache.org/jira/browse/KARAF-2936] - Upgrade to slf4j 1.7.7 / Pax Logging 1.7.3
 * [KARAF-2937|https://issues.apache.org/jira/browse/KARAF-2937] - Upgrade to json 20140107
 * [KARAF-2945|https://issues.apache.org/jira/browse/KARAF-2945] - Upgrade to Aries Proxy 1.0.3 and Aries spifly 1.0.1 in order to support ASM5 and Java8
 * [KARAF-2954|https://issues.apache.org/jira/browse/KARAF-2954] - Upgrade to Pax Exam 3.5.0
 * [KARAF-3031|https://issues.apache.org/jira/browse/KARAF-3031] - Upgrade to Pax URL 2.1.0
 * [KARAF-3046|https://issues.apache.org/jira/browse/KARAF-3046] - Upgrade to gogo runtime 0.12.1
 * [KARAF-3049|https://issues.apache.org/jira/browse/KARAF-3049] - Upgrade to sshd 0.11
 * [KARAF-3101|https://issues.apache.org/jira/browse/KARAF-3101] - Upgrade to Spring 4.0.5.RELEASE
 * [KARAF-3106|https://issues.apache.org/jira/browse/KARAF-3106] - Upgrade to blueprint core 1.4.1
 * [KARAF-3109|https://issues.apache.org/jira/browse/KARAF-3109] - Upgrade to Pax Exam 4.0.0
 * [KARAF-3116|https://issues.apache.org/jira/browse/KARAF-3116] - Upgrade to Felix Framework 4.4.1
 * [KARAF-3120|https://issues.apache.org/jira/browse/KARAF-3120] - Upgrade to Aries JPA 1.0.2
 * [KARAF-3121|https://issues.apache.org/jira/browse/KARAF-3121] - Upgrade to Aries Blueprint Annotation 1.0.1
 * [KARAF-3131|https://issues.apache.org/jira/browse/KARAF-3131] - Upgrade to Hibernate 4.2.15.Final/4.3.6.Final
 * [KARAF-3140|https://issues.apache.org/jira/browse/KARAF-3140] - Upgrade to sshd 0.12.0
 * [KARAF-3156|https://issues.apache.org/jira/browse/KARAF-3156] - Upgrade to Pax CDI 0.8.0
 * [KARAF-3157|https://issues.apache.org/jira/browse/KARAF-3157] - Upgrade to Pax Exam 4.1.0
 * [KARAF-3171|https://issues.apache.org/jira/browse/KARAF-3171] - Upgrade to Aries Blueprint CM 1.0.4
 * [KARAF-3182|https://issues.apache.org/jira/browse/KARAF-3182] - Upgrade to Felix EventAdmin 1.4.0
 * [KARAF-3183|https://issues.apache.org/jira/browse/KARAF-3183] - Upgrade to bndlib 2.3.0
 * [KARAF-3184|https://issues.apache.org/jira/browse/KARAF-3184] - Upgrade to commons-beanutils 1.9.2
 * [KARAF-3185|https://issues.apache.org/jira/browse/KARAF-3185] - Upgrade to Felix BundleRepository 2.0.2
 * [KARAF-3186|https://issues.apache.org/jira/browse/KARAF-3186] - Upgrade to Equinox 3.10.0-v20140606-1445
 * [KARAF-3198|https://issues.apache.org/jira/browse/KARAF-3198] - Cleanup Pax Swissbox dependencies
 * [KARAF-3201|https://issues.apache.org/jira/browse/KARAF-3201] - Upgrade to pax-logging 1.7.4
 * [KARAF-3226|https://issues.apache.org/jira/browse/KARAF-3226] - Upgrade to Spring 4.0.7.RELEASE
 * [KARAF-3227|https://issues.apache.org/jira/browse/KARAF-3227] - Upgrade to Spring 3.2.11.RELEASE
 * [KARAF-3229|https://issues.apache.org/jira/browse/KARAF-3229] - Upgrade to Felix EventAdmin 1.4.2
 * [KARAF-3233|https://issues.apache.org/jira/browse/KARAF-3233] - Upgrade to Pax Exam 4.2.0
 * [KARAF-3243|https://issues.apache.org/jira/browse/KARAF-3243] - Upgrade to Pax URL 2.2.0
 * [KARAF-3265|https://issues.apache.org/jira/browse/KARAF-3265] - Upgrade to Aries Blueprint CM 1.0.5
 * [KARAF-3281|https://issues.apache.org/jira/browse/KARAF-3281] - Upgrade to Pax Logging 1.8.0 (log4j v2 support)
 * [KARAF-3291|https://issues.apache.org/jira/browse/KARAF-3291] - Upgrade to Pax Exam 4.3.0
 * [KARAF-3304|https://issues.apache.org/jira/browse/KARAF-3304] - Upgrade to Pax CDI 0.9.0
 * [KARAF-3305|https://issues.apache.org/jira/browse/KARAF-3305] - Upgrade to Aries Blueprint Core 1.4.2
 * [KARAF-3306|https://issues.apache.org/jira/browse/KARAF-3306] - Upgrade to Aries JNDI API 1.1.0
 * [KARAF-3307|https://issues.apache.org/jira/browse/KARAF-3307] - Upgrade to Aries JPA API 1.0.2/JPA Container 1.0.2/JPA Blueprint Aries 1.0.4/JPA Container Context 1.0.4
 * [KARAF-3308|https://issues.apache.org/jira/browse/KARAF-3308] - Upgade to Aries Proxy Impl 1.0.4
 * [KARAF-3309|https://issues.apache.org/jira/browse/KARAF-3309] - Upgrade to Felix Maven Bundle Plugin 2.5.3
 * [KARAF-3311|https://issues.apache.org/jira/browse/KARAF-3311] - Upgrade to Pax Tinybundles 2.1.0
 * [KARAF-3312|https://issues.apache.org/jira/browse/KARAF-3312] - Upgrade to maven-assembly-plugin 2.4.1
 * [KARAF-3313|https://issues.apache.org/jira/browse/KARAF-3313] - Upgrade to maven-compiler-plugin 3.2
 * [KARAF-3314|https://issues.apache.org/jira/browse/KARAF-3314] - Upgrade to maven-dependency-plugin 2.9
 * [KARAF-3315|https://issues.apache.org/jira/browse/KARAF-3315] - Upgrade to maven-jar-plugin 2.5
 * [KARAF-3316|https://issues.apache.org/jira/browse/KARAF-3316] - Upgrade to maven-site-plugin 3.4
 * [KARAF-3317|https://issues.apache.org/jira/browse/KARAF-3317] - Upgrade to maven-source-plugin 2.4
 * [KARAF-3318|https://issues.apache.org/jira/browse/KARAF-3318] - Upgrade to maven-surefire-plugin 2.17
 * [KARAF-3319|https://issues.apache.org/jira/browse/KARAF-3319] - Upgrade to maven-war-plugin 2.5
 * [KARAF-3320|https://issues.apache.org/jira/browse/KARAF-3320] - Upgrade to apache-rat-plugin 0.11
 * [KARAF-3321|https://issues.apache.org/jira/browse/KARAF-3321] - Upgrade to build-helper-maven-plugin 1.9.1
 * [KARAF-3322|https://issues.apache.org/jira/browse/KARAF-3322] - Upgrade to exec-maven-plugin 1.3.2
 * [KARAF-3331|https://issues.apache.org/jira/browse/KARAF-3331] - Upgrade to Aries Transaction Manager 1.1.1
 * [KARAF-3338|https://issues.apache.org/jira/browse/KARAF-3338] - Upgrade to Apache POM 15
 * [KARAF-3353|https://issues.apache.org/jira/browse/KARAF-3353] - Upgrade jandex in hibernate feature to avoid wrapping
 * [KARAF-3396|https://issues.apache.org/jira/browse/KARAF-3396] - Upgrade to pax-logging 1.8.1
 * [KARAF-3406|https://issues.apache.org/jira/browse/KARAF-3406] - Upgrade to pax-url 2.2
 * [KARAF-3407|https://issues.apache.org/jira/browse/KARAF-3407] - Upgrade to felix utils 1.6.2
 * [KARAF-3470|https://issues.apache.org/jira/browse/KARAF-3470] - Upgrade to Pax Exam 4.4.0
 * [KARAF-3473|https://issues.apache.org/jira/browse/KARAF-3473] - Upgrade to Pax Web 4.0.2
 * [KARAF-3474|https://issues.apache.org/jira/browse/KARAF-3474] - Use Pax Web 4.1.0
 * [KARAF-3548|https://issues.apache.org/jira/browse/KARAF-3548] - Upgrade to bndlib 2.4.0
 * [KARAF-3549|https://issues.apache.org/jira/browse/KARAF-3549] - Upgrade to commons-codec 1.10
 * [KARAF-3550|https://issues.apache.org/jira/browse/KARAF-3550] - Upgrade to jline 2.12.1
 * [KARAF-3552|https://issues.apache.org/jira/browse/KARAF-3552] - Upgrade to Aries Blueprint CM 1.0.6
 * [KARAF-3553|https://issues.apache.org/jira/browse/KARAF-3553] - Upgrade to Aries Blueprint Core 1.4.3
 * [KARAF-3554|https://issues.apache.org/jira/browse/KARAF-3554] - Upgrade to Aries JNDI Core 1.0.2
 * [KARAF-3556|https://issues.apache.org/jira/browse/KARAF-3556] - Upgrade to Aries Transaction Blueprint 1.0.2
 * [KARAF-3558|https://issues.apache.org/jira/browse/KARAF-3558] - Upgrade to sshd-core 0.13.0
 * [KARAF-3559|https://issues.apache.org/jira/browse/KARAF-3559] - Upgrade to Easymock 3.3.1
 * [KARAF-3560|https://issues.apache.org/jira/browse/KARAF-3560] - Upgrade to junit 4.12
 * [KARAF-3563|https://issues.apache.org/jira/browse/KARAF-3563] - Upgrade to Pax-URL-Aether 2.4.0
 * [KARAF-3586|https://issues.apache.org/jira/browse/KARAF-3586] - Upgrade to pax-logging 1.8.2
 * [KARAF-3587|https://issues.apache.org/jira/browse/KARAF-3587] - Upgrade to pax-url 2.4.0
 * [KARAF-3594|https://issues.apache.org/jira/browse/KARAF-3594] - Upgrade to Aries JMX Core 1.1.3
 * [KARAF-3595|https://issues.apache.org/jira/browse/KARAF-3595] - Upgrade to Aries Transaction JDBC 2.1.1
 * [KARAF-3598|https://issues.apache.org/jira/browse/KARAF-3598] - Upgrade to bundlerepository 2.0.4
 * [KARAF-3599|https://issues.apache.org/jira/browse/KARAF-3599] - Upgrade to configadmin 1.8.2
 * [KARAF-3600|https://issues.apache.org/jira/browse/KARAF-3600] - Upgrade to felix utils 1.8.0
 * [KARAF-3602|https://issues.apache.org/jira/browse/KARAF-3602] - Upgrade to fileinstall 3.5.0
 * [KARAF-3603|https://issues.apache.org/jira/browse/KARAF-3603] - Upgrade to gogo runtime 0.16.2
 * [KARAF-3604|https://issues.apache.org/jira/browse/KARAF-3604] - Upgrade to felix framework 4.9.0-SNAPSHOT
 * [KARAF-3657|https://issues.apache.org/jira/browse/KARAF-3657] - Upgrade to ServiceMix Specs 2.5.0
 * [KARAF-3667|https://issues.apache.org/jira/browse/KARAF-3667] - Upgrade to sshd 0.14.0
 * [KARAF-3681|https://issues.apache.org/jira/browse/KARAF-3681] - Upgrade to Aries Subsystem API 1.1.0/Core 1.2.0
 * [KARAF-3682|https://issues.apache.org/jira/browse/KARAF-3682] - Upgrade to Felix maven-bundle-plugin 2.5.4
 * [KARAF-3686|https://issues.apache.org/jira/browse/KARAF-3686] - Upgrade to Pax Exam 4.5.0
 * [KARAF-3687|https://issues.apache.org/jira/browse/KARAF-3687] - Upgrade to commons-compress 1.9
 * [KARAF-3688|https://issues.apache.org/jira/browse/KARAF-3688] - Upgrade to Pax URL 2.4.1
 * [KARAF-3691|https://issues.apache.org/jira/browse/KARAF-3691] - Upgrade to Felix Metatype 1.0.12
 * [KARAF-3692|https://issues.apache.org/jira/browse/KARAF-3692] - Upgrade to Felix WebConsole 4.2.8
 * [KARAF-3695|https://issues.apache.org/jira/browse/KARAF-3695] - Upgrade to 4.1.2
 * [KARAF-3699|https://issues.apache.org/jira/browse/KARAF-3699] - Upgrade to Felix ConfigAdmin 1.8.4
 * [KARAF-3700|https://issues.apache.org/jira/browse/KARAF-3700] - Upgrade to Felix Framework 5.0.0
 * [KARAF-3701|https://issues.apache.org/jira/browse/KARAF-3701] - Upgrade to Felix Resolver 1.2.0
 * [KARAF-3702|https://issues.apache.org/jira/browse/KARAF-3702] - Upgrade to Felix WebConsole Plugins Event 1.1.2
 * [KARAF-3731|https://issues.apache.org/jira/browse/KARAF-3731] - Upgrade to Spring 4.1.6_RELEASE
 * [KARAF-3735|https://issues.apache.org/jira/browse/KARAF-3735] - Upgrade to Pax Logging 1.8.3
 * [KARAF-3751|https://issues.apache.org/jira/browse/KARAF-3751] - Upgrade to felix connect 0.1.0
 * [KARAF-3756|https://issues.apache.org/jira/browse/KARAF-3756] - Upgrade to Pax CDI 0.12.0

** Documentation
 * [KARAF-2795|https://issues.apache.org/jira/browse/KARAF-2795] - @Option annotation class missing documentation
 * [KARAF-2958|https://issues.apache.org/jira/browse/KARAF-2958] - Use of type-converters in Karaf Security Documentation is incorrect
 * [KARAF-3066|https://issues.apache.org/jira/browse/KARAF-3066] - Improve OpenEJB documentation in manual
 * [KARAF-3167|https://issues.apache.org/jira/browse/KARAF-3167] - Document the configfile override behaviour
 * [KARAF-3439|https://issues.apache.org/jira/browse/KARAF-3439] - [Docs] karaf.lock.delay in example is set to very low number.

** Improvement
 * [KARAF-342|https://issues.apache.org/jira/browse/KARAF-342] - merge webconsole branding package with webconsole
 * [KARAF-399|https://issues.apache.org/jira/browse/KARAF-399] - Support features upgrade
 * [KARAF-452|https://issues.apache.org/jira/browse/KARAF-452] - Support bundle id ranges, symbolic name/version, and regex in shell start/stop etc commands
 * [KARAF-491|https://issues.apache.org/jira/browse/KARAF-491] - A war bundle and the war feature can't be installed as parts of a single feature.
 * [KARAF-636|https://issues.apache.org/jira/browse/KARAF-636] - Support wildcards for instance:start/stop/destroy commands
 * [KARAF-971|https://issues.apache.org/jira/browse/KARAF-971] - Add support for version ranges in features descriptor <repository/> element
 * [KARAF-1113|https://issues.apache.org/jira/browse/KARAF-1113] - Add a web:launch command
 * [KARAF-1169|https://issues.apache.org/jira/browse/KARAF-1169] - Support for hidden features
 * [KARAF-1223|https://issues.apache.org/jira/browse/KARAF-1223] - Support mvn:* urls in karaf-maven-plugin:features-create-kar
 * [KARAF-1250|https://issues.apache.org/jira/browse/KARAF-1250] - Cleanup karaf-maven-plugin
 * [KARAF-1514|https://issues.apache.org/jira/browse/KARAF-1514] - Improve feature file generation to be able to create features out of special feature poms
 * [KARAF-1698|https://issues.apache.org/jira/browse/KARAF-1698] - Add support for role-based JMX authorization
 * [KARAF-1836|https://issues.apache.org/jira/browse/KARAF-1836] - Provide a login module class name completer.
 * [KARAF-2104|https://issues.apache.org/jira/browse/KARAF-2104] - Add regex support in features:* commands
 * [KARAF-2299|https://issues.apache.org/jira/browse/KARAF-2299] - WARN message should be logged when a boot feature installation fails
 * [KARAF-2301|https://issues.apache.org/jira/browse/KARAF-2301] - Improve shell syntax documentation
 * [KARAF-2449|https://issues.apache.org/jira/browse/KARAF-2449] - Include heap dump in the zip created by dev:create-dump
 * [KARAF-2453|https://issues.apache.org/jira/browse/KARAF-2453] - Using features to extend existing configuration
 * [KARAF-2623|https://issues.apache.org/jira/browse/KARAF-2623] - Karaf client script only returns a non zero status if there is exception
 * [KARAF-2638|https://issues.apache.org/jira/browse/KARAF-2638] - Speed up karaf startup a bit by setting the specs timeout to 0
 * [KARAF-2687|https://issues.apache.org/jira/browse/KARAF-2687] - Better thread name for lock and shutdown background threads
 * [KARAF-2698|https://issues.apache.org/jira/browse/KARAF-2698] - Add -l (level) option to log:display/log:tail in order to filter messages only for a given log level (and higher)
 * [KARAF-2749|https://issues.apache.org/jira/browse/KARAF-2749] - BundleSelector should be more "selective"
 * [KARAF-2756|https://issues.apache.org/jira/browse/KARAF-2756] - Define an annotation for completers and retrieve them from the OSGi Service Registry
 * [KARAF-2791|https://issues.apache.org/jira/browse/KARAF-2791] - AddFeaturesToRepoMojo should support read version from dependency features
 * [KARAF-2801|https://issues.apache.org/jira/browse/KARAF-2801] - Fix camel-extras features repository URL
 * [KARAF-2803|https://issues.apache.org/jira/browse/KARAF-2803] - Set org.apache.aries.blueprint.preemptiveShutdown to false by default
 * [KARAF-2808|https://issues.apache.org/jira/browse/KARAF-2808] - Child containers should be able to have additional libs on the classpath
 * [KARAF-2818|https://issues.apache.org/jira/browse/KARAF-2818] - Add ECF to feature repo
 * [KARAF-2831|https://issues.apache.org/jira/browse/KARAF-2831] - Switch to pax url uber bundles
 * [KARAF-2832|https://issues.apache.org/jira/browse/KARAF-2832] - Fix exception when using the features-maven-plugin with non osgi compliant features version
 * [KARAF-2833|https://issues.apache.org/jira/browse/KARAF-2833] - Make core services independant of blueprint
 * [KARAF-2834|https://issues.apache.org/jira/browse/KARAF-2834] - Create features for aries proxy / blueprint and various karaf services
 * [KARAF-2835|https://issues.apache.org/jira/browse/KARAF-2835] - Do not include blueprint in the karaf framework
 * [KARAF-2841|https://issues.apache.org/jira/browse/KARAF-2841] - FeaturesService#listInstalledFeatures() should not return conditional features
 * [KARAF-2842|https://issues.apache.org/jira/browse/KARAF-2842] - Add an option to feature:install to install the bundles without starting it
 * [KARAF-2845|https://issues.apache.org/jira/browse/KARAF-2845] - Move SingleServiceTracker to util
 * [KARAF-2852|https://issues.apache.org/jira/browse/KARAF-2852] - Merge commands into their respective service bundle
 * [KARAF-2855|https://issues.apache.org/jira/browse/KARAF-2855] - The config:list command should sort configurations and properties
 * [KARAF-2857|https://issues.apache.org/jira/browse/KARAF-2857] - Add Solaris x86_64 support to wrapper
 * [KARAF-2859|https://issues.apache.org/jira/browse/KARAF-2859] - Decouple features/core from persistent/core
 * [KARAF-2865|https://issues.apache.org/jira/browse/KARAF-2865] - Avoid uninteresting exception stack traces while running load-test
 * [KARAF-2871|https://issues.apache.org/jira/browse/KARAF-2871] - Command description for http:* commands
 * [KARAF-2875|https://issues.apache.org/jira/browse/KARAF-2875] - Remove useless StringMap class from main
 * [KARAF-2883|https://issues.apache.org/jira/browse/KARAF-2883] - Use better version range in Spring features
 * [KARAF-2901|https://issues.apache.org/jira/browse/KARAF-2901] - Add an option to show bundle version in bundle:tree-show
 * [KARAF-2902|https://issues.apache.org/jira/browse/KARAF-2902] - Separate section for Karaf-xxx headers and sort headers
 * [KARAF-2904|https://issues.apache.org/jira/browse/KARAF-2904] - Use the osgi extender namespace for blueprint
 * [KARAF-2915|https://issues.apache.org/jira/browse/KARAF-2915] - Add flag "-bl Bundle-Level" to install command to set Bundle-Level during bundle installation.
 * [KARAF-2916|https://issues.apache.org/jira/browse/KARAF-2916] - Add fully qualified DN replacement for role search
 * [KARAF-2918|https://issues.apache.org/jira/browse/KARAF-2918] - Provide ability to set a banner prior to user login via ssh
 * [KARAF-2919|https://issues.apache.org/jira/browse/KARAF-2919] - karaf jms:* commands works in non-transacted mode
 * [KARAF-2921|https://issues.apache.org/jira/browse/KARAF-2921] - bin/karaf selecting the wrong Java VM on a computer with Java 8 installed
 * [KARAF-2927|https://issues.apache.org/jira/browse/KARAF-2927] - Allow karaf-maven-plugin integration tests to run in maven offline mode
 * [KARAF-2941|https://issues.apache.org/jira/browse/KARAF-2941] - Let jdbc be more robust against broken data sources
 * [KARAF-2944|https://issues.apache.org/jira/browse/KARAF-2944] - Add jasypt-spring31 bundle to jasypt-encryption feature
 * [KARAF-2949|https://issues.apache.org/jira/browse/KARAF-2949] - Use a jaas role to allow access to system bundles
 * [KARAF-2974|https://issues.apache.org/jira/browse/KARAF-2974] - Mentioning of version number delimiter missing in obr:deploy command help
 * [KARAF-2978|https://issues.apache.org/jira/browse/KARAF-2978] - RBAC-- recognize group configuration when use Publickey to Login
 * [KARAF-2983|https://issues.apache.org/jira/browse/KARAF-2983] - Support window size change signals in Terminal
 * [KARAF-2984|https://issues.apache.org/jira/browse/KARAF-2984] - Improve setenv script to include placeholder for extra java options
 * [KARAF-2985|https://issues.apache.org/jira/browse/KARAF-2985] - Provide a plugin to automatically generate generic requirements / dependencies for karaf internal activators
 * [KARAF-2986|https://issues.apache.org/jira/browse/KARAF-2986] - Use urls for features repository completion mapping
 * [KARAF-2988|https://issues.apache.org/jira/browse/KARAF-2988] - Add support for prerequisites on features
 * [KARAF-2994|https://issues.apache.org/jira/browse/KARAF-2994] - Use the current distribution configuration for default boot features when creating children
 * [KARAF-2995|https://issues.apache.org/jira/browse/KARAF-2995] - RBAC - the shell command acl configuration modification can't take effect unless we restart the Karaf server
 * [KARAF-3001|https://issues.apache.org/jira/browse/KARAF-3001] - RBAC - MBean Server RBAC guard should support wildcard role 
 * [KARAF-3002|https://issues.apache.org/jira/browse/KARAF-3002] - RBAC-add a jmx.acl.whitelist so that all ObjectName in this list will bypass the RBAC
 * [KARAF-3003|https://issues.apache.org/jira/browse/KARAF-3003] - Allow deployment based on generic requirements, bundles and bundle dependencies
 * [KARAF-3016|https://issues.apache.org/jira/browse/KARAF-3016] - Be able to redirect child instance std out in a file
 * [KARAF-3020|https://issues.apache.org/jira/browse/KARAF-3020] - RBAC-put "type" right after the domain when generate the PID from JMX ObjectName
 * [KARAF-3022|https://issues.apache.org/jira/browse/KARAF-3022] - RBAC - support the JMX operation match starts with a wildcard
 * [KARAF-3024|https://issues.apache.org/jira/browse/KARAF-3024] - RBAC - Support wildcard in jmx.acl.....cfg filename
 * [KARAF-3042|https://issues.apache.org/jira/browse/KARAF-3042] - Add a variable (false by default) to enable redirect to karaf.out
 * [KARAF-3045|https://issues.apache.org/jira/browse/KARAF-3045] - Simplify console branding
 * [KARAF-3073|https://issues.apache.org/jira/browse/KARAF-3073] - Add jvisualvm config in monitoring documentation
 * [KARAF-3075|https://issues.apache.org/jira/browse/KARAF-3075] - AdminService should avoid writing file in case just read instance status
 * [KARAF-3111|https://issues.apache.org/jira/browse/KARAF-3111] - Instance/Admin Service should provide more options as part of instance settings 
 * [KARAF-3112|https://issues.apache.org/jira/browse/KARAF-3112] - make stopTimeout of AdminService configurable
 * [KARAF-3119|https://issues.apache.org/jira/browse/KARAF-3119] - Do not allow empty passwords by default for ldap
 * [KARAF-3124|https://issues.apache.org/jira/browse/KARAF-3124] - Provide shell:env command
 * [KARAF-3125|https://issues.apache.org/jira/browse/KARAF-3125] - Add a possibility to cache LDAP credentials
 * [KARAF-3126|https://issues.apache.org/jira/browse/KARAF-3126] - add more specific completer for admin:start|stop command
 * [KARAF-3130|https://issues.apache.org/jira/browse/KARAF-3130] - add admin:change-ssh-host command
 * [KARAF-3134|https://issues.apache.org/jira/browse/KARAF-3134] - Log executed shell commands at debug level
 * [KARAF-3164|https://issues.apache.org/jira/browse/KARAF-3164] - Document exposing JAAS BackendEngineFactory services for the login module
 * [KARAF-3166|https://issues.apache.org/jira/browse/KARAF-3166] - Add SyncopeLoginModule (including backend)
 * [KARAF-3222|https://issues.apache.org/jira/browse/KARAF-3222] - Command description for osgi:shutdown could be improved
 * [KARAF-3246|https://issues.apache.org/jira/browse/KARAF-3246] - Rename jpa features as jpa/jpa20 and jpa21
 * [KARAF-3255|https://issues.apache.org/jira/browse/KARAF-3255] - Document jasypt property placeholder
 * [KARAF-3282|https://issues.apache.org/jira/browse/KARAF-3282] - highlight local classes/resources in "bundle:classes" command
 * [KARAF-3293|https://issues.apache.org/jira/browse/KARAF-3293] - more fine-grained way to specify the jmx.acl.whitelist.cfg 
 * [KARAF-3367|https://issues.apache.org/jira/browse/KARAF-3367] - add additional configuration options when use wrapper:install 
 * [KARAF-3368|https://issues.apache.org/jira/browse/KARAF-3368] - Support reference:file:xxx urls in startup.properties
 * [KARAF-3372|https://issues.apache.org/jira/browse/KARAF-3372] - only register HUP signal handler for non-windows platform
 * [KARAF-3373|https://issues.apache.org/jira/browse/KARAF-3373] - Log lower level root cause exception in LDAPLoginModule.doLogin()
 * [KARAF-3380|https://issues.apache.org/jira/browse/KARAF-3380] - Convert mojos to use annotations
 * [KARAF-3381|https://issues.apache.org/jira/browse/KARAF-3381] - Remove deprecated methods in InstanceService / Instance
 * [KARAF-3382|https://issues.apache.org/jira/browse/KARAF-3382] - Support configuration for custom LDAP group to JAAS role mapping
 * [KARAF-3386|https://issues.apache.org/jira/browse/KARAF-3386] - Improve InstallKarsMojo to support reference: protocol and additional feature repositories
 * [KARAF-3388|https://issues.apache.org/jira/browse/KARAF-3388] - Fix blueprint-jasypt tests
 * [KARAF-3389|https://issues.apache.org/jira/browse/KARAF-3389] - Move security configurations (for commands and jmx) to their respective features
 * [KARAF-3391|https://issues.apache.org/jira/browse/KARAF-3391] - Move Base64 into karaf util
 * [KARAF-3393|https://issues.apache.org/jira/browse/KARAF-3393] - Provide ready to use jpa20 and jpa21 features
 * [KARAF-3398|https://issues.apache.org/jira/browse/KARAF-3398] - Improve display of package:imports
 * [KARAF-3403|https://issues.apache.org/jira/browse/KARAF-3403] - bin/client Utility Throws ArrayIndexOutOfBoundsException 
 * [KARAF-3411|https://issues.apache.org/jira/browse/KARAF-3411] - windows startup scripts don't handle setenv.bat correctly
 * [KARAF-3418|https://issues.apache.org/jira/browse/KARAF-3418] - Add getFeatureRepositoryName(Uri uri) to FeatureService
 * [KARAF-3421|https://issues.apache.org/jira/browse/KARAF-3421] - Add a variable for the debug port number.
 * [KARAF-3446|https://issues.apache.org/jira/browse/KARAF-3446] - avoid Karaf client script "logout" command throwing an exception
 * [KARAF-3452|https://issues.apache.org/jira/browse/KARAF-3452] - Upgrade to maven-release-plugin 2.5.1
 * [KARAF-3453|https://issues.apache.org/jira/browse/KARAF-3453] - Create jolokia feature
 * [KARAF-3461|https://issues.apache.org/jira/browse/KARAF-3461] - bin/karaf doesn't use the provided KARAF_HOME
 * [KARAF-3478|https://issues.apache.org/jira/browse/KARAF-3478] - Switch jdbc commands to use pax-jdbc-config and pax-jdbc-config-pool
 * [KARAF-3500|https://issues.apache.org/jira/browse/KARAF-3500] - NPE throws when executing "bin/client shutdown"
 * [KARAF-3513|https://issues.apache.org/jira/browse/KARAF-3513] - JMXConnectorServer should be able to pick up the new KeystoreInstance available in container
 * [KARAF-3528|https://issues.apache.org/jira/browse/KARAF-3528] - When updating bundles, use the Bundle-UpdateLocation header
 * [KARAF-3529|https://issues.apache.org/jira/browse/KARAF-3529] - Make sure the framework resolver uses the already computed resolution
 * [KARAF-3539|https://issues.apache.org/jira/browse/KARAF-3539] - Ability to create headless shell session with a parent
 * [KARAF-3545|https://issues.apache.org/jira/browse/KARAF-3545] - The bundle:list command should display ellipsis when displaying long bundle locations
 * [KARAF-3575|https://issues.apache.org/jira/browse/KARAF-3575] - Enhance diagnostic core to allow "external" dump providers
 * [KARAF-3576|https://issues.apache.org/jira/browse/KARAF-3576] - Optimize GuardProxyCatalog#getServiceInvocationRoles
 * [KARAF-3577|https://issues.apache.org/jira/browse/KARAF-3577] - Optimize SecuredCommandConfigTransformer#generateServiceGuardConfig
 * [KARAF-3580|https://issues.apache.org/jira/browse/KARAF-3580] - FeaturesService expose register and unregister FeaturesListener methods
 * [KARAF-3581|https://issues.apache.org/jira/browse/KARAF-3581] - Optimize a bit startup time
 * [KARAF-3583|https://issues.apache.org/jira/browse/KARAF-3583] - Add option to configure log level in the client script
 * [KARAF-3584|https://issues.apache.org/jira/browse/KARAF-3584] - Add  metadata generation in the karaf-services-maven-plugin
 * [KARAF-3590|https://issues.apache.org/jira/browse/KARAF-3590] - Don't log Passwords in clear text
 * [KARAF-3619|https://issues.apache.org/jira/browse/KARAF-3619] - Add decanter feature repo to features.repo.cfg file for easier installation
 * [KARAF-3621|https://issues.apache.org/jira/browse/KARAF-3621] - Generate a more secure host key for SSH by default
 * [KARAF-3627|https://issues.apache.org/jira/browse/KARAF-3627] - Add bundle revision information to bundle:list command
 * [KARAF-3633|https://issues.apache.org/jira/browse/KARAF-3633] - Help mechanism improvements
 * [KARAF-3643|https://issues.apache.org/jira/browse/KARAF-3643] - Persistence provider features should not load aries jpa
 * [KARAF-3652|https://issues.apache.org/jira/browse/KARAF-3652] - Make RequestedState more obvious in API
 * [KARAF-3666|https://issues.apache.org/jira/browse/KARAF-3666] - Simplify Conditional#asFeature to have no arguments
 * [KARAF-3673|https://issues.apache.org/jira/browse/KARAF-3673] - Align classmate version between hibernate and hibernate-validator features
 * [KARAF-3693|https://issues.apache.org/jira/browse/KARAF-3693] - only update the instances.properties when the "read" operation detect instance pid changes
 * [KARAF-3723|https://issues.apache.org/jira/browse/KARAF-3723] - avoid the NoSuchElementException when use bin/client and there's no entry in the etc/user.properties
 * [KARAF-3738|https://issues.apache.org/jira/browse/KARAF-3738] - Karaf client should be able to read environment variables
 * [KARAF-3739|https://issues.apache.org/jira/browse/KARAF-3739] - Add eventadmin feature as featuresBoot in standard distribution

** New Feature
 * [KARAF-325|https://issues.apache.org/jira/browse/KARAF-325] - Allow features:install xyz*
 * [KARAF-365|https://issues.apache.org/jira/browse/KARAF-365] - Merge .kar files in features-maven-plugin during "add-features-to-repo" goal
 * [KARAF-413|https://issues.apache.org/jira/browse/KARAF-413] - Tab completion on path when installing bundles
 * [KARAF-502|https://issues.apache.org/jira/browse/KARAF-502] - Add the function to show wired relations of deployed bundles
 * [KARAF-522|https://issues.apache.org/jira/browse/KARAF-522] - Download from provisioning server retry
 * [KARAF-751|https://issues.apache.org/jira/browse/KARAF-751] - Provide a Timer Service in Karaf
 * [KARAF-1130|https://issues.apache.org/jira/browse/KARAF-1130] - Add profile feature
 * [KARAF-2069|https://issues.apache.org/jira/browse/KARAF-2069] - Provide a less pager command
 * [KARAF-2070|https://issues.apache.org/jira/browse/KARAF-2070] - Add support of !$ to recall the last command argument
 * [KARAF-2760|https://issues.apache.org/jira/browse/KARAF-2760] - Monitor etc/user.properties to automatically encrypt passwords
 * [KARAF-2805|https://issues.apache.org/jira/browse/KARAF-2805] - Provide a clean console and command model
 * [KARAF-2848|https://issues.apache.org/jira/browse/KARAF-2848] - Add MSSQL datasource type
 * [KARAF-2888|https://issues.apache.org/jira/browse/KARAF-2888] - New FeaturesService based on the real OSGi resolver
 * [KARAF-2900|https://issues.apache.org/jira/browse/KARAF-2900] - Allow generic requirements as condition to features
 * [KARAF-2911|https://issues.apache.org/jira/browse/KARAF-2911] - Support for Aries OSGi subsystems
 * [KARAF-2917|https://issues.apache.org/jira/browse/KARAF-2917] - Command to display bundle id
 * [KARAF-2923|https://issues.apache.org/jira/browse/KARAF-2923] - Region support in features service
 * [KARAF-2930|https://issues.apache.org/jira/browse/KARAF-2930] - Support for OSGi Repository spec in resolution
 * [KARAF-2942|https://issues.apache.org/jira/browse/KARAF-2942] - Require JDK7 for Karaf 4.x
 * [KARAF-2948|https://issues.apache.org/jira/browse/KARAF-2948] - Add su and sudo commands
 * [KARAF-2952|https://issues.apache.org/jira/browse/KARAF-2952] - Add a lifecycle for features
 * [KARAF-2961|https://issues.apache.org/jira/browse/KARAF-2961] - When a feature is generated from a bundle project, include that bundle in the feature
 * [KARAF-3006|https://issues.apache.org/jira/browse/KARAF-3006] - Provide an EventAdmin based audit trail for JAAS
 * [KARAF-3025|https://issues.apache.org/jira/browse/KARAF-3025] - Add an instance:restart command
 * [KARAF-3026|https://issues.apache.org/jira/browse/KARAF-3026] - Add a dependency="true" flag on feature dependencies
 * [KARAF-3034|https://issues.apache.org/jira/browse/KARAF-3034] - Automatically create data sources from configuration files
 * [KARAF-3058|https://issues.apache.org/jira/browse/KARAF-3058] - add backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
 * [KARAF-3059|https://issues.apache.org/jira/browse/KARAF-3059] - add a flag to bin/client so that it can read private key from a specified location
 * [KARAF-3104|https://issues.apache.org/jira/browse/KARAF-3104] - Add the connector feature from ServiceMix
 * [KARAF-3205|https://issues.apache.org/jira/browse/KARAF-3205] - Refactor create-dump to be more low level
 * [KARAF-3228|https://issues.apache.org/jira/browse/KARAF-3228] - Add Spring 4.1.2.RELEASE_1 features
 * [KARAF-3289|https://issues.apache.org/jira/browse/KARAF-3289] - Add a while loop command
 * [KARAF-3387|https://issues.apache.org/jira/browse/KARAF-3387] - Add a verify-features goal to validate the feature with a real OSGi resolution
 * [KARAF-3404|https://issues.apache.org/jira/browse/KARAF-3404] - Add a notion of profiles to karaf
 * [KARAF-3405|https://issues.apache.org/jira/browse/KARAF-3405] - Support for "mostly static" karaf instances
 * [KARAF-3410|https://issues.apache.org/jira/browse/KARAF-3410] - Add a maven proxy servlet
 * [KARAF-3434|https://issues.apache.org/jira/browse/KARAF-3434] - Support env:XXX subtitution for environment variables
 * [KARAF-3435|https://issues.apache.org/jira/browse/KARAF-3435] - Support default/alternate values for variable substitution
 * [KARAF-3455|https://issues.apache.org/jira/browse/KARAF-3455] - Support for custom command parsers
 * [KARAF-3481|https://issues.apache.org/jira/browse/KARAF-3481] - Upgrade to OSGi r6
 * [KARAF-3524|https://issues.apache.org/jira/browse/KARAF-3524] - Features on conditionals are not installed
 * [KARAF-3541|https://issues.apache.org/jira/browse/KARAF-3541] - Move Karaf boot libraries into their own folder
 * [KARAF-3546|https://issues.apache.org/jira/browse/KARAF-3546] - Provide a programmatic way to build custom karaf distributions outside of maven
 * [KARAF-3574|https://issues.apache.org/jira/browse/KARAF-3574] - Improve tooling support for karaf libraries
 * [KARAF-3592|https://issues.apache.org/jira/browse/KARAF-3592] - Add jaas commands to create group and list group
 * [KARAF-3635|https://issues.apache.org/jira/browse/KARAF-3635] - Provide a black list for features

** Question
 * [KARAF-3264|https://issues.apache.org/jira/browse/KARAF-3264] - What is the AND operator in shell:if ?

** Task
 * [KARAF-2765|https://issues.apache.org/jira/browse/KARAF-2765] - Upgrade to Spring 3.2.7.RELEASE
 * [KARAF-2767|https://issues.apache.org/jira/browse/KARAF-2767] - Update to commons-fileupload 1.3.1
 * [KARAF-2844|https://issues.apache.org/jira/browse/KARAF-2844] - Sync skipTests and invoker.skip
 * [KARAF-3068|https://issues.apache.org/jira/browse/KARAF-3068] - Update to Spring 3.2.9.RELEASE_1
 * [KARAF-3401|https://issues.apache.org/jira/browse/KARAF-3401] - Typo in users.properties
 * [KARAF-3422|https://issues.apache.org/jira/browse/KARAF-3422] - Upgrade pax-url dependency to 2.3.0
 * [KARAF-3464|https://issues.apache.org/jira/browse/KARAF-3464] - Upgrade to Pax CDI 0.11.0
 * [KARAF-3629|https://issues.apache.org/jira/browse/KARAF-3629] - Use the resolver service from the system bundle

** Test
 * [KARAF-3752|https://issues.apache.org/jira/browse/KARAF-3752] - Check that resolver does not mandate required services to be present

** Wish
 * [KARAF-3444|https://issues.apache.org/jira/browse/KARAF-3444] - ExecuteAction - consider log level INFO changing to DEBUG




                    Apache Karaf 4.0.0.M2
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M2 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  The 4.0.x line will ship with OSGi Rev5 support via Felix 4.4.1 and Equinox 3.9.1-v20140110-1610, and a completely refactored internal framework without Blueprint for internal usage. From a users point of view these changes will yield a smaller, more efficient Karaf core. There will be a Blueprint feature present in Karaf so that you can easily install Blueprint based applications. You will always be capable of using Blueprint in Karaf. So the main difference from a user perspective is that you’d need to depend on the Blueprint service if you need it. New features since the M1 release include: Support for custom command parsers, a verify-features goal to validate the feature with a real OSGi resolution, and a backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule. 

 For more information, please see the below changelog:

 ChangeLog:
 ----------

** Bug
 * [KARAF-2153|https://issues.apache.org/jira/browse/KARAF-2153] - wrong path in JAVA_ENDORSED_DIRS and JAVA_EXT_DIRS in bin/karaf script from snapshots
 * [KARAF-3052|https://issues.apache.org/jira/browse/KARAF-3052] - Allow passing through custom ldap properties
 * [KARAF-3054|https://issues.apache.org/jira/browse/KARAF-3054] - client doesn't load using IBM JDK
 * [KARAF-3055|https://issues.apache.org/jira/browse/KARAF-3055] - tabbing in subshell displays more than commands of the current subshell
 * [KARAF-3056|https://issues.apache.org/jira/browse/KARAF-3056] - Upgrade to JLine 2.12
 * [KARAF-3061|https://issues.apache.org/jira/browse/KARAF-3061] - Problems with jaas:realms / jaas:manage commands when using multiple realms of the same name
 * [KARAF-3064|https://issues.apache.org/jira/browse/KARAF-3064] - SSH Console regenerates the SSH key on each restart
 * [KARAF-3071|https://issues.apache.org/jira/browse/KARAF-3071] - etc/org.ops4j.pax.url.mvn.cfg file contains replaced string in instances that should not be
 * [KARAF-3072|https://issues.apache.org/jira/browse/KARAF-3072] - Instance etc files are not sync with the root etc files
 * [KARAF-3085|https://issues.apache.org/jira/browse/KARAF-3085] - features:chooseurl/feature:repo-add should support "real" version range
 * [KARAF-3092|https://issues.apache.org/jira/browse/KARAF-3092] - Remove ${services-${karaf.framework}} variables from org.osgi.framework.system.capabilities
 * [KARAF-3096|https://issues.apache.org/jira/browse/KARAF-3096] - Karaf doesn't start with Equinox 3.9.1
 * [KARAF-3098|https://issues.apache.org/jira/browse/KARAF-3098] - Check the usage of config.properties in main module
 * [KARAF-3103|https://issues.apache.org/jira/browse/KARAF-3103] - config:edit does not correctly handle configuration visibility for --factory calls.
 * [KARAF-3105|https://issues.apache.org/jira/browse/KARAF-3105] - Cannot use LDAPLoginModule with ActiveDirectory
 * [KARAF-3115|https://issues.apache.org/jira/browse/KARAF-3115] - add address flag when create a child instance
 * [KARAF-3123|https://issues.apache.org/jira/browse/KARAF-3123] - BundleWatcherImpl tries to stop bundle fragments
 * [KARAF-3127|https://issues.apache.org/jira/browse/KARAF-3127] - bin/instance  script doesn't work
 * [KARAF-3128|https://issues.apache.org/jira/browse/KARAF-3128] - Update ops4j/oss sonatype repositories URL
 * [KARAF-3129|https://issues.apache.org/jira/browse/KARAF-3129] - RAT plugin error on ssh key files
 * [KARAF-3138|https://issues.apache.org/jira/browse/KARAF-3138] - Having eventadmin listed as a boot features cause problems in other bundles startup
 * [KARAF-3149|https://issues.apache.org/jira/browse/KARAF-3149] - Karaf chooseurl for jclouds is wrong
 * [KARAF-3150|https://issues.apache.org/jira/browse/KARAF-3150] - kar:install doesn't support classifier in a MVN URL
 * [KARAF-3151|https://issues.apache.org/jira/browse/KARAF-3151] - Blueprint managed-properties doesn't call the update-method
 * [KARAF-3154|https://issues.apache.org/jira/browse/KARAF-3154] - Feature repo org.ops4j.pax.cdi-0.7.0 contains broken feature
 * [KARAF-3158|https://issues.apache.org/jira/browse/KARAF-3158] - Incorrect javax.annotation version for java7
 * [KARAF-3159|https://issues.apache.org/jira/browse/KARAF-3159] - Fix feature deployer documentation about auto installation of the features
 * [KARAF-3162|https://issues.apache.org/jira/browse/KARAF-3162] - Update the security documentation as the PropertiesConverter doesn't exist anymore
 * [KARAF-3170|https://issues.apache.org/jira/browse/KARAF-3170] - Java8 packages related to JavaFX are missing
 * [KARAF-3176|https://issues.apache.org/jira/browse/KARAF-3176] - sshRole and jmxRole are not functionnal
 * [KARAF-3180|https://issues.apache.org/jira/browse/KARAF-3180] - openwebbeans feature doesn't install
 * [KARAF-3192|https://issues.apache.org/jira/browse/KARAF-3192] - Don't throw IllegalStateException when can't find attribute for a certain bean
 * [KARAF-3196|https://issues.apache.org/jira/browse/KARAF-3196] - Export sun.misc package from the system bundle
 * [KARAF-3197|https://issues.apache.org/jira/browse/KARAF-3197] - Can't type anything in the console on Windows platform
 * [KARAF-3204|https://issues.apache.org/jira/browse/KARAF-3204] - Avoid calls to Configuration#setBundleLocation(null) which are not needed
 * [KARAF-3210|https://issues.apache.org/jira/browse/KARAF-3210] - karaf:features-generate-descriptor fails with Maven 3.1.x and 3.2.x : required class was missing ... org/sonatype/aether/RepositorySystem
 * [KARAF-3211|https://issues.apache.org/jira/browse/KARAF-3211] - Error while installing transaction feature
 * [KARAF-3212|https://issues.apache.org/jira/browse/KARAF-3212] - karaf.data variable not correctly resolved while installing the pax-http feature
 * [KARAF-3213|https://issues.apache.org/jira/browse/KARAF-3213] - ConcurrentModification exception in FileInstall/Upgrade to Felix FileInstall 3.4.1
 * [KARAF-3224|https://issues.apache.org/jira/browse/KARAF-3224] - Support wrap URL with option
 * [KARAF-3230|https://issues.apache.org/jira/browse/KARAF-3230] - jndi feature doesn't install
 * [KARAF-3232|https://issues.apache.org/jira/browse/KARAF-3232] - Feature installation looks for MANIFEST as first position in the jar
 * [KARAF-3248|https://issues.apache.org/jira/browse/KARAF-3248] - bundle:refresh doesn't work without argument
 * [KARAF-3249|https://issues.apache.org/jira/browse/KARAF-3249] - Error: "usage: dirname path" when Karaf is located under path with spaces
 * [KARAF-3250|https://issues.apache.org/jira/browse/KARAF-3250] - JVM options ignored on Windows
 * [KARAF-3251|https://issues.apache.org/jira/browse/KARAF-3251] - Karaf maven plugin does not install bundles in conditional as needed
 * [KARAF-3261|https://issues.apache.org/jira/browse/KARAF-3261] - jdbc command (using JdbcConnector.java) does not honour service ranking and throws IllegalArgumentException instead
 * [KARAF-3273|https://issues.apache.org/jira/browse/KARAF-3273] - zodiac.springsource.com repo is missing from the default repository set (required for gemini-blueprint feature)
 * [KARAF-3284|https://issues.apache.org/jira/browse/KARAF-3284] - The shell-log bundle should not import org.apache.log4j.* package
 * [KARAF-3288|https://issues.apache.org/jira/browse/KARAF-3288] - karaf script doesn't start on Solaris if JAVA_HOME is not set
 * [KARAF-3325|https://issues.apache.org/jira/browse/KARAF-3325] - Karaf throws SocketTimeoutException and exits after 49 days
 * [KARAF-3327|https://issues.apache.org/jira/browse/KARAF-3327] - Incorrect LC_CTYPE parsing
 * [KARAF-3329|https://issues.apache.org/jira/browse/KARAF-3329] - javax.annotation-version in jre.properties does not reflect version of Java SE
 * [KARAF-3330|https://issues.apache.org/jira/browse/KARAF-3330] - embedded Karaf web demo doesn't deploy since 3.0.2
 * [KARAF-3333|https://issues.apache.org/jira/browse/KARAF-3333] - CXF 3.0.1 feature install fails in karaf
 * [KARAF-3335|https://issues.apache.org/jira/browse/KARAF-3335] - Endorsed org.apache.karaf.exception-3.0.2 jar causes issues with Java 8 Nashorn scripts
 * [KARAF-3350|https://issues.apache.org/jira/browse/KARAF-3350] - The log:display command fails with CNFE if the pax-logging-service bundle has been refreshed
 * [KARAF-3352|https://issues.apache.org/jira/browse/KARAF-3352] - Generate html and pdf artifacts in the manual
 * [KARAF-3365|https://issues.apache.org/jira/browse/KARAF-3365] - typo in org.ops4j.pax.url.mvn.cfg
 * [KARAF-3369|https://issues.apache.org/jira/browse/KARAF-3369] - karaf-maven-plugin 3.0.2 breaks deployment to Nexus
 * [KARAF-3370|https://issues.apache.org/jira/browse/KARAF-3370] - itests using ssh or cdi related fail
 * [KARAF-3377|https://issues.apache.org/jira/browse/KARAF-3377] - Starting Karaf on Windows changes console title
 * [KARAF-3379|https://issues.apache.org/jira/browse/KARAF-3379] - jpa feature incompatible to hibernate 4.3 feature
 * [KARAF-3383|https://issues.apache.org/jira/browse/KARAF-3383] - Avoid exception causing completion to fail if a completer class can not be loaded (because of an optional package for example)
 * [KARAF-3384|https://issues.apache.org/jira/browse/KARAF-3384] - Commands are not unregistered correctly when a bundle is stopped
 * [KARAF-3385|https://issues.apache.org/jira/browse/KARAF-3385] - MultiException stacktraces do not display inner causes
 * [KARAF-3397|https://issues.apache.org/jira/browse/KARAF-3397] - FeaturesServiceMBeanImpl throws an Exception when listening the features
 * [KARAF-3399|https://issues.apache.org/jira/browse/KARAF-3399] - The host is not refreshed if a new fragment is installed
 * [KARAF-3408|https://issues.apache.org/jira/browse/KARAF-3408] - feature:repo-refresh doesn't work
 * [KARAF-3412|https://issues.apache.org/jira/browse/KARAF-3412] - should add javax.management.builder.initial flag for Karaf child instance
 * [KARAF-3413|https://issues.apache.org/jira/browse/KARAF-3413] - should also associate the role to run executeScript
 * [KARAF-3414|https://issues.apache.org/jira/browse/KARAF-3414] - SshCommandTestBase uses some deprecated sshd APIs
 * [KARAF-3416|https://issues.apache.org/jira/browse/KARAF-3416] - AutoEncryptionSupport randomly raises NullPointerException at startup
 * [KARAF-3420|https://issues.apache.org/jira/browse/KARAF-3420] - Java Debug options are Pre Java 5.0
 * [KARAF-3423|https://issues.apache.org/jira/browse/KARAF-3423] - Can't connect to a running instance with instance:connect
 * [KARAF-3425|https://issues.apache.org/jira/browse/KARAF-3425] - Need a solution to add a "specific version" of a feature in karaf-maven-plugin 
 * [KARAF-3428|https://issues.apache.org/jira/browse/KARAF-3428] - Upgrade to Pax CDI 0.10.0
 * [KARAF-3430|https://issues.apache.org/jira/browse/KARAF-3430] - User name/password missing in connection factory created with jms:create
 * [KARAF-3441|https://issues.apache.org/jira/browse/KARAF-3441] - The admin:stop Command Does Not Zero Out Root Container PID
 * [KARAF-3459|https://issues.apache.org/jira/browse/KARAF-3459] - PropertiesLoginModule throws NPE when callbackHandler is null
 * [KARAF-3460|https://issues.apache.org/jira/browse/KARAF-3460] - NPE in AutoEncryptionSupport.run
 * [KARAF-3487|https://issues.apache.org/jira/browse/KARAF-3487] - config:edit '(service.factorypid=myconfig)' throws NPE
 * [KARAF-3488|https://issues.apache.org/jira/browse/KARAF-3488] - Exiting Karaf (shutdown command or CTRL-D) displays "CLOSING SESSION!" on System.out
 * [KARAF-3492|https://issues.apache.org/jira/browse/KARAF-3492] - Can't connect to Karaf sshd using key authentication
 * [KARAF-3499|https://issues.apache.org/jira/browse/KARAF-3499] - Missing properties on the eventadmin events for jaas 
 * [KARAF-3501|https://issues.apache.org/jira/browse/KARAF-3501] - bin/client script doesn't work in latest 4.0 SNAPSHOT kit

** Dependency upgrade
 * [KARAF-3046|https://issues.apache.org/jira/browse/KARAF-3046] - Upgrade to gogo runtime 0.12.1
 * [KARAF-3049|https://issues.apache.org/jira/browse/KARAF-3049] - Upgrade to sshd 0.11
 * [KARAF-3101|https://issues.apache.org/jira/browse/KARAF-3101] - Upgrade to Spring 4.0.5.RELEASE
 * [KARAF-3106|https://issues.apache.org/jira/browse/KARAF-3106] - Upgrade to blueprint core 1.4.1
 * [KARAF-3109|https://issues.apache.org/jira/browse/KARAF-3109] - Upgrade to Pax Exam 4.0.0
 * [KARAF-3116|https://issues.apache.org/jira/browse/KARAF-3116] - Upgrade to Felix Framework 4.4.1
 * [KARAF-3120|https://issues.apache.org/jira/browse/KARAF-3120] - Upgrade to Aries JPA 1.0.2
 * [KARAF-3121|https://issues.apache.org/jira/browse/KARAF-3121] - Upgrade to Aries Blueprint Annotation 1.0.1
 * [KARAF-3131|https://issues.apache.org/jira/browse/KARAF-3131] - Upgrade to Hibernate 4.2.15.Final/4.3.6.Final
 * [KARAF-3140|https://issues.apache.org/jira/browse/KARAF-3140] - Upgrade to sshd 0.12.0
 * [KARAF-3156|https://issues.apache.org/jira/browse/KARAF-3156] - Upgrade to Pax CDI 0.8.0
 * [KARAF-3157|https://issues.apache.org/jira/browse/KARAF-3157] - Upgrade to Pax Exam 4.1.0
 * [KARAF-3171|https://issues.apache.org/jira/browse/KARAF-3171] - Upgrade to Aries Blueprint CM 1.0.4
 * [KARAF-3182|https://issues.apache.org/jira/browse/KARAF-3182] - Upgrade to Felix EventAdmin 1.4.0
 * [KARAF-3183|https://issues.apache.org/jira/browse/KARAF-3183] - Upgrade to bndlib 2.3.0
 * [KARAF-3184|https://issues.apache.org/jira/browse/KARAF-3184] - Upgrade to commons-beanutils 1.9.2
 * [KARAF-3185|https://issues.apache.org/jira/browse/KARAF-3185] - Upgrade to Felix BundleRepository 2.0.2
 * [KARAF-3198|https://issues.apache.org/jira/browse/KARAF-3198] - Cleanup Pax Swissbox dependencies
 * [KARAF-3201|https://issues.apache.org/jira/browse/KARAF-3201] - Upgrade to pax-logging 1.7.4
 * [KARAF-3226|https://issues.apache.org/jira/browse/KARAF-3226] - Upgrade to Spring 4.0.7.RELEASE
 * [KARAF-3227|https://issues.apache.org/jira/browse/KARAF-3227] - Upgrade to Spring 3.2.11.RELEASE
 * [KARAF-3229|https://issues.apache.org/jira/browse/KARAF-3229] - Upgrade to Felix EventAdmin 1.4.2
 * [KARAF-3233|https://issues.apache.org/jira/browse/KARAF-3233] - Upgrade to Pax Exam 4.2.0
 * [KARAF-3243|https://issues.apache.org/jira/browse/KARAF-3243] - Upgrade to Pax URL 2.2.0
 * [KARAF-3265|https://issues.apache.org/jira/browse/KARAF-3265] - Upgrade to Aries Blueprint CM 1.0.5
 * [KARAF-3281|https://issues.apache.org/jira/browse/KARAF-3281] - Upgrade to Pax Logging 1.8.0 (log4j v2 support)
 * [KARAF-3290|https://issues.apache.org/jira/browse/KARAF-3290] - Upgrade to felix gogo runtime 0.14.0
 * [KARAF-3291|https://issues.apache.org/jira/browse/KARAF-3291] - Upgrade to Pax Exam 4.3.0
 * [KARAF-3304|https://issues.apache.org/jira/browse/KARAF-3304] - Upgrade to Pax CDI 0.9.0
 * [KARAF-3305|https://issues.apache.org/jira/browse/KARAF-3305] - Upgrade to Aries Blueprint Core 1.4.2
 * [KARAF-3306|https://issues.apache.org/jira/browse/KARAF-3306] - Upgrade to Aries JNDI API 1.1.0
 * [KARAF-3307|https://issues.apache.org/jira/browse/KARAF-3307] - Upgrade to Aries JPA API 1.0.2/JPA Container 1.0.2/JPA Blueprint Aries 1.0.4/JPA Container Context 1.0.4
 * [KARAF-3308|https://issues.apache.org/jira/browse/KARAF-3308] - Upgade to Aries Proxy Impl 1.0.4
 * [KARAF-3309|https://issues.apache.org/jira/browse/KARAF-3309] - Upgrade to Felix Maven Bundle Plugin 2.5.3
 * [KARAF-3311|https://issues.apache.org/jira/browse/KARAF-3311] - Upgrade to Pax Tinybundles 2.1.0
 * [KARAF-3312|https://issues.apache.org/jira/browse/KARAF-3312] - Upgrade to maven-assembly-plugin 2.4.1
 * [KARAF-3313|https://issues.apache.org/jira/browse/KARAF-3313] - Upgrade to maven-compiler-plugin 3.2
 * [KARAF-3314|https://issues.apache.org/jira/browse/KARAF-3314] - Upgrade to maven-dependency-plugin 2.9
 * [KARAF-3315|https://issues.apache.org/jira/browse/KARAF-3315] - Upgrade to maven-jar-plugin 2.5
 * [KARAF-3316|https://issues.apache.org/jira/browse/KARAF-3316] - Upgrade to maven-site-plugin 3.4
 * [KARAF-3317|https://issues.apache.org/jira/browse/KARAF-3317] - Upgrade to maven-source-plugin 2.4
 * [KARAF-3318|https://issues.apache.org/jira/browse/KARAF-3318] - Upgrade to maven-surefire-plugin 2.17
 * [KARAF-3319|https://issues.apache.org/jira/browse/KARAF-3319] - Upgrade to maven-war-plugin 2.5
 * [KARAF-3320|https://issues.apache.org/jira/browse/KARAF-3320] - Upgrade to apache-rat-plugin 0.11
 * [KARAF-3321|https://issues.apache.org/jira/browse/KARAF-3321] - Upgrade to build-helper-maven-plugin 1.9.1
 * [KARAF-3322|https://issues.apache.org/jira/browse/KARAF-3322] - Upgrade to exec-maven-plugin 1.3.2
 * [KARAF-3331|https://issues.apache.org/jira/browse/KARAF-3331] - Upgrade to Aries Transaction Manager 1.1.1
 * [KARAF-3338|https://issues.apache.org/jira/browse/KARAF-3338] - Upgrade to Apache POM 15
 * [KARAF-3353|https://issues.apache.org/jira/browse/KARAF-3353] - Upgrade jandex in hibernate feature to avoid wrapping
 * [KARAF-3396|https://issues.apache.org/jira/browse/KARAF-3396] - Upgrade to pax-logging 1.8.1
 * [KARAF-3406|https://issues.apache.org/jira/browse/KARAF-3406] - Upgrade to pax-url 2.2
 * [KARAF-3407|https://issues.apache.org/jira/browse/KARAF-3407] - Upgrade to felix utils 1.6.2
 * [KARAF-3470|https://issues.apache.org/jira/browse/KARAF-3470] - Upgrade to Pax Exam 4.4.0
 * [KARAF-3473|https://issues.apache.org/jira/browse/KARAF-3473] - Upgrade to Pax Web 4.0.2
 * [KARAF-3474|https://issues.apache.org/jira/browse/KARAF-3474] - Use Pax Web 4.1.0

** Documentation
 * [KARAF-3066|https://issues.apache.org/jira/browse/KARAF-3066] - Improve OpenEJB documentation in manual
 * [KARAF-3167|https://issues.apache.org/jira/browse/KARAF-3167] - Document the configfile override behaviour

** Improvement
 * [KARAF-1025|https://issues.apache.org/jira/browse/KARAF-1025] - Explicit Property Name in Karaf System Console
 * [KARAF-3045|https://issues.apache.org/jira/browse/KARAF-3045] - Simplify console branding
 * [KARAF-3073|https://issues.apache.org/jira/browse/KARAF-3073] - Add jvisualvm config in monitoring documentation
 * [KARAF-3075|https://issues.apache.org/jira/browse/KARAF-3075] - AdminService should avoid writing file in case just read instance status
 * [KARAF-3111|https://issues.apache.org/jira/browse/KARAF-3111] - Instance/Admin Service should provide more options as part of instance settings 
 * [KARAF-3112|https://issues.apache.org/jira/browse/KARAF-3112] - make stopTimeout of AdminService configurable
 * [KARAF-3119|https://issues.apache.org/jira/browse/KARAF-3119] - Do not allow empty passwords by default for ldap
 * [KARAF-3124|https://issues.apache.org/jira/browse/KARAF-3124] - Provide shell:env command
 * [KARAF-3125|https://issues.apache.org/jira/browse/KARAF-3125] - Add a possibility to cache LDAP credentials
 * [KARAF-3126|https://issues.apache.org/jira/browse/KARAF-3126] - add more specific completer for admin:start|stop command
 * [KARAF-3130|https://issues.apache.org/jira/browse/KARAF-3130] - add admin:change-ssh-host command
 * [KARAF-3134|https://issues.apache.org/jira/browse/KARAF-3134] - Log executed shell commands at debug level
 * [KARAF-3164|https://issues.apache.org/jira/browse/KARAF-3164] - Document exposing JAAS BackendEngineFactory services for the login module
 * [KARAF-3166|https://issues.apache.org/jira/browse/KARAF-3166] - Add SyncopeLoginModule (including backend)
 * [KARAF-3222|https://issues.apache.org/jira/browse/KARAF-3222] - Command description for osgi:shutdown could be improved
 * [KARAF-3246|https://issues.apache.org/jira/browse/KARAF-3246] - Rename jpa features as jpa/jpa20 and jpa21
 * [KARAF-3255|https://issues.apache.org/jira/browse/KARAF-3255] - Document jasypt property placeholder
 * [KARAF-3293|https://issues.apache.org/jira/browse/KARAF-3293] - more fine-grained way to specify the jmx.acl.whitelist.cfg 
 * [KARAF-3367|https://issues.apache.org/jira/browse/KARAF-3367] - add additional configuration options when use wrapper:install 
 * [KARAF-3368|https://issues.apache.org/jira/browse/KARAF-3368] - Support reference:file:xxx urls in startup.properties
 * [KARAF-3372|https://issues.apache.org/jira/browse/KARAF-3372] - only register HUP signal handler for non-windows platform
 * [KARAF-3380|https://issues.apache.org/jira/browse/KARAF-3380] - Convert mojos to use annotations
 * [KARAF-3381|https://issues.apache.org/jira/browse/KARAF-3381] - Remove deprecated methods in InstanceService / Instance
 * [KARAF-3382|https://issues.apache.org/jira/browse/KARAF-3382] - Support configuration for custom LDAP group to JAAS role mapping
 * [KARAF-3386|https://issues.apache.org/jira/browse/KARAF-3386] - Improve InstallKarsMojo to support reference: protocol and additional feature repositories
 * [KARAF-3389|https://issues.apache.org/jira/browse/KARAF-3389] - Move security configurations (for commands and jmx) to their respective features
 * [KARAF-3391|https://issues.apache.org/jira/browse/KARAF-3391] - Move Base64 into karaf util
 * [KARAF-3393|https://issues.apache.org/jira/browse/KARAF-3393] - Provide ready to use jpa20 and jpa21 features
 * [KARAF-3398|https://issues.apache.org/jira/browse/KARAF-3398] - Improve display of package:imports
 * [KARAF-3403|https://issues.apache.org/jira/browse/KARAF-3403] - bin/client Utility Throws ArrayIndexOutOfBoundsException 
 * [KARAF-3411|https://issues.apache.org/jira/browse/KARAF-3411] - windows startup scripts don't handle setenv.bat correctly
 * [KARAF-3418|https://issues.apache.org/jira/browse/KARAF-3418] - Add getFeatureRepositoryName(Uri uri) to FeatureService
 * [KARAF-3421|https://issues.apache.org/jira/browse/KARAF-3421] - Add a variable for the debug port number.
 * [KARAF-3446|https://issues.apache.org/jira/browse/KARAF-3446] - avoid Karaf client script "logout" command throwing an exception
 * [KARAF-3452|https://issues.apache.org/jira/browse/KARAF-3452] - Upgrade to maven-release-plugin 2.5.1
 * [KARAF-3500|https://issues.apache.org/jira/browse/KARAF-3500] - NPE throws when executing "bin/client shutdown"
 * [KARAF-3504|https://issues.apache.org/jira/browse/KARAF-3504] - Make instance:create less verbose in the log

** New Feature
 * [KARAF-3058|https://issues.apache.org/jira/browse/KARAF-3058] - add backing engine serivce for org.apache.karaf.jaas.modules.publickey.PublickeyLoginModule
 * [KARAF-3059|https://issues.apache.org/jira/browse/KARAF-3059] - add a flag to bin/client so that it can read private key from a specified location
 * [KARAF-3104|https://issues.apache.org/jira/browse/KARAF-3104] - Add the connector feature from ServiceMix
 * [KARAF-3205|https://issues.apache.org/jira/browse/KARAF-3205] - Refactor create-dump to be more low level
 * [KARAF-3228|https://issues.apache.org/jira/browse/KARAF-3228] - Add Spring 4.1.2.RELEASE_1 features
 * [KARAF-3289|https://issues.apache.org/jira/browse/KARAF-3289] - Add a while loop command
 * [KARAF-3387|https://issues.apache.org/jira/browse/KARAF-3387] - Add a verify-features goal to validate the feature with a real OSGi resolution
 * [KARAF-3410|https://issues.apache.org/jira/browse/KARAF-3410] - Add a maven proxy servlet
 * [KARAF-3434|https://issues.apache.org/jira/browse/KARAF-3434] - Support env:XXX subtitution for environment variables
 * [KARAF-3435|https://issues.apache.org/jira/browse/KARAF-3435] - Support default/alternate values for variable substitution
 * [KARAF-3455|https://issues.apache.org/jira/browse/KARAF-3455] - Support for custom command parsers

** Question
 * [KARAF-3264|https://issues.apache.org/jira/browse/KARAF-3264] - What is the AND operator in shell:if ?

** Task
 * [KARAF-3068|https://issues.apache.org/jira/browse/KARAF-3068] - Update to Spring 3.2.9.RELEASE_1
 * [KARAF-3401|https://issues.apache.org/jira/browse/KARAF-3401] - Typo in users.properties
 * [KARAF-3422|https://issues.apache.org/jira/browse/KARAF-3422] - Upgrade pax-url dependency to 2.3.0

** Wish
 * [KARAF-3444|https://issues.apache.org/jira/browse/KARAF-3444] - ExecuteAction - consider log level INFO changing to DEBUG


                    Apache Karaf 4.0.0.M1
                    =====================

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 4.0.0.M1 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 4.0.0 release can be as feature complete and stable as possible.

  The 4.0.x line will ship with OSGi Rev5 support via Felix 4.4.1 and Equinox 3.9.1-v20140110-1610, and a completely refactored internal framework without Blueprint for internal usage. From a users point of view these changes will yield a smaller, more efficient Karaf core. There will be a Blueprint feature present in Karaf so that you can easily install Blueprint based applications. You will always be capable of using Blueprint in Karaf. So the main difference from a user perspective is that you’d need to depend on the Blueprint service if you need it. 


                    Apache Karaf 3.0.0
                    ==================

  This is a major new release of Apache Karaf, containing many refactorings, OSGi rev 5 support, wide ranging dependency upgrades, and new commands. It is strongly recommended that users fully test their application on this release before migrating from Karaf 2.x.

  Migration
  ---------

  karaf-maven-plugin:
  For the goal features-add-to-repository. The karaf core features are not added automatically anymore. You have to add the needed ones in descriptors.

  Changelog
  ---------

** Sub-task
    * [KARAF-305] - New maven goal to create a kar file from a given feature / feature set
    * [KARAF-1095] - Update Branding Shell demo
    * [KARAF-1096] - Update Custom Command demo
    * [KARAF-1098] - Update Dump Provider demo
    * [KARAF-1099] - Update Web demo
    * [KARAF-1275] - Refactor bundle modules into core, command, management
    * [KARAF-1457] - Revert Aries JMX Update on SCR Management Component
    * [KARAF-1524] - Support creating a kar from the console
    * [KARAF-2228] - Karaf.webconsole uses wrong version in export-package header
    * [KARAF-2229] - Adapt karaf.webconsole package-imports/exports to felix.webconsole all-in-one bundle

** Bug
    * [KARAF-18] - features:list fails to show which bundles have been installed by featuresBoot if any exception is thrown during installation
    * [KARAF-281] - History using up arrow does not work on windows
    * [KARAF-384] - Cannot find some jar in ext directory
    * [KARAF-398] - Features schema is not correct
    * [KARAF-440] - features-maven-plugin throws NullPointerException maven 3.0.2
    * [KARAF-451] - Trunk build is broken
    * [KARAF-456] - Artifact versions named in the documentation are not replaced with the version of the current project
    * [KARAF-457] - Merge 2.2.x assemblies structure to trunk
    * [KARAF-468] - The admin InstanceImpl class should use the util properties for loading / storing rmiRegistryPort , sshPort
    * [KARAF-472] - features-maven-plugin: TAB-characters in feature-repository lead to resolution-errors in add-features-to-repo
    * [KARAF-479] - Console doesn't like it when the console window is to small - no line wrapping for commands
    * [KARAF-493] - Various site fixes
    * [KARAF-496] - Karaf prompt displayed twice
    * [KARAF-499] - Unable to load simple standalone JSF 2.0 webapp - JSF's implementation's META-INF/*.tld files are not scanned at startup
    * [KARAF-504] - Features Maven Plugin does not work with Maven 3
    * [KARAF-506] - The config shell commands offer no way to delete a command
    * [KARAF-507] - The config shell completer does not allow completion of factory based pids
    * [KARAF-508] - The config:edit create does not allow the creation of factory configs
    * [KARAF-509] - The config:update command does not save factory configurations to the correct file
    * [KARAF-512] - WebConsole installation failed due to missing jetty-jaas feature
    * [KARAF-518] - Unable to load features.xml with included schema attribute
    * [KARAF-519] - Jline behavior problem when pasting long lines
    * [KARAF-521] - Executing complex scripts is extremely difficult
    * [KARAF-525] - Bundles listed in etc/startup.properties should only installed the first time
    * [KARAF-527] - The console bundle should indicate it provides the gogo related services
    * [KARAF-528] - Error while using correct feature descriptor in features-maven-plugin
    * [KARAF-534] - Startlevel: Strange deployment behaviour
    * [KARAF-535] - Description for List command incorrectly claims Threshold default is -1
    * [KARAF-536] - Backspace no longer works in Putty after using 'connect' command to connect to other instance, and commands are printed in only 2 columns.
    * [KARAF-537] - admin.bat prints stacktraces to standard out
    * [KARAF-538] - Dependency issue with feature spring-web
    * [KARAF-546] - Null point exception when executing log:display on an empty log
    * [KARAF-547] - Missing features file in the system directory of the distribution
    * [KARAF-557] - Feature: Failed to check to not install a bundle with the symbolic name contains attributes
    * [KARAF-558] - Boot feature from configuration file, can contain some spaces; the name should be trimmed
    * [KARAF-559] - AdminService loses root flag for instances
    * [KARAF-562] - Config properties defined in <config> tag (features.xml) are loaded during each refresh
    * [KARAF-565] - junit bundle missing (required by dev commands)
    * [KARAF-568] - minimal assembly: zip and tar.gz do differ in content
    * [KARAF-569] - Installing and uninstalling the jetty feature leaves Karaf in an ususable state
    * [KARAF-575] - webconsole: branding isn't resolved, therfore the webconsole doesn't work anymore
    * [KARAF-583] - Karaf manual does not build with new karaf-maven-plugin
    * [KARAF-585] - When connected to a remote instance, Ctrl-C closes the connection instead of simply interrupting the command
    * [KARAF-600] - "Extending the console" documentation still refers to org.osgi.service.command
    * [KARAF-601] - features:list does not show features of newly installed feature file
    * [KARAF-604] - All bundles are considered as system bundle
    * [KARAF-610] - Can't input the path string completely via karaf shell
    * [KARAF-622] - Jaas Cancel command is not working
    * [KARAF-624] - admin:stop command behavior not correct
    * [KARAF-625] - Missing property 'log4j.appender.out.file' in the file org.ops4j.pax.logging.cfg caused a NPE
    * [KARAF-630] - SpringDeploymentListenerTest fails on IBM JDK builds with No Class Def Found Error
    * [KARAF-634] - README file refers an incorrect contribution URL
    * [KARAF-637] - Update branding-console documentation to include the changes to custom.properties
    * [KARAF-653] - Karaf minimal is missing the feature files.
    * [KARAF-655] - Remove http://repository.ops4j.org/maven2 from org.apache.karaf.management.cfg
    * [KARAF-656] - kar deployer service not exported
    * [KARAF-669] - Dependency artifacts should be available on the Maven central repo
    * [KARAF-670] - Missing ${karaf.base}/system cause NullPointerException
    * [KARAF-671] - http:list does not display the correct information
    * [KARAF-675] - Longer shell commands affect the shell view when using up and down arrows
    * [KARAF-686] - introduce an override flag to configfile element so that we get chance to not override the finalname if it already exist
    * [KARAF-689] - Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle DB
    * [KARAF-690] - install http feature will start both 8080 and 8181 jetty port
    * [KARAF-697] - features:list shows the features that failed installation as installed.
    * [KARAF-706] - variable substitution doesn't work for system.properties
    * [KARAF-712] - Karaf's ls command does not represent URL objects correctly
    * [KARAF-718] - Grep doesn't work when piped from features:listurl
    * [KARAF-735] - java.util.NoSuchElementException if issue the first command as an empty command
    * [KARAF-753] - commandlist --help points to help for jaas:pending
    * [KARAF-754] - shell:cat hyphen ("-") option not activating STDIN.
    * [KARAF-760] - MInor time rendering bug
    * [KARAF-766] - Wrong help for features:install
    * [KARAF-769] - Update NOTICE file to mention JSW
    * [KARAF-771] - KAR Deployer doesn't work
    * [KARAF-773] - KAR docu outdated
    * [KARAF-776] - jclouds features require OSS Sonatype repository
    * [KARAF-781] - Class RunnableServiceListener misspelled
    * [KARAF-794] - mvn eclipse:eclipse fails with maven plugin 2.8.
    * [KARAF-796] - Editing Pax Web Configuration Via Karaf Console
    * [KARAF-800] - karaf does not start when using java7
    * [KARAF-811] - Combination of wrap+mvn and instructions doesnt work any more
    * [KARAF-812] - Cannot start bundle built with org.osgi.framework v. 4.3.0
    * [KARAF-815] - Generic the Karaf manual link
    * [KARAF-816] - Wrapper feature doesn't load security libraries
    * [KARAF-820] - Karaf client.bat swallows commands to be passed to the Karaf instance
    * [KARAF-824] - Web demo folder in 2.2.2 release is missing content and README.txt has bugs
    * [KARAF-826] - KarArtifactInstaller should look for "features" classifier in place of "feature"
    * [KARAF-827] - Karaf Web deployer (Pax-Web) always tries to deploy the deploy/README file
    * [KARAF-867] - Inconsistent deployment behavior between bundle installer and feature installer
    * [KARAF-875] - Unable to define escape the event designator '!' using '\!'
    * [KARAF-883] - NPE in features-maven-plugin
    * [KARAF-889] - dev:framework commands incorrect workflow
    * [KARAF-891] - Problem with $ charact in wrap:mvn URL
    * [KARAF-892] - EventAdmin events from Gogo not being sent from Karaf's console bundle
    * [KARAF-893] - Wrong URL in release notes [1]
    * [KARAF-894] - Kar deployment failed
    * [KARAF-895] - NPE during webconsole startup
    * [KARAF-896] - Karaf webconsole exports wrong version of Felix webconsole package
    * [KARAF-902] - Jaas: Properties backing engine doesn't remove users
    * [KARAF-904] - add jetty.port=8181 to jetty.xml so that configuration for jetty connector could take effect
    * [KARAF-905] - propdel() method in the ConfigMBean didn't work
    * [KARAF-910] - Race between FeatureService and ConfigAdmin for resolving mvn: URLs?
    * [KARAF-911] - features-maven-plugin:add-features-to-repo doesn't use maven proxy setting
    * [KARAF-913] - Omitted @Command on Gogo plugin is hard to debug because of NPE
    * [KARAF-915] - KAR deployment failed in the features XML is not the first entry of the KAR archive
    * [KARAF-917] - warn instead of info when failing to install a feature
    * [KARAF-918] - pax-url prerequisites for a feature are not respected
    * [KARAF-919] - Kar redeployment failed
    * [KARAF-920] - Feature autoinstall from kar failed
    * [KARAF-921] - maven eclipse plugin 2.8 does not work correctly with karaf
    * [KARAF-922] - features-maven-plugin ignores repository tags in feature files
    * [KARAF-923] - features-maven-plugin#AddFeaturesToRepoMojo does not handle spaces in repository urls well
    * [KARAF-926] - JAAS: Properties backing engine doesn't respect encryptor prefix and suffix
    * [KARAF-932] - ConfigMBean raise a NPE when dictionnary is null
    * [KARAF-935] - Deployer bundles do not start
    * [KARAF-937] - Karaf maven plugin generates feature configuration with dublicate entries
    * [KARAF-939] - the realm set for JAASLoginService in jetty.xml should be karaf but not the default
    * [KARAF-951] - dev:create-dump raises a NullPointerException
    * [KARAF-952] - config:propdel doesn't delete the property in the cfg file
    * [KARAF-954] - Double quotes missing in generated karaf-wrapper.conf
    * [KARAF-964] - admin feature is no more available in Karaf
    * [KARAF-982] - Utils.fromMaven cant deal with both classifier and extension
    * [KARAF-985] - LDAPLoginModule generates a large number of DirContext objects
    * [KARAF-1000] - Karaf distributions shouldn't include data and local-repo folders
    * [KARAF-1008] - WebConsole raise NCDF on service page
    * [KARAF-1015] - ConfigMBean should use a different config pid than the config shell
    * [KARAF-1020] - BundleWatcher should look for SNAPSHOT
    * [KARAF-1024] - Bug generating feature.xml when dependency has no manifest
    * [KARAF-1030] - Grep command breaks existing line formating
    * [KARAF-1031] - Performance issue in the features jaxb support
    * [KARAF-1033] - Set the Features validation optional
    * [KARAF-1036] - Some MBeans don't provide attribute correctly
    * [KARAF-1040] - Commands should not catch exceptions but should rethrow them
    * [KARAF-1050] - "osgi:start xxx" doesn't print anything
    * [KARAF-1051] - addcommand / removecommand / eval should be in the shell scope
    * [KARAF-1064] - BootstrapLogManager does not reuse the instantiated Handler
    * [KARAF-1065] - TextDumpProvider.createDump(DumpDestination) does not flush OutputStreamWriter
    * [KARAF-1066] - make features xml parser more forgiving
    * [KARAF-1067] - JDK7 compile issues with OsgiCommandSupport
    * [KARAF-1068] - Multiple blueprint plans using command namespace result in multiple converter registrations
    * [KARAF-1071] - Cursor keys do not work in Karaf shell on windows
    * [KARAF-1090] - deployers feature for fileinstall deployers that used to be in full profile
    * [KARAF-1101] - Completion does not work when quiesce manager is deployed
    * [KARAF-1106] - Jetty feature should use ServiceMix Spec for activation
    * [KARAF-1110] - Archetypes don't work
    * [KARAF-1111] - Add documentation about archetypes
    * [KARAF-1114] - osgi shell blueprint bundle shouldn't use lazy default-activation
    * [KARAF-1116] - Scripts fail at resolving java jdk.
    * [KARAF-1122] - Feature <configfile/> creates an empty file if the file URL is not resolved
    * [KARAF-1124] - karaf does not work properly with closing brace in the working directory path
    * [KARAF-1126] - features-maven-plugin:validate goal raises a NPE if karafConfig configuration is not set
    * [KARAF-1127] - Boot features failed to startup when karaf started from directory with closing brace; logs also unavailable
    * [KARAF-1131] - Remove PackageMBean and move operation to BundleMBean
    * [KARAF-1133] - Error executing command 'start' when starting a child instance
    * [KARAF-1139] - Redeploy kar cause installing old feature
    * [KARAF-1140] - config:list has NPE since it uses a service after ungetting the service reference
    * [KARAF-1143] - Karaf (Config Mbean) can not recognize the features when Karaf installation path containing blank space
    * [KARAF-1144] - When running a single remote command through SSH, the SCOPE variable isn't set
    * [KARAF-1150] - admin:create command creates broken org.ops4j.pax.url.mvn.cfg file
    * [KARAF-1158] - Karaf trunk fails to build on a clean repo
    * [KARAF-1161] - The shell:new action does not support the creation of arrays
    * [KARAF-1162] - A command that can not be loaded breaks the whole completion
    * [KARAF-1174] - war feature cannot be installed after the cxf
    * [KARAF-1175] - Duplicate key exception should be handle locally to avoid to affect the whole MBean
    * [KARAF-1178] - OBR feature doesn't work
    * [KARAF-1179] - "dev:watch *" doesn't notice new bundles added to the container
    * [KARAF-1188] - Console bundle depends on aries blueprint 0.3.x but imports [0.4.0,1)
    * [KARAF-1198] - Add Maven repository metadata in the system repository
    * [KARAF-1199] - dev:watch command issues "[WATCH]" announcements only to the issuing shell
    * [KARAF-1206] - Child instance doesn't start
    * [KARAF-1207] - Karaf tooling exam regression tests failing on NoSuchMethodError com.google.common.io.Files.deleteRecursively
    * [KARAF-1209] - ServiceRecipe blueprint exception in the log
    * [KARAF-1212] - NPE during update of the FeatureFinder
    * [KARAF-1215] - Shell scripts are incompatible with /bin/sh on Solaris
    * [KARAF-1216] - add-features-to-repo goal does not reclaim file handles fast enough
    * [KARAF-1219] - Assemblies ignore some resources
    * [KARAF-1220] - o.p.karaf.management bundles must stop when its configured keystore is not available
    * [KARAF-1222] - System shell hangs after karaf integration tests had been run
    * [KARAF-1225] - Manual build fails
    * [KARAF-1226] - Karaf Client cannot run a script
    * [KARAF-1228] - application-without-isolation enterprise feature doesn't install
    * [KARAF-1241] - admin script does not pass on JAVA_OPTS to instance
    * [KARAF-1242] - org.apache.karaf.scr.command format error
    * [KARAF-1243] - Karaf JMX Config MBean behaves in unpredictable ways
    * [KARAF-1244] - Deployer Transformers Supports Manifest Element without A Supporting Schema
    * [KARAF-1247] - maven-metadata-local.xml is not generated for bundles from a boot feature
    * [KARAF-1252] - Features core bundle should not depend to shell and management bundles
    * [KARAF-1253] - No completion on some commands with scope *
    * [KARAF-1256] - Archetypes should use dynamic variables
    * [KARAF-1257] - Configuration completers should avoid using getConfiguration method of config admin
    * [KARAF-1262] - Reintroduce package:* modules
    * [KARAF-1265] - Add AIX, HP-UX, Solaris, and "custom" support in the service wrapper
    * [KARAF-1267] - Align Pax-web features with std. features
    * [KARAF-1269] - aries-annotation feature doesn't install
    * [KARAF-1270] - Allow multiple commands in karaf 3.0.x bin/karaf script
    * [KARAF-1277] - Features deployer is not in the startup.properties
    * [KARAF-1278] - Comands: History does not work, can not edit current comand
    * [KARAF-1285] - Karaf 3.x - Karaf bundle archetype maven bundle plugin configuration is missing "instructions" tags.
    * [KARAF-1287] - Check documentation consistent
    * [KARAF-1293] - feature level start-level not completely finished....
    * [KARAF-1298] - dev:watch does not work in some cases
    * [KARAF-1304] - Quick help text for features:info command is erroneous
    * [KARAF-1305] - Error with Basic HTTP Authentication when using karaf realm
    * [KARAF-1318] - User bundles are treated as system bundles
    * [KARAF-1327] - Client: can't execute alias command
    * [KARAF-1331] - Source distribution is missing
    * [KARAF-1343] - Features repo points to the old pax-wicket app
    * [KARAF-1354] - SSH Log-In failes with "Authentication failed" with valid credentials
    * [KARAF-1359] - instance:create fails with Error executing command: Unable to find resource etc/config.properties
    * [KARAF-1360] - Configration update doesn't work
    * [KARAF-1362] - Karaf web console does not work on tabs features, http and  instance
    * [KARAF-1363] - Upgrade Jetty when bugfix for the Loggging to stderr bug is available
    * [KARAF-1367] - Remove line number logging from default logging config
    * [KARAF-1369] - Shell history does not log all commands
    * [KARAF-1370] - Loading snapshots from local repository does not work and the system dir should be read only
    * [KARAF-1374] - Fileinstaller logging by default is not enabled.
    * [KARAF-1388] - SSHD authorized key provider should log in DEBUG
    * [KARAF-1389] - SSH doesn't correctly use the karaf.base variable
    * [KARAF-1391] - Top-level build is missing obr module
    * [KARAF-1392] - Removing a KAR should uninstall the shipped features
    * [KARAF-1394] - Custom login modules not seen with Equinox
    * [KARAF-1395] - Instance commands are not started at bootstrap
    * [KARAF-1402] - Order in test framework generated features.xml is wrong
    * [KARAF-1406] - scanFeatures is incompatible with editing the etc/org.apache.karaf.features.cfg file
    * [KARAF-1407] - Use useDeployFolder(false) together with scan features fail
    * [KARAF-1411] - Spec activator doesn't start correctly
    * [KARAF-1416] - Blueprint archetype instructions is missing
    * [KARAF-1418] - Instance command imports an internal package from instance core
    * [KARAF-1430] - Default child instance config is not the same as the root instance
    * [KARAF-1439] - Re-add demos to Karaf 3.0 kits
    * [KARAF-1447] - Make the three big (cxf, amq, camel) play nicely with Karaf 3 without change
    * [KARAF-1450] - System bundles could be started without problems; all other bundles need to be forced
    * [KARAF-1452] - karaf-maven-plugin does not compile using java7
    * [KARAF-1455] - PAX Url (obr & war), Felix and Karaf (trunk) fight with each other resulting in an m_bundleLock
    * [KARAF-1459] - Problem with the OBR Resolver and Pax Web
    * [KARAF-1472] - Karaf manual references wrong artifacts
    * [KARAF-1482] - NullPointerException when deploying a feature without specified "install"-attribute
    * [KARAF-1483] - Help generation does not work for commands without noargs constructor
    * [KARAF-1485] - Use ShellTable in bundle:list
    * [KARAF-1487] - Bundles in deploy are deployed before startup process had been  finished
    * [KARAF-1491] - Admin service not able to start child instances when the JDK path contains a space on OS X
    * [KARAF-1496] - Bad login when using sufficient modules but when the first fail
    * [KARAF-1510] - Deployer kar demo Jenkins build issue
    * [KARAF-1513] - SSH keystore incompatible if generated with IBM JDK
    * [KARAF-1515] - features-generate-descriptor does not set the version in generated features
    * [KARAF-1528] - Web:List command not working anymore
    * [KARAF-1529] - command-watch messes the output when used with commands that take longer than the interval
    * [KARAF-1539] - kar feature should a boot one
    * [KARAF-1540] - featuresRepositories URL are not correct
    * [KARAF-1541] - jaas:realm-manage raises a NullPointerException
    * [KARAF-1544] - Several bugs in main around locking
    * [KARAF-1547] - NullpointerException when running commands on jdk 6 update 33 or jdk 7 update 5
    * [KARAF-1549] - Child instance features cfg file looks weird
    * [KARAF-1556] - standard-feature refers to non-existing "commands"-artifacts
    * [KARAF-1564] - karaf feature validate plugin should support to load the exports packages from dependency features
    * [KARAF-1566] - instance:clone set the source instance in error
    * [KARAF-1573] - Potential ZipFile leak at KarArtifactInstaller.install()
    * [KARAF-1585] - Installing using wrap protocol fails when specifying bundle version
    * [KARAF-1587] - When executing a command through the client, no error is printed in the console in case of errors
    * [KARAF-1591] - Upgrade to XBean 3.11.1
    * [KARAF-1593] - Pressing strg+d during log:tail make everything hang
    * [KARAF-1596] - Karaf pom still refers geronimo-spec 1.0 whereas 1.1 is in use
    * [KARAF-1609] - command-watch info does not work
    * [KARAF-1617] - Blueprint deployer in combination with maven URL deployer creates wrong OSGi/blueprint/ file
    * [KARAF-1624] - Rat checks fail
    * [KARAF-1635] - config.properties should be filtered
    * [KARAF-1655] - ManagementCfg configuratoinPointers in tooling-exam are incorrect
    * [KARAF-1666] - Default configuration for jetty.xml could create problems
    * [KARAF-1675] - Wrapper service requires a shell
    * [KARAF-1682] - Custom distribution section of dev guide is outdates
    * [KARAF-1683] - "no matching cipher found" error connecting via SSH to wrapper Karaf service - on Ubuntu
    * [KARAF-1695] - startup fails on Windows with only JRE installed
    * [KARAF-1699] - MBeans should support the same flags as the commands
    * [KARAF-1702] - Stopping the console bundle should not shutdown the osgi framework
    * [KARAF-1705] - Sync features between 2.3 and trunk
    * [KARAF-1713] - Build failure at manual module
    * [KARAF-1715] - Occasional freeze on feature:install webconsole
    * [KARAF-1723] - Provide meaningful thread names for karaf console
    * [KARAF-1734] - When logging into karaf with ssh as user karaf the prompt shows admin@root
    * [KARAF-1736] - Feature spring-struts can't be installed
    * [KARAF-1738] - features-generate-descriptor should support "install" attribute
    * [KARAF-1742] - Add command to show list of threads and stack traces
    * [KARAF-1751] - Spring feature dependencies specified too tightly
    * [KARAF-1754] - updating features.xml in auto deploy folder results in duplication
    * [KARAF-1756] - No SSH connection possible on Debian 6.0.5
    * [KARAF-1759] - No Way To Start obr Dependencies By Default
    * [KARAF-1765] - The obr Shell Deploy And Start Commands Always Deploy Optional Dependencies
    * [KARAF-1797] - NPE thrown from OsgiConfiguration.unregister
    * [KARAF-1803] - Servlets attribute doesn't work on HttpMBean
    * [KARAF-1804] - SystemMBean should support name attribute
    * [KARAF-1809] - Feature spring-web-portlet can't be installed
    * [KARAF-1814] - Cursor keys do not work when using bin/client on windows
    * [KARAF-1815] - When ssh'ing from a windows box into a unix box, arrow keys are not correctly interpreted
    * [KARAF-1824] - tooling-exam contains reference to wrong commons-io artifact
    * [KARAF-1827] - Build the manual within specific profiles
    * [KARAF-1835] - NPE in jaas:realm-manage command when multiple realm with the same name are present and not login module name is provided.
    * [KARAF-1838] - PackageMBean should return List<String> and support operation with bundleId
    * [KARAF-1839] - system bundle also should export javax.xml.ws.spi.http package
    * [KARAF-1840] - should also endorse saaj-api
    * [KARAF-1843] - SystemMBean reboot(time, cleanup) operation always cleanup
    * [KARAF-1845] - Minimal distribution doesn't start
    * [KARAF-1846] - jre.properties is corrupt in 3.0.0-SNAPSHOT
    * [KARAF-1851] - inconsistent FeaturesNamespaces versions
    * [KARAF-1853] - Attached kar deploys to a different snapshot build number than the main artifact
    * [KARAF-1861] - Test failure in exam regression tests : KarafWithBundleTest
    * [KARAF-1887] - Make integration tests more reliable by making sure the boot is finished
    * [KARAF-1900] - create project for private compendium build for java 7
    * [KARAF-1905] - ASM4 causes the Proxy/Weaving of Xerces, but that then causes validation factories to fail.
    * [KARAF-1914] - SSH client authentication randomly fails
    * [KARAF-1936] - LDAPLoginModule not working in 2.3.0 due to missing import of javax.net.SocketFactory
    * [KARAF-1938] - Lock logic should wait for start level change to occur
    * [KARAF-1963] - incorrect statement in developers-guide/branding-console.html
    * [KARAF-1973] - NullPointerException when performing log:clear then log:tail
    * [KARAF-1976] - Shell attempts to execute sub-shell actions as commands
    * [KARAF-1978] - if use script to start a child instance then using karaf console admin:list can't get the instance correct status
    * [KARAF-1986] - instance.properties file doesn't get updated if karaf.name is changed
    * [KARAF-1992] - PropertiesLoginModule handles usernames with backslash not correct
    * [KARAF-2007] - features without start-level in features.xml are always started first
    * [KARAF-2008] - respectStartLvlDuringFeatureStartup does not respect feature-start-levels (only bundles)
    * [KARAF-2009] - Error on visualize Licences page
    * [KARAF-2016] - Hudson paths hard coded in assembled zip and tar.gz distributions
    * [KARAF-2019] - Wrapper doesn't display all Linux statements
    * [KARAF-2020] - log:tail blocks on ^D
    * [KARAF-2026] - Two broken links on remote console manual page
    * [KARAF-2027] - invalid password option for admin:connect command in documenation
    * [KARAF-2029] - delete.user option missing from JDBCLoginModule
    * [KARAF-2035] - Not able to clone the root instance
    * [KARAF-2051] - Duplicate definition of org.ops4j.pax.url.mvn.localRepository in org.ops4j.pax.url.mvn.cfg
    * [KARAF-2052] - Progress bar doesn't display properly on 80 char consoles
    * [KARAF-2057] - NOTICE and LICENSE files are not correct
    * [KARAF-2058] - ensure find the root instance entry when update root karaf instance name in instances.properties
    * [KARAF-2067] - instance-script terminates with NoClassDefFoundError
    * [KARAF-2074] - ensure admin service always load storage file instance.properties before each operation
    * [KARAF-2096] - Upgrade to Pax Exam 2.6.0
    * [KARAF-2115] - Sync weaving behavior between root and child instances
    * [KARAF-2117] - LDAP login module is broken
    * [KARAF-2125] - "Components" tab not shown in WebConsole
    * [KARAF-2133] - Generated title contain unresolved placeholder
    * [KARAF-2134] - Features deployer does not support mvn urls
    * [KARAF-2135] - Issue with jledit addition
    * [KARAF-2136] - ServiceMix Spec property mispelled in etc/system.properties
    * [KARAF-2137] - Unable to prevent remote JMX access
    * [KARAF-2143] - Remove Jetty JUL logger configuration
    * [KARAF-2144] - MainStartTest test fails when methods are executed in reverse order
    * [KARAF-2152] - wrong version for pax-jetty
    * [KARAF-2154] - Entering an empty command removes previous command in history
    * [KARAF-2155] - Wrapper/service does not start for karaf 3
    * [KARAF-2158] - Test InstanceServiceImplTest#testToSimulateRenameInstanceByExternalProcess fails when run isolated
    * [KARAF-2167] - org.apache.karaf.tooling.exam.container.internal.adaptions.KarafManipulatorFactory creates invalid version qualifier
    * [KARAF-2171] - Start Karaf as service shows 'Activator' error in wrapper.log
    * [KARAF-2178] - remove karaf-org.osgi.core.jar
    * [KARAF-2181] - jpa feature can't be installed "out of the box"
    * [KARAF-2189] - blueprint disable service too soon at shutdown
    * [KARAF-2191] - Karaf 3.0.x CLONE - Karaf startup fails with NullPointerException when logfile can't be written
    * [KARAF-2193] - Upgrade to Pax URL 1.5.2
    * [KARAF-2194] - Karaf regression test fails on BootClasspathLibraryOptionTest
    * [KARAF-2201] - http, war, and http-whiteboard feature should use the version of underlying pax-web feature
    * [KARAF-2206] - The container fails to start correctly with IBM Java 6
    * [KARAF-2209] - Allow overriding system properties
    * [KARAF-2215] - <packaging>kar</packaging> fails to attach artifact
    * [KARAF-2218] - Fix manual links on website
    * [KARAF-2220] - spring-jms feature shouldn't depend on spring-web
    * [KARAF-2221] - The admin service is not safe when used to create / start agents quickly
    * [KARAF-2225] - jaas PropertiesLoginModule does not complain when users.properties is not found but fails later
    * [KARAF-2226] - Properties with pathname are not correct on windows in jaas PropertiesLoginModule
    * [KARAF-2234] - Thrown Exception in shell commands should be logged as ERROR
    * [KARAF-2236] - karaf scripts fail when paths contain spaces
    * [KARAF-2237] - LDAP login module cannot look up keystore and/or truststore
    * [KARAF-2240] - Incompatible Equinox version
    * [KARAF-2244] - BundleWatcher should wait for refresh to be finished before updating another bundle
    * [KARAF-2245] - instance:connect doesn't work anymore
    * [KARAF-2246] - wrapper feature doesn't install
    * [KARAF-2248] - Karaf console wraps on Windows 7 when connecting using the client
    * [KARAF-2249] - config:property-append doesn't set a needed comma for seperation
    * [KARAF-2264] - MBean operation errors are not raised correctly
    * [KARAF-2269] - Servicemix Specs Activator/OsgiLocator Broken due to KARAF-2136
    * [KARAF-2270] - Service wrapper assumes java is on system path
    * [KARAF-2285] - Some tabs in WebConsole are blank
    * [KARAF-2297] - WebConsole should export org.json
    * [KARAF-2306] - BootClasspathLibraries should be copied before Karaf classpath settings in pax-exam container
    * [KARAF-2307] - ActiveMQ Karaf commands do not work with Karaf 3
    * [KARAF-2308] - 404 link in latest karaf documentatoin
    * [KARAF-2309] - Normal Zip file which put into the deploy folder can't be deleted anymore
    * [KARAF-2314] - Remove SNAPSHOT repositories by default in the distribution
    * [KARAF-2316] - features-maven-plugin ignore proxy settings in maven settings.xml
    * [KARAF-2323] - Package MBean fails for export
    * [KARAF-2339] - Do not install boot features asynchronously
    * [KARAF-2346] - WebConsole should export package with version 3.1.2 (and not 4.0.0)
    * [KARAF-2357] - features-create-kar goal of the karaf-maven-plugin ignores bundles listed in the features that have the "dependency" property set to "true"
    * [KARAF-2359] - DirectoryWatcher for "deploy" directory should be configured to wait until framework start level reaches 60
    * [KARAF-2363] - Second feature validation result in an Exception.
    * [KARAF-2365] - jaas:manage selects wrong configuration
    * [KARAF-2368] - Commands with more than one argument have incorrect help string
    * [KARAF-2371] - osgi:list column for Spring state stays empty for bundles started before first invocation
    * [KARAF-2378] - Shell:exec doesn't show output for commands that execute too quickly
    * [KARAF-2380] - Error deploying embedded Karaf web demo
    * [KARAF-2381] - The shell log:set command not as documented
    * [KARAF-2385] - jledit bundle isn't found by Karaf features bundle and therefore Karaf freezes at startup.
    * [KARAF-2397] - Replace usages of non-standard org.eclipse:osgi with org.eclipse:org.eclipse.osgi
    * [KARAF-2403] - NPE in log:tail after doing a log:clear
    * [KARAF-2404] - bin script is not Unix executable in the zip distribution
    * [KARAF-2407] - dev:create-dump should generate full stack traces of each thread
    * [KARAF-2416] - OverlappingFileLockException when cloning an instance
    * [KARAF-2417] - Logging doesn't work in cloned instances
    * [KARAF-2421] - FeatureFinder should prevent ArrayIndexOutOfBoundException
    * [KARAF-2423] - Avoid overlapping lock exceptions when multiple threads access the admin service
    * [KARAF-2424] - Wrapper's generated karaf-service does not work on Solaris
    * [KARAF-2427] - When using service wrapper karaf.data is wrong on child instances
    * [KARAF-2429] - It would be nice to have scr:list sort components by id.
    * [KARAF-2437] - Logs still have been printed into console after log:tail and Ctrl + C
    * [KARAF-2445] - "bin\karaf.bat clean" does not work with whitespaces in KARAF_HOME
    * [KARAF-2446] - Fix etc/config.properties for endorsed xercesImpl
    * [KARAF-2447] - Managing child instances does not work with whitespaces in KARAF_HOME
    * [KARAF-2452] - The "--force" option is not honored when designate bundle as a system bundle
    * [KARAF-2457] - Branding is not propagated to instance created with admin:create
    * [KARAF-2458] - Update to Spring 3.2.4.RELEASE
    * [KARAF-2460] - Feature file generated by karaf maven plugin does not contain the feature dependencies
    * [KARAF-2470] - maven-karaf-plugin: dependency ignored
    * [KARAF-2471] - Karaf Wrapper doesn't return the correct exit result when using RUN_AS_USER
    * [KARAF-2473] - log:set DEFAULT is not more supported
    * [KARAF-2475] - Config bound to bundle after uninstall
    * [KARAF-2476] - Special characters are dropped when generating the LDAP the user and role filters
    * [KARAF-2479] - ensure we escape \ in LDAP filter  correctly
    * [KARAF-2492] - Possible UnsatisfiedLinkError when using dev:restart with native libraries
    * [KARAF-2497] - NPE in PropertiesLoginModule
    * [KARAF-2502] - karaf-service script does not properly set the RUN_AS_GROUP variable if a primary group is not set
    * [KARAF-2505] - When clean_cache-file exists the whole data-directory is deleted
    * [KARAF-2509] - subshell interferes the execution of a command with the same name as the scope
    * [KARAF-2513] - management boot can not process MBean without implement DynamicMBean interface
    * [KARAF-2515] - Prevent NPE in log:tail
    * [KARAF-2516] - log:tail | grep foo - throws interrupted exception when using ctrl + c
    * [KARAF-2520] - Null Pointer in Dynamic-Import Command
    * [KARAF-2523] - Karaf JDBC lock doesn't work with M$ SQLServer
    * [KARAF-2524] - CLONE - Wrapper/service does not start for karaf 3
    * [KARAF-2528] - don't allow authentication = none if LDAP user or password is provided
    * [KARAF-2529] - Use connection credentials when searching for roles in LDAP
    * [KARAF-2530] - Build failure on Mac....
    * [KARAF-2531] - NPE in log:tail after a log:clear
    * [KARAF-2532] - itests are very slow because of timeouts when waiting for commands
    * [KARAF-2540] - LDAP authentication defaults to null if not specified
    * [KARAF-2541] - On Mac OS locate the JAVA_HOME
    * [KARAF-2548] - error starting 'client' under cygwin
    * [KARAF-2552] - Running log:tail on admin:console causes full CPU usage.
    * [KARAF-2558] - Unit Tests in error when building from trunk  on Windows platform
    * [KARAF-2561] - When starting karaf under JDK 1.8 Early Access, karaf will not start
    * [KARAF-2566] - StandardFeaturesTest fail on aries-annotation feature
    * [KARAF-2572] - Karaf does not start if there is no log appender named out
    * [KARAF-2573] - Child instance doesn't start
    * [KARAF-2574] - Improve message when .sshkaraf/known_hosts key changed
    * [KARAF-2577] - --help option doesn't work with command through bin/admin or bin/instance script
    * [KARAF-2595] - log:get ALL and log:set DEFAULT don't work as expected
    * [KARAF-2601] - Support Java 6 and Java 7
    * [KARAF-2603] - ConfigMBean update() operation is blocked for the admin (karaf) user
    * [KARAF-2604] - Improve the feature:repo-add arguments description
    * [KARAF-2605] - When reading user input from console, always delegate to the ConsoleReader
    * [KARAF-2606] - Add compatibility bundles for console/commands
    * [KARAF-2607] - PropertiesBackingEngine allows duplicate roles to be assigned to user
    * [KARAF-2611] - jaas:user-add doesn't actually add the user
    * [KARAF-2615] - Bundles attribute is empty in the ObrMBean
    * [KARAF-2617] - Deployed WAB are not available and stay in unknown state
    * [KARAF-2620] - Manual should use the official OSGi Web-ContextPath instead of Webapp-Context
    * [KARAF-2621] - PropertiesLoginModuleTest.testNonExistantPropertiesFile fails on windows
    * [KARAF-2622] - shouldn't encrypt public key for PublickeyLoginModule
    * [KARAF-2624] - Karaf script for AIX should use JVM option: -Xdump:heap instead of IBM_JAVA_HEAPDUMP_TEXT to control production heapdumps
    * [KARAF-2626] - Add load-test and threads commands
    * [KARAF-2628] - Fix synchronization issues in the commands completer
    * [KARAF-2631] - GenerateDescriptorMojo ignores managed scope
    * [KARAF-2633] - Prevent deadlocks with classloaders on JDK 6
    * [KARAF-2634] - Specify the alias when registering servlets to eliminate warnings
    * [KARAF-2636] - Improve security mechanism
    * [KARAF-2640] - SAXParseException when attempting to execute a dry run of Karaf release
    * [KARAF-2645] - Created instances etc folder doesn't contain all mandatory files

** Dependency upgrade
    * [KARAF-449] - Upgrade to PAX-WEB 1.1.0 (SNAPSHOT right now)
    * [KARAF-529] - Upgrade to Pax URL 1.3.2
    * [KARAF-582] - Upgrade Apache Mina to 2.0.3
    * [KARAF-590] - Upgrade to pax-logging 1.6.2
    * [KARAF-591] - Upgrade aopalliance ServiceMix bundle to 1.0_5
    * [KARAF-592] - Upgrade asm ServiceMix bundle to 3.3_2
    * [KARAF-593] - Upgrade cglib ServiceMix bundle to 2.1_3_7
    * [KARAF-594] - Upgrade commons-codec ServiceMix bundle to 1.3_4
    * [KARAF-595] - Upgrade commons-collections ServiceMix bundle to 3.2.1_2
    * [KARAF-596] - Upgrade commons-lang ServiceMix bundle to 2.4_5
    * [KARAF-597] - Upgrade jasypt ServiceMix bundle to 1.7_3
    * [KARAF-598] - Upgrade junit ServiceMix bundle to 4.7_3
    * [KARAF-607] - Upgrade felix-framework to 3.2.1
    * [KARAF-613] - Upgrade to Blueprint 0.3.1
    * [KARAF-672] - Upgrade to felix event admin 1.2.12
    * [KARAF-679] - Update jansi to version 1.6
    * [KARAF-681] - Upgrade to Pax URL 1.3.4
    * [KARAF-682] - upgrade to jetty 7.4.2.v20110526
    * [KARAF-757] - upgrade to jetty 7.4.4.v20110707
    * [KARAF-767] - Upgrade to Felix Framework 3.2.2
    * [KARAF-768] - Upgrade to Eclipse Equinox 3.6.2.R36x_v20110210
    * [KARAF-770] - Upgrade to Eclipse Equinox 3.7.1
    * [KARAF-789] - Upgrade jetty to 7.4.5.v20110725
    * [KARAF-791] - Upgrade paxurl to 1.3.5
    * [KARAF-793] - Upgrade paxrunner to 1.7.5
    * [KARAF-797] - Upgrade to Pax Web 1.1.1
    * [KARAF-834] - Upgrade to Spring 3.0.6 - in std. features.xml
    * [KARAF-854] - Upgrade to Felix Framework 4.0.1
    * [KARAF-855] - Add support for OSGi R4.3
    * [KARAF-903] - Upgrade to Pax Web 1.1.2
    * [KARAF-928] - Support of Gemini Blueprint
    * [KARAF-961] - Update Mina SSHD to version 0.6.0
    * [KARAF-962] - Update easymock to version 2.5.2
    * [KARAF-966] - Update xbean to 3.8
    * [KARAF-989] - Upgrade to Aries Application 0.4
    * [KARAF-990] - Upgrade to Aries JMX 0.4
    * [KARAF-991] - Upgrade to Aries JPA 0.4
    * [KARAF-992] - Upgrade to Aries JNDI 0.4
    * [KARAF-993] - Upgrade to Aries Proxy 0.4
    * [KARAF-994] - Upgrade to Aries Transaction 0.4
    * [KARAF-995] - Upgrade to Aries Util 0.4
    * [KARAF-998] - upgrade to jetty 7.5.4.v20111024
    * [KARAF-1028] - Upgrade to Felix Framework 4.0.2
    * [KARAF-1042] - Upgrade to jline 2.6
    * [KARAF-1092] - Upgrade to Jasypt 1.8
    * [KARAF-1107] - Karaf should use directly commons-* bundles
    * [KARAF-1120] - Upgrade to Spring 3.1.0.RELEASE
    * [KARAF-1135] - Upgrade pax exam to 2.4.0
    * [KARAF-1154] - Upgrade to eventadmin 1.2.14
    * [KARAF-1155] - Upgrade to Apache POM 10
    * [KARAF-1163] - Upgrade to Guava 11.0.1
    * [KARAF-1172] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1177] - Upgrade to standalone tinybundle 1.0.0
    * [KARAF-1183] - Upgrade to slf4j 1.6.4
    * [KARAF-1184] - Upgrade to JUnit 4.10
    * [KARAF-1185] - Upgrade to Pax Logging 1.6.5
    * [KARAF-1192] - Upgrade to pax-web 2.0.0
    * [KARAF-1193] - Upgrade to pax-url 1.4.0.RC1
    * [KARAF-1201] - Update jline groupid in main pom and shell/console/pom
    * [KARAF-1205] - Upgrade to maven-bundle-plugin 2.3.7
    * [KARAF-1224] - Upgrade to Spring 3.1.1.RELEASE
    * [KARAF-1229] - Upgrade to jansi 1.8
    * [KARAF-1230] - Upgrade to jansi 1.8
    * [KARAF-1231] - Upgrade to EasyMock 3.1
    * [KARAF-1232] - Upgrade to Jasypt 1.9.0
    * [KARAF-1233] - Upgrade to asm 3.3.1
    * [KARAF-1258] - Upgrade to Jetty 8.1.4
    * [KARAF-1259] - Upgrade to pax-url 1.4.0
    * [KARAF-1272] - Upgrade to fileinstall 3.2.0
    * [KARAF-1346] - Upgrade to Mina 2.0.4
    * [KARAF-1378] - Upgrade to fileinstall 3.2.2
    * [KARAF-1456] - Upgrade to blueprint 1.0.0
    * [KARAF-1458] - Upgrade to ServiceMix Specs 2.0
    * [KARAF-1490] - upgrade to pax-logging 1.6.7
    * [KARAF-1517] - Upgrade to OSGi Compendium 4.3.0
    * [KARAF-1520] - Upgrade to Jansi 1.9
    * [KARAF-1526] - Upgrade to pax-url 1.4.2
    * [KARAF-1531] - Upgrade to Felix ConfigAdmin 1.4.0
    * [KARAF-1534] - Upgrade to JLine 2.7
    * [KARAF-1535] - Upgrade to Felix Utils 1.2.0
    * [KARAF-1536] - Upgrade to Felix FileInstall 3.2.4
    * [KARAF-1567] - Upgrade to pax-web 2.0.1
    * [KARAF-1568] - Upgrade to sshd 0.7.0
    * [KARAF-1577] - Upgrade to slf4j 1.6.6
    * [KARAF-1578] - Upgrade to pax-logging 1.6.9
    * [KARAF-1579] - Upgrade to commons-compress 1.4.1
    * [KARAF-1581] - Upgrade to commons-jexl 2.1.1
    * [KARAF-1582] - Upgrade to Felix BundleRepository 1.6.6
    * [KARAF-1592] - Upgrade to quiesce api 1.0.1-SNAPSHOT
    * [KARAF-1597] - Upgrade to geronimo-jaspic 1.1
    * [KARAF-1598] - Upgrade to pax-runner 1.7.6
    * [KARAF-1599] - Upgrade to pax-swissbox 1.5.1
    * [KARAF-1601] - Upgrade to maven-antrun-plugin 1.7
    * [KARAF-1603] - Upgrade to maven-surefire-plugin 2.12
    * [KARAF-1604] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-1606] - Upgrade to maven-compiler-plugin 2.5.1
    * [KARAF-1608] - Upgrade to maven-dependency-plugin 2.4
    * [KARAF-1610] - Upgrade to maven-eclipse-plugin 2.9
    * [KARAF-1611] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1612] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1613] - Upgrade to maven-jar-plugin 2.4
    * [KARAF-1615] - Upgrade to maven-javadoc-plugin 2.8.1
    * [KARAF-1616] - Upgrade to maven-release-plugin 2.3.2
    * [KARAF-1619] - Upgrade to maven-remote-resources-plugin 1.3
    * [KARAF-1620] - Upgrade to maven-shade-plugin 1.7
    * [KARAF-1621] - Upgrade to maven-site-plugin 3.1
    * [KARAF-1622] - Upgrade to maven-war-plugin 2.2
    * [KARAF-1623] - Upgrade to apache-rat-plugin 0.8
    * [KARAF-1630] - Upgrade to Aries Util 1.0.0
    * [KARAF-1631] - Upgrade to Aries Blueprint API 1.0.0
    * [KARAF-1632] - Upgrade to Aries JMX API 1.0.0
    * [KARAF-1634] - Upgrade to Felix Framework 4.0.3
    * [KARAF-1636] - Upgrade to Equinox 3.8
    * [KARAF-1638] - Upgrade to Pax Web 2.0.1
    * [KARAF-1642] - Upgrade to exec-maven-plugin 1.2.1
    * [KARAF-1643] - Upgrade to jaxb2-maven-plugin 1.3.1
    * [KARAF-1644] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1645] - Upgrade to Aries Quiesce Manager 1.0.0
    * [KARAF-1646] - Upgrade to Pax Web 2.0.2
    * [KARAF-1649] - Upgrade to Aries JPA API 1.0.0
    * [KARAF-1650] - Upgrade to Aries Blueprint Annotation API 1.0.0
    * [KARAF-1651] - Upgrade to Aries JMX Blueprint API 1.0.0
    * [KARAF-1652] - Upgrade to Aries JMX Core 1.0.0
    * [KARAF-1653] - Upgrade to Aries JNDI Core 1.0.0
    * [KARAF-1654] - Upgrade to Aries Proxy API 1.0.0
    * [KARAF-1656] - use quiesce API 1.0.0 final instead of 1.0.1-SNAPSHOT
    * [KARAF-1658] - Upgrade to Aries JMX 1.0.0
    * [KARAF-1660] - Upgrade Aries Application API to 1.0.0
    * [KARAF-1661] - Upgrade Aries Application Utils to 1.0.0
    * [KARAF-1662] - Upgrade Aries Proxy Impl to 1.0.0
    * [KARAF-1663] - Upgrade Aries transaction manager to 1.0.0
    * [KARAF-1664] - Upgrade Aries JNDI legacy support to 1.0.0
    * [KARAF-1665] - Upgrade Aries JNDI rmi to 1.0.0
    * [KARAF-1668] - Upgrade blueprint core to 1.0.0
    * [KARAF-1669] - Upgrade Aries Application to 1.0.0
    * [KARAF-1670] - Uprade Aries Application Management to 1.0.0
    * [KARAF-1671] - Uprade Aries Application Modeller to 1.0.0
    * [KARAF-1672] - Upgrade Aries Application Deployment 1.0.0
    * [KARAF-1673] - Upgrade to Aries JPA Blueprint 1.0.0
    * [KARAF-1685] - Upgrade to Aries Blueprint Annotation Impl 1.0.0
    * [KARAF-1686] - Upgrade to Aries Blueprint CM 1.0.0
    * [KARAF-1687] - Upgrade to Aries Blueprint Core Compatibility 1.0.0
    * [KARAF-1688] - Upgrade to Aries Blueprint JEXL Evaluator 1.0.0
    * [KARAF-1689] - Upgrade to Aries JNDI URL 1.0.0
    * [KARAF-1690] - Upgrade to Aries Transaction Wrappers 1.0.0
    * [KARAF-1691] - Remove Aries Quiesce dependencies
    * [KARAF-1696] - Upgrade to Spring 3.1.2.RELEASE
    * [KARAF-1704] - Upgrade to Aries Transaction Blueprint 1.0.0
    * [KARAF-1719] - Upgrade to javax.mail 1.4.5
    * [KARAF-1722] - Upgrade to Aries JMX Blueprint Core 1.0.1
    * [KARAF-1732] - Upgrade to ServiceMix Ant bundle 1.8.4_1
    * [KARAF-1733] - Upgrade to ServiceMix aopalliance bundle  1.0_6
    * [KARAF-1737] - Upgrade to ServiceMix cglib bundle 2.2.2_1
    * [KARAF-1739] - Upgrade to Jetty 8.1.5.v20120716
    * [KARAF-1744] - Upgrade to guava 13.0
    * [KARAF-1745] - Upgrade to Felix WebConsole 4.0.0
    * [KARAF-1747] - Update to jline 2.8
    * [KARAF-1769] - Upgrade to pax-logging 1.6.10
    * [KARAF-1773] - Upgrade to pax-logging 1.6.10
    * [KARAF-1779] - Upgrade to guava 13.0.1
    * [KARAF-1781] - Upgrade to Mina 2.0.5
    * [KARAF-1787] - Upgrade to commons-fileupload 1.2.2
    * [KARAF-1788] - Upgrade to commons-io 2.4
    * [KARAF-1801] - slf4j 1.7.0
    * [KARAF-1816] - Upgrade to jline 2.9
    * [KARAF-1817] - Upgrade to sshd 0.8.0
    * [KARAF-1819] - Upgrade to Mina 2.0.5
    * [KARAF-1859] - Upgrade to ServiceMix Specs 2.1
    * [KARAF-1862] - Upgrade to Felix FileInstall 3.2.6
    * [KARAF-1863] - Upgrade to sshd 0.8.0
    * [KARAF-1865] - Upgrade to paxlogging 1.7.0
    * [KARAF-1866] - Upgrade to felix config admin 1.4.0
    * [KARAF-1867] - Upgrade to felix event admin 1.3.0
    * [KARAF-1868] - Upgrade aries bundles to 1.0.1 (blueprint-core, jmx-core, transaction-manager, jpa-container-context)
    * [KARAF-1884] - Upgrade exam to Pax Exam 2.6.0
    * [KARAF-1893] - Upgrade to Jetty 8.1.7.v20120910
    * [KARAF-1904] - Upgrade to Mina 2.0.7
    * [KARAF-1908] - Upgrade to XBean 3.12
    * [KARAF-1948] - Upgrade to Apache POM 11
    * [KARAF-1955] - Upgrade to ServiceMix Specs 2.2.0
    * [KARAF-1966] - Upgrade to Pax Web 3.0
    * [KARAF-1977] - Upgrade to OSGi 4.3.1
    * [KARAF-1981] - Upgrade to Felix ConfigAdmin 1.6.0
    * [KARAF-2012] - Upgrade to Pax Web 3.0.0.M1
    * [KARAF-2055] - Upgrade to Apache POM 12
    * [KARAF-2061] - Upgrade to commons-codec 1.7
    * [KARAF-2063] - Upgrade to Felix EventAdmin 1.3.2
    * [KARAF-2064] - Upgrade to Felix Metatype 1.0.6
    * [KARAF-2065] - Upgrade to Felix SCR 1.6.2
    * [KARAF-2068] - Upgrade to ASM 4.1
    * [KARAF-2080] - Upgrade to slf4j 1.7.2
    * [KARAF-2084] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2085] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2086] - Upgrade to Spring 3.1.3.RELEASE
    * [KARAF-2147] - Upgrade to Aries JMX 1.1.1
    * [KARAF-2148] - Upgrade to Aries Proxy 1.0.1
    * [KARAF-2149] - Upgrade to Aries Blueprint Core 1.1.0
    * [KARAF-2150] - Upgrade to Aries Blueprint CM 1.0.1
    * [KARAF-2157] - Upgrade to Aries Util 1.1.0
    * [KARAF-2176] - Upgrade to Pax URL 1.5.1
    * [KARAF-2177] - Upgrade to Felix Framework 4.2.1
    * [KARAF-2184] - Upgrade to Spring 3.1.4.RELEASE
    * [KARAF-2197] - Upgrade to JLine 2.10
    * [KARAF-2208] - Upgrade to Aries JPA Blueprint 1.0.1
    * [KARAF-2232] - Upgrade to Aries Blueprint Core 1.2.0
    * [KARAF-2247] - Upgrade to Equinox 3.8.2.v20130124-134944
    * [KARAF-2279] - Upgrade to OSGi Core 5.0.0
    * [KARAF-2292] - Upgrade to Pax Web 3.0.0
    * [KARAF-2310] - Upgrade to Spring 3.2.2.RELEASE
    * [KARAF-2319] - Upgrade to Pax Web 3.0.1
    * [KARAF-2327] - Upgrade to commons-codec 1.8
    * [KARAF-2328] - Upgrade to guava 14.0.1
    * [KARAF-2329] - Upgrade to jline 2.11
    * [KARAF-2330] - Upgrade to Aries Transaction Blueprint 1.0.1
    * [KARAF-2331] - Upgrade to XBean 3.13
    * [KARAF-2332] - Upgrade to jansi 1.11
    * [KARAF-2334] - Upgrade to slf4j 1.7.5
    * [KARAF-2335] - Upgrade to Spring 3.2.3.RELEASE
    * [KARAF-2337] - Upgrade to Apache POM 13
    * [KARAF-2351] - Upgrade to Pax-Swissbox 1.7.0(-SNAPSHOT) and bndlib 2.1.0
    * [KARAF-2358] - Upgrade to Pax URL 1.6.0
    * [KARAF-2383] - Upgrade to XBean 3.14
    * [KARAF-2389] - Upgrade to commons-compress 1.5
    * [KARAF-2393] - Upgrade to Felix Maven Bundle plugin 2.4.0
    * [KARAF-2394] - Upgrade to Felix WebConsole 4.2.0
    * [KARAF-2398] - Upgrade to ServiceMix cglib bundle 3.0_1
    * [KARAF-2399] - Upgrade to jledit 0.2.0
    * [KARAF-2405] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-2422] - Upgrade to Pax Exam 3.2.0
    * [KARAF-2436] - Upgrade to Pax Logging 1.7.1
    * [KARAF-2461] - Upgrade to Pax Web 3.0.2
    * [KARAF-2462] - Upgrade to Jetty 8.1.12.v20130726
    * [KARAF-2463] - Upgrade to easymock 3.2
    * [KARAF-2464] - Upgrade to sshd-core 0.9.0
    * [KARAF-2465] - Upgrade to jasypt 1.9.1
    * [KARAF-2510] - Upgrade to Aries Blueprint CM 1.0.2
    * [KARAF-2534] - Upgrade to aries-proxy-impl 1.0.2, blueprint-core 1.3.0 and blueprint-cm 1.0.3
    * [KARAF-2543] - Update to Pax-Web 3.0.3
    * [KARAF-2553] - Upgrade to commons-compress 1.6
    * [KARAF-2554] - Upgrade to Felix ConfigAdmin 1.8.0
    * [KARAF-2555] - Upgrade to Felix Metatype 1.0.8
    * [KARAF-2559] - Upgrade to Felix SCR 1.8.0
    * [KARAF-2560] - Upgrade to Felix Utils 1.4.0
    * [KARAF-2564] - Upgrade to Felix WebConsole Event plugin 1.1.0
    * [KARAF-2565] - Upgrade to OSGi Compendium 5.0.0
    * [KARAF-2578] - Upgrade to Pax Tinybundles 2.0.0
    * [KARAF-2579] - Upgrade to Pax Exam 3.3.0
    * [KARAF-2580] - Upgrade to XBean 3.15
    * [KARAF-2581] - Upgrade to jledit 0.2.1
    * [KARAF-2582] - Upgrade to json 20131018
    * [KARAF-2583] - Upgrade to ServiceMix Specs 2.3.0
    * [KARAF-2584] - Upgrade to XBean 3.16
    * [KARAF-2586] - Upgrade to Pax Web 3.0.4
    * [KARAF-2590] - Upgrade to Pax Exam 3.4.0
    * [KARAF-2593] - pax-logging-api, slf4j and logback package export conflict
    * [KARAF-2608] - Upgrade to Pax Web 3.0.5

** Improvement
    * [KARAF-216] - Create an admin:clone command
    * [KARAF-338] - Upgrade Karaf to version 1.0.0 of pax-web
    * [KARAF-362] - Add documentation how to build a custom karaf distribution including branding
    * [KARAF-366] - Remove sax parser code from features core
    * [KARAF-402] - Gather features and cmdhelp maven plugins into a generic karaf maven plugin
    * [KARAF-403] - Improve Bundle-Description header display
    * [KARAF-404] - Upgrade to felix maven-bundle-plugin 2.3.4
    * [KARAF-412] - Documentation: Add notes on how to make multiple configuration files available to the bundle context.
    * [KARAF-422] - If no version was found, features-maven-plugin try to create an artifact with a null version
    * [KARAF-445] - Add completion for shell aliases
    * [KARAF-447] - Add JDBC lock implementation for PostgreSQL
    * [KARAF-460] - Add commands to manipulate kar archives
    * [KARAF-461] - dev:create-dump command should generate a cleaner zip file name
    * [KARAF-465] - Merge http with war feature
    * [KARAF-469] - Remove duplicate code
    * [KARAF-470] - Move Main variables management in util
    * [KARAF-471] - would be nice for a "already exists" call to features:addurl to trigger a refresh
    * [KARAF-476] - The admin-command should be extended to handle RMI-server-port settings
    * [KARAF-483] - pax-web jetty.xml configfile should contain default security realm
    * [KARAF-484] - Upgrade to Felix Framework 3.0.9
    * [KARAF-487] - Improve --help information for obr:list
    * [KARAF-488] - obr:list should also include the bundle-symbolic-name of the packages it lists as this is used to execute other OBR commands
    * [KARAF-495] - Add a Tutorials section to the website.
    * [KARAF-513] - The ssh:ssh and admin:connect command do not allow passing a command to execute
    * [KARAF-514] - When starting a child instance, there's no way to wait until it's started
    * [KARAF-517] - Upgrade to pax-runner 1.6.1
    * [KARAF-530] - Rename org.apache.karaf.assemblies/apache-karaf to org.apache.karaf/apache-karaf
    * [KARAF-533] - Improve depdencny handling to manual
    * [KARAF-539] - Document configfile xml tag of features
    * [KARAF-540] - Add IdentificationUtils in Karaf utils
    * [KARAF-542] - Support of next line with '>' character
    * [KARAF-544] - Documentation on how to use the JMX console
    * [KARAF-551] - Implement the shell:source command
    * [KARAF-554] - Add karaf version in system properties and display in shell:info command output
    * [KARAF-560] - Modify all console log commands to receive a "logger" argument.
    * [KARAF-561] - Make obr:list output similar to osgi:list
    * [KARAF-563] - Adjustable PermSize and MaxPermSize in karaf script
    * [KARAF-564] - Allow configuring features OBR resolver to resolve optional imports as well
    * [KARAF-573] - Print out that karaf has to be restarted if using framework with new framework
    * [KARAF-574] - Re-introduce export version in packages:exports command
    * [KARAF-576] - introduce start-level attribute for feature element in features.xml
    * [KARAF-588] - Some fixes to Karaf Site
    * [KARAF-606] - JAAS: Allow LDAPLoginModule to supply role "DN" from LDAP group search
    * [KARAF-608] - Allow for multi-stage boot features installation
    * [KARAF-614] - Add warning to osgi:shutdown to avoid inadvertently shutting down the container
    * [KARAF-618] - Align Cellar major version with the Karaf one
    * [KARAF-623] - Create a shell completer for jaas realms
    * [KARAF-638] - Use the same naming convention in commands
    * [KARAF-640] - The Cellar's Hazelcast instance should be configured via Configuration Admin.
    * [KARAF-645] - Add a flag to suppress --help Option output on
    * [KARAF-651] - features-maven-plugin should "embed" the Karaf features descriptor
    * [KARAF-654] - Merge jetty feature with jetty-jaas feature
    * [KARAF-659] - correct manuall about http-whiteboard feature
    * [KARAF-661] - Typing ^D should behave as on Unix
    * [KARAF-662] - Clarify relationship of config.properties and custom.properties
    * [KARAF-663] - features-maven-plugin add-features-to-repo should embed Karaf core features descriptor
    * [KARAF-664] - Use Wiki syntax in bundle.info instead of Ansi control sequences
    * [KARAF-665] - Rename karaf-maven-plugin goals
    * [KARAF-668] - The karaf web console doesn't list web contexts
    * [KARAF-687] - Add VirtualHost support for webapp
    * [KARAF-693] - features:addurl raises "Premature end of file" when network is not available
    * [KARAF-698] - Technical edits to User's Guide
    * [KARAF-699] - Grammar fixes to source code files
    * [KARAF-700] - Updates to developer's guide
    * [KARAF-705] - Upgrade demos/web to use jdk 1.6 on the trunk.
    * [KARAF-713] - Refactor karaf main
    * [KARAF-720] - Make 3.0.x source JDK7 compliant for type handling.
    * [KARAF-725] - Read-only commands shouldn't ask for system bundle confirmation
    * [KARAF-729] - Karaf Maven Plugin source code cleanup
    * [KARAF-733] - Doc fixes to the quick start guide and overview page
    * [KARAF-737] - The Karaf WebConsole should not only list Http contexts but also web contexts as in web:list
    * [KARAF-752] - Editorial fixes to the assemblies/ configuration files
    * [KARAF-755] - Recommended improvements to help commands
    * [KARAF-756] - Add ability to have KeyStoreManager to wait for SSL keystore to be fully initialize by other bundle through timeout
    * [KARAF-762] - dev:watch should support multiple bundle IDs
    * [KARAF-764] - Correct links to ops4j in documentation
    * [KARAF-783] - Improve security docs wrt role policies
    * [KARAF-784] - Add date in the default Karaf log
    * [KARAF-786] - Add more MBeans
    * [KARAF-795] - Kar builder uses a different version for easymock then the rest of the project
    * [KARAF-802] - Upgrade mail bundle version to 1.4.4.
    * [KARAF-807] - Add a features name to the karaf-cellar features.xml
    * [KARAF-808] - Remove author attribute tags from Karaf source code
    * [KARAF-813] - Install Pax URL OBR with the OBR feature
    * [KARAF-817] - Allow to set Karaf window name via parameter
    * [KARAF-818] - Allow JAVA_MAX_MEM, JAVA_PERM_MEM, JAVA_MIN_MEM, JAVA_MAX_PERM_MEM the same way as for linux startup file
    * [KARAF-819] - Rename Karaf features name (and sub-projects features name) to use full qualified name
    * [KARAF-829] - Support of Java 7
    * [KARAF-832] - build html manual by default, use a profile for pdf generation
    * [KARAF-840] - specify javax.annotation packages version to 1.1.0 for jre-1.6 as Annotation 1.1 Spec is used for Java 6
    * [KARAF-847] - Provide Karaf features covering all Spring bundles
    * [KARAF-851] - Upgrade Maven plugins in use
    * [KARAF-864] - obr:deploy command should provide a start option
    * [KARAF-881] - Make aliases to osgi:* commands to be more clear for the users
    * [KARAF-885] - StartBundle doesn't deploy all bundles if one failed
    * [KARAF-886] - Document security properties in the relevant configuration files
    * [KARAF-888] - Add a Karaf Config Service
    * [KARAF-897] - Fixing text in bundle.info files
    * [KARAF-898] - Config delete operation should remove the pid.cfg file
    * [KARAF-899] - Upgrade to Apache Felix Gogo version 0.10.0
    * [KARAF-900] - Shutdown command should display the instance name
    * [KARAF-907] - Include 64 bits wrapper library
    * [KARAF-916] - use org.apache.aries.jmx.core instead of org.apache.aries.jmx
    * [KARAF-925] - Karaf config.properties doesn't define J2SE-1.6 and J2SE-1.7 execution environment
    * [KARAF-930] - Bundles MBean should mimic the BundleSelector like osgi:* commands
    * [KARAF-931] - Add includeTransitiveDependencies option to features-generate-descriptor Maven goal
    * [KARAF-936] - Features info command should display the start level of a bundle if available.
    * [KARAF-940] - Align various bat and sh scripts
    * [KARAF-942] - Expose Karaf RMI registry as a service
    * [KARAF-945] - Use singular for shell commands
    * [KARAF-946] - MBeans should be renamed in singular
    * [KARAF-947] - Rename admin service to instance service
    * [KARAF-948] - Apply normalized shell command format
    * [KARAF-956] - jaas module should throw generic FailedLoginException
    * [KARAF-963] - Refactoring of the modules
    * [KARAF-965] - Allow features-maven-plugin to handle multiple versions of the same feature
    * [KARAF-968] - Features file should require name attribute on features element
    * [KARAF-970] - feature <config/> tag doesn't create the cfg file
    * [KARAF-981] - Set kar as a boot feature
    * [KARAF-999] - local-repo folder shouldn't be used
    * [KARAF-1001] - Consistency between command annotation and blueprint
    * [KARAF-1002] - Switch the blueprint extender to synchronous mode
    * [KARAF-1005] - Port current karaf integration tests to new test framework
    * [KARAF-1010] - Add 64Bit ServiceWrapper to karaf
    * [KARAF-1013] - Less verbose in log when mistyped commands at INFO level
    * [KARAF-1014] - Make files specified by ${includes} optional
    * [KARAF-1017] - Use the Pax Web features.xml for Pax Web 2.0 and further
    * [KARAF-1019] - Set java memory options only when required
    * [KARAF-1021] - karaf-maven-plugin does not prefix non-bundles with the wrap: prefix when generating a feature.xml
    * [KARAF-1022] - java.io.tmpdir system property should use $KARAF_DATA/tmp in place of $KARAF_BASE/tmp
    * [KARAF-1023] - Add karaf activators for jars in the lib folder
    * [KARAF-1032] - Text improvements to Features XSD
    * [KARAF-1035] - Allow Karaf config commands to accept the pid as an option
    * [KARAF-1039] - Rename the org.apache.felix.gogo.commands package to org.apache.karaf.shell.commands
    * [KARAF-1041] - create-kar goal should handle configfile
    * [KARAF-1045] - Improved help system
    * [KARAF-1048] - make pom.xml eclipse 3.7 m2e friendly
    * [KARAF-1057] - Update the list of supported execution environments
    * [KARAF-1069] - create a ServerInfo service that Main sets up that exposes karaf home, base, data, instances, and the command line arguments
    * [KARAF-1072] - Provide man command as an alias to help
    * [KARAF-1073] - Add -r (reboot) and -h (halt) options to the system:shutdown command
    * [KARAF-1077] - New service:list command focused on services instead of bundles
    * [KARAF-1080] - Spring feature repo for spring related features
    * [KARAF-1087] - kar archetype
    * [KARAF-1088] - assembly archetype
    * [KARAF-1091] - Upgrade maven bundle plugin to 2.3.6
    * [KARAF-1093] - Make org.apache.karaf.util a bundle
    * [KARAF-1112] - shell:sleep should be in seconds
    * [KARAF-1115] - Add a jre.properties.cxf with all changes required to run cxf
    * [KARAF-1118] - Enable install of CXF into karaf with a simple command
    * [KARAF-1119] - expose rmiregistry port as a service property
    * [KARAF-1129] - Allow configuring rmi Registry host as well as port
    * [KARAF-1142] - Get rid of the code using StartLevel and PackageAdmin has they are now deprecated
    * [KARAF-1145] - Upgrade to pax-logging 1.6.4
    * [KARAF-1167] - No SCR implementation supplied with Karaf
    * [KARAF-1181] - Add tab completer to the help command
    * [KARAF-1186] - Provide a migration/update section in the manual
    * [KARAF-1191] - Switch back to millis per default on shell:sleep and introduce -s option
    * [KARAF-1197] - AdminService - Allow to provide a PrintStream so you can capture or control activity on the console
    * [KARAF-1208] - Rename features to feature
    * [KARAF-1214] - Improvement in Karaf log4j appender docs
    * [KARAF-1261] - Jaas commands should allow you to distinguish between to realms that have the same name
    * [KARAF-1271] - Feature service should log in DEBUG instead of INFO
    * [KARAF-1273] - Combine the commands and mbeans for osgi framework related stuff into one module set
    * [KARAF-1276] - Add activation="eager" to springListener bean in shell/osgi/src/main/resources/OSGI-INF/blueprint/shell-osgi.xml
    * [KARAF-1281] - New table support for shell
    * [KARAF-1282] - Remove osgi sources from karaf main
    * [KARAF-1289] - Move the standard feature definition to the feature.xml
    * [KARAF-1290] - Kar deployer should move into the kar module
    * [KARAF-1291] - Features deployer should be in the features module
    * [KARAF-1295] - serviceUrl in org.apache.karaf.management.cfg should use 0.0.0.0 but not localhost
    * [KARAF-1296] - Karaf startup without startup.properties
    * [KARAF-1299] - Make sure that all karaf archetype contain a description
    * [KARAF-1300] - features managment should be more robust if customer features descriptor file has duplicated feature name
    * [KARAF-1302] - Replace MBeanRegistrer with aries jmx whiteboard and remove .management modules
    * [KARAF-1307] - Refactor http command and mbean to new module layout and change to use jmx whiteboard
    * [KARAF-1328] - jclouds feature repo url has been changed after version 1.0
    * [KARAF-1351] - Improvements to features-generate-descriptor
    * [KARAF-1383] - Fix warning messages during bundle build
    * [KARAF-1390] - Embedded features should have POM dependencies on the projects they represent
    * [KARAF-1396] - config:list command description should be enhanced
    * [KARAF-1410] - Error in stop script if KARAF_DEBUG is enabled
    * [KARAF-1427] - Split shell console into API and impl
    * [KARAF-1438] - Simplify imports in bundle plugin for deployers
    * [KARAF-1444] - Rename shell.shell to shell.commands.impl and make packages private
    * [KARAF-1446] - Move help system and table out of console into separate modules
    * [KARAF-1448] - diag command should print the full stacktrace instead of the messages only
    * [KARAF-1449] - The InstallKarMojo fails with a nullpointer if an artifact could not be retrieved
    * [KARAF-1462] - Improvements to shell tables
    * [KARAF-1468] - Use the geronimo servlet spec instead of jetty' since it's backward compatible
    * [KARAF-1470] - Cleanup: Remove no longer required org.apache.karaf.tooling.testing project
    * [KARAF-1471] - Use project.version instead of direct version in manual
    * [KARAF-1489] - Add an itest showing how to correctly use tinybundles with provision in paxexam-karaf
    * [KARAF-1499] - InfoAction shell command should sort the properties from InfoProvider instances
    * [KARAF-1500] - Forgot a space between hours and minutes in InfoAction.java
    * [KARAF-1502] - Consolidate the feature commands about feature repositories
    * [KARAF-1506] - Check host keys when connecting to an ssh server using bin/client and ssh:ssh
    * [KARAF-1509] - Allow one step maven build by not using the lifecycle extension of the karaf-maven-plugin
    * [KARAF-1511] - Nullpointer exception when typing help test
    * [KARAF-1521] - add-features-to-repo goal should define a correct default value for repository
    * [KARAF-1551] - Kar service should not install the kar contents into the system dir
    * [KARAF-1552] - Support kars that will not be auto started
    * [KARAF-1558] - Instance clone should be able to clone the root instance
    * [KARAF-1559] - Demos should be included in the distro but not in the repository list
    * [KARAF-1562] - Improve message displayed when the JAAS login module doesn't have a backing engine
    * [KARAF-1563] - Support clean-all & clean-cache directly in karaf main jar
    * [KARAF-1565] - Clone operation should be provided by the instance MBean
    * [KARAF-1572] - JDBC Lock without using long running transactions
    * [KARAF-1574] - When two karaf containers are started locally, an exception is displayed at startup.  A nicer message would be better.
    * [KARAF-1575] - Features provided by karaf do not have any description
    * [KARAF-1580] - Demo should exclude Eclipse and IntelliJ IDEA files
    * [KARAF-1586] - wrapper:install command should be usable outside OSGi too
    * [KARAF-1600] - Avoid duplicate feature and bundle resolution when installing cascading features
    * [KARAF-1607] - Move dev commands and services to bundle, system and shell
    * [KARAF-1628] - Make client indepenent of console
    * [KARAF-1629] - Command completer should complete only on first scope level
    * [KARAF-1640] - Make sure the local console is fully working before the user can type commands
    * [KARAF-1641] - Avoid embedding jline in the console
    * [KARAF-1657] - org.ops4j.pax.url.mvn.proxySupport=false
    * [KARAF-1659] - Use dependencyManagement in features assemblies
    * [KARAF-1667] - Improve wait startup message
    * [KARAF-1676] - OBR URL's in Karaf have no simple identifier
    * [KARAF-1678] - WebConsole still use "admin" instead of "instance"
    * [KARAF-1693] - Rename command-watch to watch
    * [KARAF-1700] - update manual to reflect JDBC Lock updates
    * [KARAF-1710] - Remove @version headers from source
    * [KARAF-1712] - Use Pax-Web Features
    * [KARAF-1757] - Welcome message incorrect during ssh session or using bin/client.
    * [KARAF-1798] - Use exam framework for our itests and increase tests coverage
    * [KARAF-1811] - Remove section about console colors from manual
    * [KARAF-1818] - Improve user guide
    * [KARAF-1828] - Build src distributions within specific profiles
    * [KARAF-1834] - Make KarafTestSupport available externally
    * [KARAF-1850] - feature:list should use alphabetical order
    * [KARAF-1889] - Change logging in FeaturesServiceImpl
    * [KARAF-1903] - Refactore osgicore and osgicompendium modules
    * [KARAF-1933] - Add id for Maven repository
    * [KARAF-1951] - Remove workaround for KARAF-1117
    * [KARAF-1989] - Add CXF DOSGi feature uri to org.apache.karaf.features.repos.cfg
    * [KARAF-1990] - Add Cellar feature URI in org.apache.karaf.features.repos.cfg
    * [KARAF-2003] - Interrupt a running command in shell
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2043] - Document caveats of Pax Url Wrap when used in Karaf Shell
    * [KARAF-2049] - Instructions in welcome screen is a bit misleading with hit
    * [KARAF-2053] - HTTP feature should install a default etc/org.ops4j.pax.web.cfg file
    * [KARAF-2072] - Spelling correction
    * [KARAF-2097] - endorse stax-api spec jar
    * [KARAF-2119] - upgrade pax.base to 1.4.0
    * [KARAF-2138] - Add a status check script and karaf script argument
    * [KARAF-2160] - add options to only create tar.gz or zip archive in CreateArchiveMojo
    * [KARAF-2163] - Add a jre-1.8 to jre.properties
    * [KARAF-2175] - Add the sonatype standard snapshot repository to the karaf repositories
    * [KARAF-2230] - Watch command - Add option to control if the console should clear or not
    * [KARAF-2257] - SCR Component Updates
    * [KARAF-2273] - Turn blueprint as synchronous by default
    * [KARAF-2290] - should also endorse activation-api spec jar
    * [KARAF-2291] - make rmiServerHost configurable
    * [KARAF-2298] - Karaf shell option for a "transient" bundle stop
    * [KARAF-2312] - Uninstalling a feature should respect bundle start levels
    * [KARAF-2320] - make kar deployer/service to support NoAutoRefreshBundles option
    * [KARAF-2326] - Backspace stops working after shutdown command
    * [KARAF-2344] - ensure LDAPLoginModule can retrieve multiple roles assigned to a specific user
    * [KARAF-2356] - Enable use of ANSI colors in ShellTable
    * [KARAF-2360] - Add password option to admin:connect and ssh:ssh commands
    * [KARAF-2369] - extend role.filter of LDAPLoginModule to support distinguishedName filter
    * [KARAF-2414] - Move URL handling classes to separate package
    * [KARAF-2415] - dev:create-dump: extending with environment information
    * [KARAF-2419] - karaf maven plugin: Extract docbook and wiki help generation from mojo class
    * [KARAF-2425] - Code cleanup in karaf maven plugin
    * [KARAF-2426] - Support flat repo structure and meta data export in AddToRepositoryMojo
    * [KARAF-2438] - Improve ScrServiceMBean to display more details about SCR components
    * [KARAF-2443] - bundle-level and update commands should take symbolic name as parameter
    * [KARAF-2450] - Create "service-wrapper" alias to the wrapper feature
    * [KARAF-2459] - help command should be contextual to the current subshell
    * [KARAF-2469] - karaf-maven-plugin should take dependency exclusion into account
    * [KARAF-2474] - Provide a command for dumping the System, and OSGi properties
    * [KARAF-2484] - Export Bundle-SymbolicName and Bundle-Version in karaf-maven-plugin
    * [KARAF-2491] - Create extra karaf maven plugin command for meta data export and optionally eliminate duplicates
    * [KARAF-2493] - Fixing some bugs about failed resolutions, not adding core features by default
    * [KARAF-2494] - Fixing some bugs about failed resolutions, not adding core features by default
    * [KARAF-2496] - Add a configuration to define the behaviour of the subshell completion
    * [KARAF-2499] - Karaf should exit if the data directory is deleted
    * [KARAF-2500] - Karaf should monitor the lock file existence
    * [KARAF-2501] - Break some bundle dependencies in the console
    * [KARAF-2507] - Add alias to display features installed or features uninstalled
    * [KARAF-2521] - The client script should find better default values
    * [KARAF-2526] - Adding diagnostics for spring dm errors
    * [KARAF-2527] - Move duplicate package reporting from bundle:diag to package:exports
    * [KARAF-2535] - Introduce blueprint-web feature
    * [KARAF-2539] - Add --clear option to history command
    * [KARAF-2542] - Enhance documentation and wrapper for running Karaf as service with Mac OS X
    * [KARAF-2547] - karaf/stop script should be catching 'Connection refused' and display a message
    * [KARAF-2569] - Introduce KARAF_ETC env variable
    * [KARAF-2575] - Add missing commands in bin/instance
    * [KARAF-2598] - Add "--no-format" option to commands using ShellTable
    * [KARAF-2599] - Use ShellTable in bundle:services command
    * [KARAF-2609] - Provides etc/org.apache.karaf.kar.cfg file in the distribution
    * [KARAF-2610] - Update the comments in etc/users.properties (to include changes on groups/roles)
    * [KARAF-2616] - war feature should depends to http (instead of pax-http)
    * [KARAF-2618] - Add start()/stop() operations with just bundle ID in the WebMBean
    * [KARAF-2637] - Optimize the kar deployer to not read/write the status every time a bundle changes
    * [KARAF-2639] - Provide a way to configure ciphers and macs and use only the secured one by default

** New Feature
    * [KARAF-32] - Support ssh public key authentication and agent forwarding
    * [KARAF-376] - State replication between Karaf instances
    * [KARAF-381] - Commands for inspecting blueprint bundles
    * [KARAF-401] - Provide kar goal in the karaf maven plugin
    * [KARAF-407] - Extend features:info command to display features description and details
    * [KARAF-408] - Add osgi:services related commands
    * [KARAF-426] - Manage Karaf shell.name by branding
    * [KARAF-463] - Add chapter for Pax Web and the OSGi HttpService
    * [KARAF-473] - Support version resolving in FeatureService#getFeatures(name/version)
    * [KARAF-477] - Karaf console should gracefully handle errors due to the history file being read only.
    * [KARAF-478] - Subclasses of Console should be able to change the history file.
    * [KARAF-523] - Allow maven style names in startup.properties
    * [KARAF-541] - Support JMX SSL via etc/org.apache.karaf.management.cfg
    * [KARAF-572] - Command to show all registered servlets and their contexts
    * [KARAF-581] - Also make rmiRegistryHost configurable
    * [KARAF-605] - Add param to Gogo Argument and Option to override default value with specific value
    * [KARAF-647] - Support of sub-shell
    * [KARAF-657] - kar deployer should start the feature
    * [KARAF-696] - Add a macro allowing users to identify the contents of a specific config file.
    * [KARAF-798] - Support for relocating karaf.history file
    * [KARAF-835] - Provide a spring-jms feature
    * [KARAF-845] - Add a jasypt based property placeholder to support encrypted values
    * [KARAF-866] - New dev:wait-for-service command to wait for a given osgi service
    * [KARAF-908] - Provide a way to access system properties easily in the shell
    * [KARAF-934] - Provide a way to select which features are to be installed when dropping a descriptor to the deploy folder.
    * [KARAF-977] - config propset, propappend & propdel could use some autocompletion
    * [KARAF-980] - Add demo for extending Karaf's console commands
    * [KARAF-984] - Add Kar deployer demo using karaf-maven-plugin
    * [KARAF-987] - Add scp support
    * [KARAF-1004] - Introduce paxexam-karaf into karaf tooling
    * [KARAF-1007] - Include paxexam-karaf testframework documentation into the manual
    * [KARAF-1029] - Add completer support on option values
    * [KARAF-1055] - New bundle:capabilities and bundle:requirements commands
    * [KARAF-1059] - Karaf command features:status to indicate feature loaded or not
    * [KARAF-1109] - Provide archetypes for bundle, bundle-blueprint, web-bundle, war
    * [KARAF-1196] - implement a 'watch' command so we can watch the output of a karaf command like the unix 'watch' mechanism
    * [KARAF-1203] - Make invoker in karaf testcontainer configurable
    * [KARAF-1213] - Add option to configure BundleStartLvl of automatically installed base bundles
    * [KARAF-1334] - Use the new servicemix spec to allow the use of both the JRE implementations and implementations from bundles
    * [KARAF-1380] - Add a command to easily name an instance
    * [KARAF-1475] - Support SSH agent forwarding and use the agent authentication when connecting to other instances
    * [KARAF-1519] - Support to download features for later offline usage
    * [KARAF-1546] - Add -i/--install-all option to feature:add-url
    * [KARAF-1762] - command to list bundles with the requested class
    * [KARAF-1806] - Add version attribute in the SystemMBean
    * [KARAF-2037] - karaf 3.0 with gemini blueprint
    * [KARAF-2044] - Provide the ability to edit text resources from the Karaf shell
    * [KARAF-2050] - Ability to configure ssh session idle timeout - currently hardcode as 5 minutes
    * [KARAF-2078] - Create the shell:date command
    * [KARAF-2146] - Add a log command to log from shell to the log
    * [KARAF-2159] - add option to resolve transitive feature-dependencies in InstallKarsMojo
    * [KARAF-2164] - Create shell:wc command
    * [KARAF-2185] - Provide Spring 3.2.x support
    * [KARAF-2300] - log command to list all the logging levels currently been set
    * [KARAF-2370] - Add alias command
    * [KARAF-2372] - Introduce boot features sync mode property (true|false)
    * [KARAF-2434] - Add support for JAAS groups
    * [KARAF-2435] - Add Role-based access to JMX
    * [KARAF-2439] - Karaf maven plugin should allow to export feature meta data so user can create start scripts for containers
    * [KARAF-2455] - Role-based security for OSGi Services
    * [KARAF-2545] - Add feature:repo-refresh command
    * [KARAF-2549] - Provide additional enterprise features
    * [KARAF-2576] - Add instance:status/admin:status command to check the status of an instance

** Question
    * [KARAF-806] - ProxyLoginModule should actually be on the bootclasspath classpath right?

** Task
    * [KARAF-328] - Drop support for JDK 1.5
    * [KARAF-378] - Apache Karaf 3.0.0 Release
    * [KARAF-431] - Add documentation around remote management via JMX
    * [KARAF-432] - Remove spring2 support from karaf features
    * [KARAF-433] - Add documentation about KAR archive format and deployer
    * [KARAF-434] - Add wrap deployer description in the deployer section of the Karaf user guide
    * [KARAF-435] - Add diagnostic documentation (dev:create-dump, etc) in the Karaf User Guide
    * [KARAF-437] - Document jre.properties tuning
    * [KARAF-439] - Provide documentation about the Karaf wrapper
    * [KARAF-444] - Upgrade to latest version of pax-url
    * [KARAF-454] - Upgrade Karaf to version 1.0.1 of pax-web
    * [KARAF-489] - Upgrade pax-logging to 1.6.1
    * [KARAF-500] - Upgrade to Jetty 7.3.1
    * [KARAF-501] - Upgrade to PAX Exam 1.2.4
    * [KARAF-516] - Upgrade to felix eventadmin 1.2.10
    * [KARAF-543] - Add manual section around log custom appenders
    * [KARAF-553] - Get place of jetty config with mvn url in sync
    * [KARAF-566] - Build: Remove duplicate entries from build artefacts.
    * [KARAF-567] - org.apache.karaf.jaas.config.impl accidentally exported?
    * [KARAF-584] - Upgrade Karaf build environment
    * [KARAF-619] - Add Cellar manual
    * [KARAF-620] - Cellar should use the parent Karaf POM
    * [KARAF-646] - Upgrade to Jetty 7.4.1.v20110513
    * [KARAF-694] - Upgrade to Pax-Logging 1.6.3
    * [KARAF-887] - Refer PrinceXML website in the manual
    * [KARAF-909] - Delete the copy of the felix gogo Closure class
    * [KARAF-1053] - Removed unused folders/code from Assemblies
    * [KARAF-1054] - Setup eclipse targets now deprecated assembly folder.
    * [KARAF-1086] - Create Kar for Karaf demos
    * [KARAF-1094] - Refactor Karaf Demos to new assemblies format
    * [KARAF-1097] - Update Kar documentation
    * [KARAF-1136] - Rationalize Karaf 3.0 minimal distribution
    * [KARAF-1274] - Please set svn:ignore to all eclipse's project files
    * [KARAF-1393] - Rename commands module to command
    * [KARAF-1442] - Port deployer bundle demo to Karaf 3.0
    * [KARAF-1445] - more svn:ignore are needed
    * [KARAF-2062] - Add a spring3.2 feature
    * [KARAF-2161] - Incorrect LGPL license info in Notices file
    * [KARAF-2233] - Release Apache Karaf 3.0.0.RC1
    * [KARAF-2336] - Remove karaf-pax-exam and use pax-exam for itests
    * [KARAF-2413] - Add features:chooseurl for camel-extra
    * [KARAF-2619] - Remove jetty.xml from Karaf

** Test
    * [KARAF-1870] - Add assertion to EquinoxFrameworkTest
    * [KARAF-1871] - KeepRuntimeFolderTest is named wrong and does not assert anything
    * [KARAF-1872] - Backward224Test should check for the karaf version
    * [KARAF-1873] - BaseKarafDefaultFrameworkTest should test for felix framework
    * [KARAF-1874] - Add assertion to FrameworkWithShellOffTest
    * [KARAF-1875] - Improvement of test for keeping or deleting the pax exam folder
    * [KARAF-1876] - Improve StandardFeaturesTest, EnterpriseFeaturesTest and SpringFeaturesTest using feature service
    * [KARAF-1877] - itests fail on jenkins
    * [KARAF-1896] - itests.EnterpriseFeaturesTest.installApplicationWithoutIsolationFeature fails with NotSerializableException
    * [KARAF-1916] - Make tests faster by using EagerSingleStagedReactorFactory
    * [KARAF-2087] - add a testcase to cover the scenario that the AdminService can always load latest instance status which changed by external process
    * [KARAF-2485] - Fix StandardFeaturesTest
    * [KARAF-2533] - Use PerClass for feature tests


                    Apache Karaf 3.0.0.RC1
                    ======================

  Overview
  --------

  !! This is a technology preview release of Apache Karaf, and should NOT be considered production ready !!

  Apache Karaf 3.0.0.RC1 represents a major refactoring of the project, and includes numerous new features. We ask that users provide the community with their feed back so that the full Apache Karaf 3.0.0 release can be as feature complete and stable as possible.

  Changelog
  --------- 

** Sub-task
    * [KARAF-305] - New maven goal to create a kar file from a given feature / feature set
    * [KARAF-1095] - Update Branding Shell demo
    * [KARAF-1096] - Update Custom Command demo
    * [KARAF-1098] - Update Dump Provider demo
    * [KARAF-1099] - Update Web demo
    * [KARAF-1275] - Refactor bundle modules into core, command, management
    * [KARAF-1457] - Revert Aries JMX Update on SCR Management Component
    * [KARAF-1524] - Support creating a kar from the console
    * [KARAF-2228] - Karaf.webconsole uses wrong version in export-package header
    * [KARAF-2229] - Adapt karaf.webconsole package-imports/exports to felix.webconsole all-in-one bundle


** Bug
    * [KARAF-18] - features:list fails to show which bundles have been installed by featuresBoot if any exception is thrown during installation
    * [KARAF-281] - History using up arrow does not work on windows
    * [KARAF-384] - Cannot find some jar in ext directory
    * [KARAF-398] - Features schema is not correct
    * [KARAF-440] - features-maven-plugin throws NullPointerException maven 3.0.2
    * [KARAF-451] - Trunk build is broken
    * [KARAF-456] - Artifact versions named in the documentation are not replaced with the version of the current project
    * [KARAF-457] - Merge 2.2.x assemblies structure to trunk
    * [KARAF-468] - The admin InstanceImpl class should use the util properties for loading / storing rmiRegistryPort , sshPort
    * [KARAF-472] - features-maven-plugin: TAB-characters in feature-repository lead to resolution-errors in add-features-to-repo
    * [KARAF-479] - Console doesn't like it when the console window is to small - no line wrapping for commands
    * [KARAF-493] - Various site fixes
    * [KARAF-496] - Karaf prompt displayed twice
    * [KARAF-499] - Unable to load simple standalone JSF 2.0 webapp - JSF's implementation's META-INF/*.tld files are not scanned at startup
    * [KARAF-504] - Features Maven Plugin does not work with Maven 3
    * [KARAF-506] - The config shell commands offer no way to delete a command
    * [KARAF-507] - The config shell completer does not allow completion of factory based pids
    * [KARAF-508] - The config:edit create does not allow the creation of factory configs
    * [KARAF-509] - The config:update command does not save factory configurations to the correct file
    * [KARAF-512] - WebConsole installation failed due to missing jetty-jaas feature
    * [KARAF-518] - Unable to load features.xml with included schema attribute
    * [KARAF-519] - Jline behavior problem when pasting long lines
    * [KARAF-521] - Executing complex scripts is extremely difficult
    * [KARAF-525] - Bundles listed in etc/startup.properties should only installed the first time
    * [KARAF-527] - The console bundle should indicate it provides the gogo related services
    * [KARAF-528] - Error while using correct feature descriptor in features-maven-plugin
    * [KARAF-534] - Startlevel: Strange deployment behaviour
    * [KARAF-535] - Description for List command incorrectly claims Threshold default is -1
    * [KARAF-536] - Backspace no longer works in Putty after using 'connect' command to connect to other instance, and commands are printed in only 2 columns.
    * [KARAF-537] - admin.bat prints stacktraces to standard out
    * [KARAF-538] - Dependency issue with feature spring-web
    * [KARAF-546] - Null point exception when executing log:display on an empty log
    * [KARAF-547] - Missing features file in the system directory of the distribution
    * [KARAF-557] - Feature: Failed to check to not install a bundle with the symbolic name contains attributes
    * [KARAF-558] - Boot feature from configuration file, can contain some spaces; the name should be trimmed
    * [KARAF-559] - AdminService loses root flag for instances
    * [KARAF-562] - Config properties defined in <config> tag (features.xml) are loaded during each refresh
    * [KARAF-565] - junit bundle missing (required by dev commands)
    * [KARAF-568] - minimal assembly: zip and tar.gz do differ in content
    * [KARAF-569] - Installing and uninstalling the jetty feature leaves Karaf in an ususable state
    * [KARAF-575] - webconsole: branding isn't resolved, therfore the webconsole doesn't work anymore
    * [KARAF-583] - Karaf manual does not build with new karaf-maven-plugin
    * [KARAF-585] - When connected to a remote instance, Ctrl-C closes the connection instead of simply interrupting the command
    * [KARAF-600] - "Extending the console" documentation still refers to org.osgi.service.command
    * [KARAF-601] - features:list does not show features of newly installed feature file
    * [KARAF-604] - All bundles are considered as system bundle
    * [KARAF-610] - Can't input the path string completely via karaf shell
    * [KARAF-622] - Jaas Cancel command is not working
    * [KARAF-624] - admin:stop command behavior not correct
    * [KARAF-625] - Missing property 'log4j.appender.out.file' in the file org.ops4j.pax.logging.cfg caused a NPE
    * [KARAF-630] - SpringDeploymentListenerTest fails on IBM JDK builds with No Class Def Found Error
    * [KARAF-634] - README file refers an incorrect contribution URL
    * [KARAF-637] - Update branding-console documentation to include the changes to custom.properties
    * [KARAF-653] - Karaf minimal is missing the feature files.
    * [KARAF-655] - Remove http://repository.ops4j.org/maven2 from org.apache.karaf.management.cfg
    * [KARAF-656] - kar deployer service not exported
    * [KARAF-669] - Dependency artifacts should be available on the Maven central repo
    * [KARAF-670] - Missing ${karaf.base}/system cause NullPointerException
    * [KARAF-671] - http:list does not display the correct information
    * [KARAF-675] - Longer shell commands affect the shell view when using up and down arrows
    * [KARAF-686] - introduce an override flag to configfile element so that we get chance to not override the finalname if it already exist
    * [KARAF-689] - Karaf instance can wrongly obtain a lock when the locking table is empty on a Oracle DB
    * [KARAF-690] - install http feature will start both 8080 and 8181 jetty port
    * [KARAF-697] - features:list shows the features that failed installation as installed.
    * [KARAF-706] - variable substitution doesn't work for system.properties
    * [KARAF-712] - Karaf's ls command does not represent URL objects correctly
    * [KARAF-718] - Grep doesn't work when piped from features:listurl
    * [KARAF-735] - java.util.NoSuchElementException if issue the first command as an empty command
    * [KARAF-753] - commandlist --help points to help for jaas:pending
    * [KARAF-754] - shell:cat hyphen ("-") option not activating STDIN.
    * [KARAF-760] - MInor time rendering bug
    * [KARAF-766] - Wrong help for features:install
    * [KARAF-769] - Update NOTICE file to mention JSW
    * [KARAF-771] - KAR Deployer doesn't work
    * [KARAF-773] - KAR docu outdated
    * [KARAF-776] - jclouds features require OSS Sonatype repository
    * [KARAF-781] - Class RunnableServiceListener misspelled
    * [KARAF-794] - mvn eclipse:eclipse fails with maven plugin 2.8.
    * [KARAF-796] - Editing Pax Web Configuration Via Karaf Console
    * [KARAF-800] - karaf does not start when using java7
    * [KARAF-811] - Combination of wrap+mvn and instructions doesnt work any more
    * [KARAF-812] - Cannot start bundle built with org.osgi.framework v. 4.3.0
    * [KARAF-815] - Generic the Karaf manual link
    * [KARAF-816] - Wrapper feature doesn't load security libraries
    * [KARAF-820] - Karaf client.bat swallows commands to be passed to the Karaf instance
    * [KARAF-824] - Web demo folder in 2.2.2 release is missing content and README.txt has bugs
    * [KARAF-826] - KarArtifactInstaller should look for "features" classifier in place of "feature"
    * [KARAF-827] - Karaf Web deployer (Pax-Web) always tries to deploy the deploy/README file
    * [KARAF-867] - Inconsistent deployment behavior between bundle installer and feature installer
    * [KARAF-875] - Unable to define escape the event designator '!' using '\!'
    * [KARAF-883] - NPE in features-maven-plugin
    * [KARAF-889] - dev:framework commands incorrect workflow
    * [KARAF-891] - Problem with $ charact in wrap:mvn URL
    * [KARAF-892] - EventAdmin events from Gogo not being sent from Karaf's console bundle
    * [KARAF-893] - Wrong URL in release notes [1]
    * [KARAF-894] - Kar deployment failed
    * [KARAF-895] - NPE during webconsole startup
    * [KARAF-896] - Karaf webconsole exports wrong version of Felix webconsole package
    * [KARAF-902] - Jaas: Properties backing engine doesn't remove users
    * [KARAF-904] - add jetty.port=8181 to jetty.xml so that configuration for jetty connector could take effect
    * [KARAF-905] - propdel() method in the ConfigMBean didn't work
    * [KARAF-910] - Race between FeatureService and ConfigAdmin for resolving mvn: URLs?
    * [KARAF-913] - Omitted @Command on Gogo plugin is hard to debug because of NPE
    * [KARAF-915] - KAR deployment failed in the features XML is not the first entry of the KAR archive
    * [KARAF-917] - warn instead of info when failing to install a feature
    * [KARAF-918] - pax-url prerequisites for a feature are not respected
    * [KARAF-919] - Kar redeployment failed
    * [KARAF-920] - Feature autoinstall from kar failed
    * [KARAF-921] - maven eclipse plugin 2.8 does not work correctly with karaf
    * [KARAF-922] - features-maven-plugin ignores repository tags in feature files
    * [KARAF-923] - features-maven-plugin#AddFeaturesToRepoMojo does not handle spaces in repository urls well
    * [KARAF-926] - JAAS: Properties backing engine doesn't respect encryptor prefix and suffix
    * [KARAF-932] - ConfigMBean raise a NPE when dictionnary is null
    * [KARAF-935] - Deployer bundles do not start
    * [KARAF-937] - Karaf maven plugin generates feature configuration with dublicate entries
    * [KARAF-939] - the realm set for JAASLoginService in jetty.xml should be karaf but not the default
    * [KARAF-951] - dev:create-dump raises a NullPointerException
    * [KARAF-952] - config:propdel doesn't delete the property in the cfg file
    * [KARAF-954] - Double quotes missing in generated karaf-wrapper.conf
    * [KARAF-964] - admin feature is no more available in Karaf
    * [KARAF-982] - Utils.fromMaven cant deal with both classifier and extension
    * [KARAF-985] - LDAPLoginModule generates a large number of DirContext objects
    * [KARAF-1000] - Karaf distributions shouldn't include data and local-repo folders
    * [KARAF-1008] - WebConsole raise NCDF on service page
    * [KARAF-1015] - ConfigMBean should use a different config pid than the config shell
    * [KARAF-1020] - BundleWatcher should look for SNAPSHOT
    * [KARAF-1024] - Bug generating feature.xml when dependency has no manifest
    * [KARAF-1030] - Grep command breaks existing line formating
    * [KARAF-1031] - Performance issue in the features jaxb support
    * [KARAF-1033] - Set the Features validation optional
    * [KARAF-1036] - Some MBeans don't provide attribute correctly
    * [KARAF-1040] - Commands should not catch exceptions but should rethrow them
    * [KARAF-1050] - "osgi:start xxx" doesn't print anything
    * [KARAF-1051] - addcommand / removecommand / eval should be in the shell scope
    * [KARAF-1064] - BootstrapLogManager does not reuse the instantiated Handler
    * [KARAF-1065] - TextDumpProvider.createDump(DumpDestination) does not flush OutputStreamWriter
    * [KARAF-1066] - make features xml parser more forgiving
    * [KARAF-1067] - JDK7 compile issues with OsgiCommandSupport
    * [KARAF-1068] - Multiple blueprint plans using command namespace result in multiple converter registrations
    * [KARAF-1071] - Cursor keys do not work in Karaf shell on windows
    * [KARAF-1090] - deployers feature for fileinstall deployers that used to be in full profile
    * [KARAF-1101] - Completion does not work when quiesce manager is deployed
    * [KARAF-1106] - Jetty feature should use ServiceMix Spec for activation
    * [KARAF-1110] - Archetypes don't work
    * [KARAF-1111] - Add documentation about archetypes
    * [KARAF-1114] - osgi shell blueprint bundle shouldn't use lazy default-activation
    * [KARAF-1116] - Scripts fail at resolving java jdk.
    * [KARAF-1122] - Feature <configfile/> creates an empty file if the file URL is not resolved
    * [KARAF-1124] - karaf does not work properly with closing brace in the working directory path
    * [KARAF-1126] - features-maven-plugin:validate goal raises a NPE if karafConfig configuration is not set
    * [KARAF-1127] - Boot features failed to startup when karaf started from directory with closing brace; logs also unavailable
    * [KARAF-1131] - Remove PackageMBean and move operation to BundleMBean
    * [KARAF-1133] - Error executing command 'start' when starting a child instance
    * [KARAF-1139] - Redeploy kar cause installing old feature
    * [KARAF-1140] - config:list has NPE since it uses a service after ungetting the service reference
    * [KARAF-1143] - Karaf (Config Mbean) can not recognize the features when Karaf installation path containing blank space
    * [KARAF-1144] - When running a single remote command through SSH, the SCOPE variable isn't set
    * [KARAF-1149] - Karaf MBeanServer is not usable behind firewall
    * [KARAF-1150] - admin:create command creates broken org.ops4j.pax.url.mvn.cfg file
    * [KARAF-1158] - Karaf trunk fails to build on a clean repo
    * [KARAF-1161] - The shell:new action does not support the creation of arrays
    * [KARAF-1162] - A command that can not be loaded breaks the whole completion
    * [KARAF-1174] - war feature cannot be installed after the cxf
    * [KARAF-1175] - Duplicate key exception should be handle locally to avoid to affect the whole MBean
    * [KARAF-1178] - OBR feature doesn't work
    * [KARAF-1179] - "dev:watch *" doesn't notice new bundles added to the container
    * [KARAF-1188] - Console bundle depends on aries blueprint 0.3.x but imports [0.4.0,1)
    * [KARAF-1198] - Add Maven repository metadata in the system repository
    * [KARAF-1199] - dev:watch command issues "[WATCH]" announcements only to the issuing shell
    * [KARAF-1206] - Child instance doesn't start
    * [KARAF-1207] - Karaf tooling exam regression tests failing on NoSuchMethodError com.google.common.io.Files.deleteRecursively
    * [KARAF-1209] - ServiceRecipe blueprint exception in the log
    * [KARAF-1212] - NPE during update of the FeatureFinder
    * [KARAF-1215] - Shell scripts are incompatible with /bin/sh on Solaris
    * [KARAF-1216] - add-features-to-repo goal does not reclaim file handles fast enough
    * [KARAF-1219] - Assemblies ignore some resources
    * [KARAF-1220] - o.p.karaf.management bundles must stop when its configured keystore is not available
    * [KARAF-1222] - System shell hangs after karaf integration tests had been run
    * [KARAF-1225] - Manual build fails
    * [KARAF-1226] - Karaf Client cannot run a script
    * [KARAF-1228] - application-without-isolation enterprise feature doesn't install
    * [KARAF-1241] - admin script does not pass on JAVA_OPTS to instance
    * [KARAF-1242] - org.apache.karaf.scr.command format error
    * [KARAF-1243] - Karaf JMX Config MBean behaves in unpredictable ways
    * [KARAF-1244] - Deployer Transformers Supports Manifest Element without A Supporting Schema
    * [KARAF-1247] - maven-metadata-local.xml is not generated for bundles from a boot feature
    * [KARAF-1250] - Cleanup karaf-maven-plugin
    * [KARAF-1252] - Features core bundle should not depend to shell and management bundles
    * [KARAF-1253] - No completion on some commands with scope *
    * [KARAF-1256] - Archetypes should use dynamic variables
    * [KARAF-1257] - Configuration completers should avoid using getConfiguration method of config admin
    * [KARAF-1262] - Reintroduce package:* modules
    * [KARAF-1265] - Add AIX, HP-UX, Solaris, and "custom" support in the service wrapper
    * [KARAF-1267] - Align Pax-web features with std. features
    * [KARAF-1269] - aries-annotation feature doesn't install
    * [KARAF-1270] - Allow multiple commands in karaf 3.0.x bin/karaf script
    * [KARAF-1277] - Features deployer is not in the startup.properties
    * [KARAF-1278] - Comands: History does not work, can not edit current comand
    * [KARAF-1285] - Karaf 3.x - Karaf bundle archetype maven bundle plugin configuration is missing "instructions" tags.
    * [KARAF-1287] - Check documentation consistent
    * [KARAF-1293] - feature level start-level not completely finished....
    * [KARAF-1298] - dev:watch does not work in some cases
    * [KARAF-1304] - Quick help text for features:info command is erroneous
    * [KARAF-1305] - Error with Basic HTTP Authentication when using karaf realm
    * [KARAF-1318] - User bundles are treated as system bundles
    * [KARAF-1327] - Client: can't execute alias command
    * [KARAF-1331] - Source distribution is missing
    * [KARAF-1343] - Features repo points to the old pax-wicket app
    * [KARAF-1354] - SSH Log-In failes with "Authentication failed" with valid credentials
    * [KARAF-1359] - instance:create fails with Error executing command: Unable to find resource etc/config.properties
    * [KARAF-1360] - Configration update doesn't work
    * [KARAF-1362] - Karaf web console does not work on tabs features, http and  instance
    * [KARAF-1363] - Upgrade Jetty when bugfix for the Loggging to stderr bug is available
    * [KARAF-1367] - Remove line number logging from default logging config
    * [KARAF-1369] - Shell history does not log all commands
    * [KARAF-1370] - Loading snapshots from local repository does not work and the system dir should be read only
    * [KARAF-1374] - Fileinstaller logging by default is not enabled.
    * [KARAF-1388] - SSHD authorized key provider should log in DEBUG
    * [KARAF-1389] - SSH doesn't correctly use the karaf.base variable
    * [KARAF-1391] - Top-level build is missing obr module
    * [KARAF-1392] - Removing a KAR should uninstall the shipped features
    * [KARAF-1394] - Custom login modules not seen with Equinox
    * [KARAF-1395] - Instance commands are not started at bootstrap
    * [KARAF-1402] - Order in test framework generated features.xml is wrong
    * [KARAF-1406] - scanFeatures is incompatible with editing the etc/org.apache.karaf.features.cfg file
    * [KARAF-1407] - Use useDeployFolder(false) together with scan features fail
    * [KARAF-1411] - Spec activator doesn't start correctly
    * [KARAF-1416] - Blueprint archetype instructions is missing
    * [KARAF-1418] - Instance command imports an internal package from instance core
    * [KARAF-1430] - Default child instance config is not the same as the root instance
    * [KARAF-1439] - Re-add demos to Karaf 3.0 kits
    * [KARAF-1447] - Make the three big (cxf, amq, camel) play nicely with Karaf 3 without change
    * [KARAF-1450] - System bundles could be started without problems; all other bundles need to be forced
    * [KARAF-1452] - karaf-maven-plugin does not compile using java7
    * [KARAF-1455] - PAX Url (obr & war), Felix and Karaf (trunk) fight with each other resulting in an m_bundleLock
    * [KARAF-1459] - Problem with the OBR Resolver and Pax Web
    * [KARAF-1472] - Karaf manual references wrong artifacts
    * [KARAF-1482] - NullPointerException when deploying a feature without specified "install"-attribute
    * [KARAF-1483] - Help generation does not work for commands without noargs constructor
    * [KARAF-1485] - Use ShellTable in bundle:list
    * [KARAF-1487] - Bundles in deploy are deployed before startup process had been  finished
    * [KARAF-1491] - Admin service not able to start child instances when the JDK path contains a space on OS X
    * [KARAF-1496] - Bad login when using sufficient modules but when the first fail
    * [KARAF-1510] - Deployer kar demo Jenkins build issue
    * [KARAF-1513] - SSH keystore incompatible if generated with IBM JDK
    * [KARAF-1515] - features-generate-descriptor does not set the version in generated features
    * [KARAF-1528] - Web:List command not working anymore
    * [KARAF-1529] - command-watch messes the output when used with commands that take longer than the interval
    * [KARAF-1539] - kar feature should a boot one
    * [KARAF-1540] - featuresRepositories URL are not correct
    * [KARAF-1541] - jaas:realm-manage raises a NullPointerException
    * [KARAF-1544] - Several bugs in main around locking
    * [KARAF-1547] - NullpointerException when running commands on jdk 6 update 33 or jdk 7 update 5
    * [KARAF-1549] - Child instance features cfg file looks weird
    * [KARAF-1553] - Command service references should be AUTO_EXPORT_INTERFACES
    * [KARAF-1556] - standard-feature refers to non-existing "commands"-artifacts
    * [KARAF-1560] - config:update throws ClassCastException when used on a Configuration with boolean fields created in the web console
    * [KARAF-1561] - Restart Framework from Web Console's System Information tab results in Karaf dying
    * [KARAF-1564] - karaf feature validate plugin should support to load the exports packages from dependency features
    * [KARAF-1566] - instance:clone set the source instance in error
    * [KARAF-1571] - InstallKarsMojo fails to compile with jdk-7
    * [KARAF-1573] - Potential ZipFile leak at KarArtifactInstaller.install()
    * [KARAF-1585] - Installing using wrap protocol fails when specifying bundle version
    * [KARAF-1587] - When executing a command through the client, no error is printed in the console in case of errors
    * [KARAF-1591] - Upgrade to XBean 3.11.1
    * [KARAF-1596] - Karaf pom still refers geronimo-spec 1.0 whereas 1.1 is in use
    * [KARAF-1609] - command-watch info does not work
    * [KARAF-1617] - Blueprint deployer in combination with maven URL deployer creates wrong OSGi/blueprint/ file
    * [KARAF-1618] - Exception when restarting Karaf with shutdown -r . Can not delete jansi.dll
    * [KARAF-1624] - Rat checks fail
    * [KARAF-1635] - config.properties should be filtered
    * [KARAF-1655] - ManagementCfg configuratoinPointers in tooling-exam are incorrect
    * [KARAF-1666] - Default configuration for jetty.xml could create problems
    * [KARAF-1675] - Wrapper service requires a shell
    * [KARAF-1682] - Custom distribution section of dev guide is outdates
    * [KARAF-1683] - "no matching cipher found" error connecting via SSH to wrapper Karaf service - on Ubuntu
    * [KARAF-1695] - startup fails on Windows with only JRE installed
    * [KARAF-1699] - MBeans should support the same flags as the commands
    * [KARAF-1702] - Stopping the console bundle should not shutdown the osgi framework
    * [KARAF-1705] - Sync features between 2.3 and trunk
    * [KARAF-1713] - Build failure at manual module
    * [KARAF-1715] - Occasional freeze on feature:install webconsole
    * [KARAF-1723] - Provide meaningful thread names for karaf console
    * [KARAF-1734] - When logging into karaf with ssh as user karaf the prompt shows admin@root
    * [KARAF-1736] - Feature spring-struts can't be installed
    * [KARAF-1738] - features-generate-descriptor should support "install" attribute
    * [KARAF-1742] - Add command to show list of threads and stack traces
    * [KARAF-1746] - karaf github contributions rules
    * [KARAF-1751] - Spring feature dependencies specified too tightly
    * [KARAF-1754] - updating features.xml in auto deploy folder results in duplication
    * [KARAF-1756] - No SSH connection possible on Debian 6.0.5
    * [KARAF-1759] - No Way To Start obr Dependencies By Default
    * [KARAF-1765] - The obr Shell Deploy And Start Commands Always Deploy Optional Dependencies
    * [KARAF-1797] - NPE thrown from OsgiConfiguration.unregister
    * [KARAF-1803] - Servlets attribute doesn't work on HttpMBean
    * [KARAF-1804] - SystemMBean should support name attribute
    * [KARAF-1809] - Feature spring-web-portlet can't be installed
    * [KARAF-1814] - Cursor keys do not work when using bin/client on windows
    * [KARAF-1815] - When ssh'ing from a windows box into a unix box, arrow keys are not correctly interpreted
    * [KARAF-1824] - tooling-exam contains reference to wrong commons-io artifact
    * [KARAF-1827] - Build the manual within specific profiles
    * [KARAF-1835] - NPE in jaas:realm-manage command when multiple realm with the same name are present and not login module name is provided.
    * [KARAF-1838] - PackageMBean should return List<String> and support operation with bundleId
    * [KARAF-1839] - system bundle also should export javax.xml.ws.spi.http package
    * [KARAF-1840] - should also endorse saaj-api
    * [KARAF-1843] - SystemMBean reboot(time, cleanup) operation always cleanup
    * [KARAF-1845] - Minimal distribution doesn't start
    * [KARAF-1846] - jre.properties is corrupt in 3.0.0-SNAPSHOT
    * [KARAF-1851] - inconsistent FeaturesNamespaces versions
    * [KARAF-1853] - Attached kar deploys to a different snapshot build number than the main artifact
    * [KARAF-1861] - Test failure in exam regression tests : KarafWithBundleTest
    * [KARAF-1887] - Make integration tests more reliable by making sure the boot is finished
    * [KARAF-1900] - create project for private compendium build for java 7
    * [KARAF-1905] - ASM4 causes the Proxy/Weaving of Xerces, but that then causes validation factories to fail.
    * [KARAF-1914] - SSH client authentication randomly fails
    * [KARAF-1936] - LDAPLoginModule not working in 2.3.0 due to missing import of javax.net.SocketFactory
    * [KARAF-1938] - Lock logic should wait for start level change to occur
    * [KARAF-1963] - incorrect statement in developers-guide/branding-console.html
    * [KARAF-1978] - if use script to start a child instance then using karaf console admin:list can't get the instance correct status
    * [KARAF-1986] - instance.properties file doesn't get updated if karaf.name is changed
    * [KARAF-1992] - PropertiesLoginModule handles usernames with backslash not correct
    * [KARAF-2007] - features without start-level in features.xml are always started first
    * [KARAF-2008] - respectStartLvlDuringFeatureStartup does not respect feature-start-levels (only bundles)
    * [KARAF-2009] - Error on visualize Licences page
    * [KARAF-2011] - dev:watch looks in an incorrect local maven repository
    * [KARAF-2014] - karaf-maven-plugin uses null for karafVersion by default
    * [KARAF-2016] - Hudson paths hard coded in assembled zip and tar.gz distributions
    * [KARAF-2019] - Wrapper doesn't display all Linux statements
    * [KARAF-2026] - Two broken links on remote console manual page
    * [KARAF-2027] - invalid password option for admin:connect command in documenation
    * [KARAF-2029] - delete.user option missing from JDBCLoginModule
    * [KARAF-2035] - Not able to clone the root instance
    * [KARAF-2037] - karaf 3.0 with gemini blueprint
    * [KARAF-2051] - Duplicate definition of org.ops4j.pax.url.mvn.localRepository in org.ops4j.pax.url.mvn.cfg
    * [KARAF-2052] - Progress bar doesn't display properly on 80 char consoles
    * [KARAF-2057] - NOTICE and LICENSE files are not correct
    * [KARAF-2058] - ensure find the root instance entry when update root karaf instance name in instances.properties
    * [KARAF-2067] - instance-script terminates with NoClassDefFoundError
    * [KARAF-2074] - ensure admin service always load storage file instance.properties before each operation
    * [KARAF-2095] - Camel Route (JMS Polling) not working when installing feature "jndi"
    * [KARAF-2096] - Upgrade to Pax Exam 2.6.0
    * [KARAF-2115] - Sync weaving behavior between root and child instances
    * [KARAF-2117] - LDAP login module is broken
    * [KARAF-2133] - Generated title contain unresolved placeholder
    * [KARAF-2134] - Features deployer does not support mvn urls
    * [KARAF-2135] - Issue with jledit addition
    * [KARAF-2136] - ServiceMix Spec property mispelled in etc/system.properties
    * [KARAF-2143] - Remove Jetty JUL logger configuration
    * [KARAF-2144] - MainStartTest test fails when methods are executed in reverse order
    * [KARAF-2152] - wrong version for pax-jetty
    * [KARAF-2154] - Entering an empty command removes previous command in history
    * [KARAF-2155] - Wrapper/service does not start for karaf 3
    * [KARAF-2158] - Test InstanceServiceImplTest#testToSimulateRenameInstanceByExternalProcess fails when run isolated
    * [KARAF-2167] - org.apache.karaf.tooling.exam.container.internal.adaptions.KarafManipulatorFactory creates invalid version qualifier
    * [KARAF-2171] - Start Karaf as service shows 'Activator' error in wrapper.log
    * [KARAF-2178] - remove karaf-org.osgi.core.jar
    * [KARAF-2181] - jpa feature can't be installed "out of the box"
    * [KARAF-2188] - JPA bundle error out at shutdown
    * [KARAF-2189] - blueprint disable service too soon at shutdown
    * [KARAF-2191] - Karaf 3.0.x CLONE - Karaf startup fails with NullPointerException when logfile can't be written
    * [KARAF-2193] - Upgrade to Pax URL 1.5.2
    * [KARAF-2194] - Karaf regression test fails on BootClasspathLibraryOptionTest
    * [KARAF-2209] - Allow overriding system properties
    * [KARAF-2215] - <packaging>kar</packaging> fails to attach artifact
    * [KARAF-2220] - spring-jms feature shouldn't depend on spring-web
    * [KARAF-2221] - The admin service is not safe when used to create / start agents quickly
    * [KARAF-2225] - jaas PropertiesLoginModule does not complain when users.properties is not found but fails later
    * [KARAF-2226] - Properties with pathname are not correct on windows in jaas PropertiesLoginModule

** Dependency upgrade
    * [KARAF-449] - Upgrade to PAX-WEB 1.1.0 (SNAPSHOT right now)
    * [KARAF-529] - Upgrade to Pax URL 1.3.2
    * [KARAF-582] - Upgrade Apache Mina to 2.0.3
    * [KARAF-590] - Upgrade to pax-logging 1.6.2
    * [KARAF-591] - Upgrade aopalliance ServiceMix bundle to 1.0_5
    * [KARAF-592] - Upgrade asm ServiceMix bundle to 3.3_2
    * [KARAF-593] - Upgrade cglib ServiceMix bundle to 2.1_3_7
    * [KARAF-594] - Upgrade commons-codec ServiceMix bundle to 1.3_4
    * [KARAF-595] - Upgrade commons-collections ServiceMix bundle to 3.2.1_2
    * [KARAF-596] - Upgrade commons-lang ServiceMix bundle to 2.4_5
    * [KARAF-597] - Upgrade jasypt ServiceMix bundle to 1.7_3
    * [KARAF-598] - Upgrade junit ServiceMix bundle to 4.7_3
    * [KARAF-607] - Upgrade felix-framework to 3.2.1
    * [KARAF-613] - Upgrade to Blueprint 0.3.1
    * [KARAF-672] - Upgrade to felix event admin 1.2.12
    * [KARAF-679] - Update jansi to version 1.6
    * [KARAF-681] - Upgrade to Pax URL 1.3.4
    * [KARAF-682] - upgrade to jetty 7.4.2.v20110526
    * [KARAF-757] - upgrade to jetty 7.4.4.v20110707
    * [KARAF-767] - Upgrade to Felix Framework 3.2.2
    * [KARAF-768] - Upgrade to Eclipse Equinox 3.6.2.R36x_v20110210
    * [KARAF-770] - Upgrade to Eclipse Equinox 3.7.1
    * [KARAF-789] - Upgrade jetty to 7.4.5.v20110725
    * [KARAF-791] - Upgrade paxurl to 1.3.5
    * [KARAF-793] - Upgrade paxrunner to 1.7.5
    * [KARAF-797] - Upgrade to Pax Web 1.1.1
    * [KARAF-834] - Upgrade to Spring 3.0.6 - in std. features.xml
    * [KARAF-854] - Upgrade to Felix Framework 4.0.1
    * [KARAF-855] - Add support for OSGi R4.3
    * [KARAF-903] - Upgrade to Pax Web 1.1.2
    * [KARAF-928] - Support of Gemini Blueprint
    * [KARAF-961] - Update Mina SSHD to version 0.6.0
    * [KARAF-962] - Update easymock to version 2.5.2
    * [KARAF-966] - Update xbean to 3.8
    * [KARAF-989] - Upgrade to Aries Application 0.4
    * [KARAF-990] - Upgrade to Aries JMX 0.4
    * [KARAF-991] - Upgrade to Aries JPA 0.4
    * [KARAF-992] - Upgrade to Aries JNDI 0.4
    * [KARAF-993] - Upgrade to Aries Proxy 0.4
    * [KARAF-994] - Upgrade to Aries Transaction 0.4
    * [KARAF-995] - Upgrade to Aries Util 0.4
    * [KARAF-998] - upgrade to jetty 7.5.4.v20111024
    * [KARAF-1028] - Upgrade to Felix Framework 4.0.2
    * [KARAF-1042] - Upgrade to jline 2.6
    * [KARAF-1092] - Upgrade to Jasypt 1.8
    * [KARAF-1107] - Karaf should use directly commons-* bundles
    * [KARAF-1120] - Upgrade to Spring 3.1.0.RELEASE
    * [KARAF-1135] - Upgrade pax exam to 2.4.0
    * [KARAF-1154] - Upgrade to eventadmin 1.2.14
    * [KARAF-1155] - Upgrade to Apache POM 10
    * [KARAF-1163] - Upgrade to Guava 11.0.1
    * [KARAF-1172] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1177] - Upgrade to standalone tinybundle 1.0.0
    * [KARAF-1183] - Upgrade to slf4j 1.6.4
    * [KARAF-1184] - Upgrade to JUnit 4.10
    * [KARAF-1185] - Upgrade to Pax Logging 1.6.5
    * [KARAF-1192] - Upgrade to pax-web 2.0.0
    * [KARAF-1193] - Upgrade to pax-url 1.4.0.RC1
    * [KARAF-1201] - Update jline groupid in main pom and shell/console/pom
    * [KARAF-1205] - Upgrade to maven-bundle-plugin 2.3.7
    * [KARAF-1224] - Upgrade to Spring 3.1.1.RELEASE
    * [KARAF-1229] - Upgrade to jansi 1.8
    * [KARAF-1230] - Upgrade to jansi 1.8
    * [KARAF-1231] - Upgrade to EasyMock 3.1
    * [KARAF-1232] - Upgrade to Jasypt 1.9.0
    * [KARAF-1233] - Upgrade to asm 3.3.1
    * [KARAF-1258] - Upgrade to Jetty 8.1.4
    * [KARAF-1259] - Upgrade to pax-url 1.4.0
    * [KARAF-1272] - Upgrade to fileinstall 3.2.0
    * [KARAF-1346] - Upgrade to Mina 2.0.4
    * [KARAF-1378] - Upgrade to fileinstall 3.2.2
    * [KARAF-1456] - Upgrade to blueprint 1.0.0
    * [KARAF-1458] - Upgrade to ServiceMix Specs 2.0
    * [KARAF-1490] - upgrade to pax-logging 1.6.7
    * [KARAF-1517] - Upgrade to OSGi Compendium 4.3.0
    * [KARAF-1518] - Avoid to depend to OSGi Compendium
    * [KARAF-1520] - Upgrade to Jansi 1.9
    * [KARAF-1526] - Upgrade to pax-url 1.4.2
    * [KARAF-1531] - Upgrade to Felix ConfigAdmin 1.4.0
    * [KARAF-1534] - Upgrade to JLine 2.7
    * [KARAF-1535] - Upgrade to Felix Utils 1.2.0
    * [KARAF-1536] - Upgrade to Felix FileInstall 3.2.4
    * [KARAF-1567] - Upgrade to pax-web 2.0.1
    * [KARAF-1568] - Upgrade to sshd 0.7.0
    * [KARAF-1570] - Upgrade maven-external-dependency-plugin to 0.5
    * [KARAF-1577] - Upgrade to slf4j 1.6.6
    * [KARAF-1578] - Upgrade to pax-logging 1.6.9
    * [KARAF-1579] - Upgrade to commons-compress 1.4.1
    * [KARAF-1581] - Upgrade to commons-jexl 2.1.1
    * [KARAF-1582] - Upgrade to Felix BundleRepository 1.6.6
    * [KARAF-1592] - Upgrade to quiesce api 1.0.1-SNAPSHOT
    * [KARAF-1597] - Upgrade to geronimo-jaspic 1.1
    * [KARAF-1598] - Upgrade to pax-runner 1.7.6
    * [KARAF-1599] - Upgrade to pax-swissbox 1.5.1
    * [KARAF-1601] - Upgrade to maven-antrun-plugin 1.7
    * [KARAF-1603] - Upgrade to maven-surefire-plugin 2.12
    * [KARAF-1604] - Upgrade to maven-assembly-plugin 2.3
    * [KARAF-1606] - Upgrade to maven-compiler-plugin 2.5.1
    * [KARAF-1608] - Upgrade to maven-dependency-plugin 2.4
    * [KARAF-1610] - Upgrade to maven-eclipse-plugin 2.9
    * [KARAF-1611] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1612] - Upgrade to maven-enforcer-plugin 1.1
    * [KARAF-1613] - Upgrade to maven-jar-plugin 2.4
    * [KARAF-1615] - Upgrade to maven-javadoc-plugin 2.8.1
    * [KARAF-1616] - Upgrade to maven-release-plugin 2.3.2
    * [KARAF-1619] - Upgrade to maven-remote-resources-plugin 1.3
    * [KARAF-1620] - Upgrade to maven-shade-plugin 1.7
    * [KARAF-1621] - Upgrade to maven-site-plugin 3.1
    * [KARAF-1622] - Upgrade to maven-war-plugin 2.2
    * [KARAF-1623] - Upgrade to apache-rat-plugin 0.8
    * [KARAF-1630] - Upgrade to Aries Util 1.0.0
    * [KARAF-1631] - Upgrade to Aries Blueprint API 1.0.0
    * [KARAF-1632] - Upgrade to Aries JMX API 1.0.0
    * [KARAF-1634] - Upgrade to Felix Framework 4.0.3
    * [KARAF-1636] - Upgrade to Equinox 3.8
    * [KARAF-1638] - Upgrade to Pax Web 2.0.1
    * [KARAF-1642] - Upgrade to exec-maven-plugin 1.2.1
    * [KARAF-1643] - Upgrade to jaxb2-maven-plugin 1.3.1
    * [KARAF-1644] - Upgrade to Aries JNDI API 1.0.0
    * [KARAF-1645] - Upgrade to Aries Quiesce Manager 1.0.0
    * [KARAF-1646] - Upgrade to Pax Web 2.0.2
    * [KARAF-1649] - Upgrade to Aries JPA API 1.0.0
    * [KARAF-1650] - Upgrade to Aries Blueprint Annotation API 1.0.0
    * [KARAF-1651] - Upgrade to Aries JMX Blueprint API 1.0.0
    * [KARAF-1652] - Upgrade to Aries JMX Core 1.0.0
    * [KARAF-1653] - Upgrade to Aries JNDI Core 1.0.0
    * [KARAF-1654] - Upgrade to Aries Proxy API 1.0.0
    * [KARAF-1656] - use quiesce API 1.0.0 final instead of 1.0.1-SNAPSHOT
    * [KARAF-1658] - Upgrade to Aries JMX 1.0.0
    * [KARAF-1660] - Upgrade Aries Application API to 1.0.0
    * [KARAF-1661] - Upgrade Aries Application Utils to 1.0.0
    * [KARAF-1662] - Upgrade Aries Proxy Impl to 1.0.0
    * [KARAF-1663] - Upgrade Aries transaction manager to 1.0.0
    * [KARAF-1664] - Upgrade Aries JNDI legacy support to 1.0.0
    * [KARAF-1665] - Upgrade Aries JNDI rmi to 1.0.0
    * [KARAF-1668] - Upgrade blueprint core to 1.0.0
    * [KARAF-1669] - Upgrade Aries Application to 1.0.0
    * [KARAF-1670] - Uprade Aries Application Management to 1.0.0
    * [KARAF-1671] - Uprade Aries Application Modeller to 1.0.0
    * [KARAF-1672] - Upgrade Aries Application Deployment 1.0.0
    * [KARAF-1673] - Upgrade to Aries JPA Blueprint 1.0.0
    * [KARAF-1685] - Upgrade to Aries Blueprint Annotation Impl 1.0.0
    * [KARAF-1686] - Upgrade to Aries Blueprint CM 1.0.0
    * [KARAF-1687] - Upgrade to Aries Blueprint Core Compatibility 1.0.0
    * [KARAF-1688] - Upgrade to Aries Blueprint JEXL Evaluator 1.0.0
    * [KARAF-1689] - Upgrade to Aries JNDI URL 1.0.0
    * [KARAF-1690] - Upgrade to Aries Transaction Wrappers 1.0.0
    * [KARAF-1691] - Remove Aries Quiesce dependencies
    * [KARAF-1696] - Upgrade to Spring 3.1.2.RELEASE
    * [KARAF-1704] - Upgrade to Aries Transaction Blueprint 1.0.0
    * [KARAF-1711] - Upgrade to pax-web 2.1.0
    * [KARAF-1719] - Upgrade to javax.mail 1.4.5
    * [KARAF-1722] - Upgrade to Aries JMX Blueprint Core 1.0.1
    * [KARAF-1732] - Upgrade to ServiceMix Ant bundle 1.8.4_1
    * [KARAF-1733] - Upgrade to ServiceMix aopalliance bundle  1.0_6
    * [KARAF-1737] - Upgrade to ServiceMix cglib bundle 2.2.2_1
    * [KARAF-1739] - Upgrade to Jetty 8.1.5.v20120716
    * [KARAF-1744] - Upgrade to guava 13.0
    * [KARAF-1745] - Upgrade to Felix WebConsole 4.0.0
    * [KARAF-1747] - Update to jline 2.8
    * [KARAF-1769] - Upgrade to pax-logging 1.6.10
    * [KARAF-1773] - Upgrade to pax-logging 1.6.10
    * [KARAF-1774] - Upgrade to pax-url 1.5.0
    * [KARAF-1779] - Upgrade to guava 13.0.1
    * [KARAF-1781] - Upgrade to Mina 2.0.5
    * [KARAF-1787] - Upgrade to commons-fileupload 1.2.2
    * [KARAF-1788] - Upgrade to commons-io 2.4
    * [KARAF-1801] - slf4j 1.7.0
    * [KARAF-1816] - Upgrade to jline 2.9
    * [KARAF-1817] - Upgrade to sshd 0.8.0
    * [KARAF-1819] - Upgrade to Mina 2.0.5
    * [KARAF-1859] - Upgrade to ServiceMix Specs 2.1
    * [KARAF-1862] - Upgrade to Felix FileInstall 3.2.6
    * [KARAF-1863] - Upgrade to sshd 0.8.0
    * [KARAF-1865] - Upgrade to paxlogging 1.7.0
    * [KARAF-1866] - Upgrade to felix config admin 1.4.0
    * [KARAF-1867] - Upgrade to felix event admin 1.3.0
    * [KARAF-1868] - Upgrade aries bundles to 1.0.1 (blueprint-core, jmx-core, transaction-manager, jpa-container-context)
    * [KARAF-1884] - Upgrade exam to Pax Exam 2.6.0
    * [KARAF-1893] - Upgrade to Jetty 8.1.7.v20120910
    * [KARAF-1904] - Upgrade to Mina 2.0.7
    * [KARAF-1908] - Upgrade to XBean 3.12
    * [KARAF-1948] - Upgrade to Apache POM 11
    * [KARAF-1955] - Upgrade to ServiceMix Specs 2.2.0
    * [KARAF-1966] - Upgrade to Pax Web 3.0
    * [KARAF-1977] - Upgrade to OSGi 4.3.1
    * [KARAF-1981] - Upgrade to Felix ConfigAdmin 1.6.0
    * [KARAF-2012] - Upgrade to Pax Web 3.0.0.M1
    * [KARAF-2055] - Upgrade to Apache POM 12
    * [KARAF-2061] - Upgrade to commons-codec 1.7
    * [KARAF-2063] - Upgrade to Felix EventAdmin 1.3.2
    * [KARAF-2064] - Upgrade to Felix Metatype 1.0.6
    * [KARAF-2065] - Upgrade to Felix SCR 1.6.2
    * [KARAF-2068] - Upgrade to ASM 4.1
    * [KARAF-2080] - Upgrade to slf4j 1.7.2
    * [KARAF-2081] - Upgrade to JUnit 4.11
    * [KARAF-2084] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2085] - Upgrade to Jetty 8.1.8.v20121106
    * [KARAF-2086] - Upgrade to Spring 3.1.3.RELEASE
    * [KARAF-2147] - Upgrade to Aries JMX 1.1.1
    * [KARAF-2148] - Upgrade to Aries Proxy 1.0.1
    * [KARAF-2149] - Upgrade to Aries Blueprint Core 1.1.0
    * [KARAF-2150] - Upgrade to Aries Blueprint CM 1.0.1
    * [KARAF-2157] - Upgrade to Aries Util 1.1.0
    * [KARAF-2176] - Upgrade to Pax URL 1.5.1
    * [KARAF-2177] - Upgrade to Felix Framework 4.2.0
    * [KARAF-2184] - Upgrade to Spring 3.1.4.RELEASE
    * [KARAF-2197] - Upgrade to JLine 2.10
    * [KARAF-2208] - Upgrade to Aries JPA Blueprint 1.0.1
    * [KARAF-2227] - Upgrade to Pax-Web 3.0.0.M3 and Jetty 8.1.9.v20130131
    * [KARAF-2232] - Upgrade to Aries Blueprint Core 1.1.1

** Improvement
    * [KARAF-216] - Create an admin:clone command
    * [KARAF-338] - Upgrade Karaf to version 1.0.0 of pax-web
    * [KARAF-362] - Add documentation how to build a custom karaf distribution including branding
    * [KARAF-366] - Remove sax parser code from features core
    * [KARAF-402] - Gather features and cmdhelp maven plugins into a generic karaf maven plugin
    * [KARAF-403] - Improve Bundle-Description header display
    * [KARAF-404] - Upgrade to felix maven-bundle-plugin 2.3.4
    * [KARAF-412] - Documentation: Add notes on how to make multiple configuration files available to the bundle context.
    * [KARAF-422] - If no version was found, features-maven-plugin try to create an artifact with a null version
    * [KARAF-445] - Add completion for shell aliases
    * [KARAF-447] - Add JDBC lock implementation for PostgreSQL
    * [KARAF-460] - Add commands to manipulate kar archives
    * [KARAF-461] - dev:create-dump command should generate a cleaner zip file name
    * [KARAF-465] - Merge http with war feature
    * [KARAF-469] - Remove duplicate code
    * [KARAF-470] - Move Main variables management in util
    * [KARAF-471] - would be nice for a "already exists" call to features:addurl to trigger a refresh
    * [KARAF-476] - The admin-command should be extended to handle RMI-server-port settings
    * [KARAF-483] - pax-web jetty.xml configfile should contain default security realm
    * [KARAF-484] - Upgrade to Felix Framework 3.0.9
    * [KARAF-487] - Improve --help information for obr:list
    * [KARAF-488] - obr:list should also include the bundle-symbolic-name of the packages it lists as this is used to execute other OBR commands
    * [KARAF-495] - Add a Tutorials section to the website.
    * [KARAF-513] - The ssh:ssh and admin:connect command do not allow passing a command to execute
    * [KARAF-514] - When starting a child instance, there's no way to wait until it's started
    * [KARAF-517] - Upgrade to pax-runner 1.6.1
    * [KARAF-530] - Rename org.apache.karaf.assemblies/apache-karaf to org.apache.karaf/apache-karaf
    * [KARAF-533] - Improve depdencny handling to manual
    * [KARAF-539] - Document configfile xml tag of features
    * [KARAF-540] - Add IdentificationUtils in Karaf utils
    * [KARAF-542] - Support of next line with '>' character
    * [KARAF-544] - Documentation on how to use the JMX console
    * [KARAF-551] - Implement the shell:source command
    * [KARAF-554] - Add karaf version in system properties and display in shell:info command output
    * [KARAF-560] - Modify all console log commands to receive a "logger" argument.
    * [KARAF-561] - Make obr:list output similar to osgi:list
    * [KARAF-563] - Adjustable PermSize and MaxPermSize in karaf script
    * [KARAF-564] - Allow configuring features OBR resolver to resolve optional imports as well
    * [KARAF-573] - Print out that karaf has to be restarted if using framework with new framework
    * [KARAF-574] - Re-introduce export version in packages:exports command
    * [KARAF-576] - introduce start-level attribute for feature element in features.xml
    * [KARAF-588] - Some fixes to Karaf Site
    * [KARAF-606] - JAAS: Allow LDAPLoginModule to supply role "DN" from LDAP group search
    * [KARAF-608] - Allow for multi-stage boot features installation
    * [KARAF-614] - Add warning to osgi:shutdown to avoid inadvertently shutting down the container
    * [KARAF-618] - Align Cellar major version with the Karaf one
    * [KARAF-623] - Create a shell completer for jaas realms
    * [KARAF-638] - Use the same naming convention in commands
    * [KARAF-640] - The Cellar's Hazelcast instance should be configured via Configuration Admin.
    * [KARAF-645] - Add a flag to suppress --help Option output on
    * [KARAF-651] - features-maven-plugin should "embed" the Karaf features descriptor
    * [KARAF-654] - Merge jetty feature with jetty-jaas feature
    * [KARAF-659] - correct manuall about http-whiteboard feature
    * [KARAF-661] - Typing ^D should behave as on Unix
    * [KARAF-662] - Clarify relationship of config.properties and custom.properties
    * [KARAF-663] - features-maven-plugin add-features-to-repo should embed Karaf core features descriptor
    * [KARAF-664] - Use Wiki syntax in bundle.info instead of Ansi control sequences
    * [KARAF-665] - Rename karaf-maven-plugin goals
    * [KARAF-668] - The karaf web console doesn't list web contexts
    * [KARAF-693] - features:addurl raises "Premature end of file" when network is not available
    * [KARAF-698] - Technical edits to User's Guide
    * [KARAF-699] - Grammar fixes to source code files
    * [KARAF-700] - Updates to developer's guide
    * [KARAF-705] - Upgrade demos/web to use jdk 1.6 on the trunk.
    * [KARAF-713] - Refactor karaf main
    * [KARAF-720] - Make 3.0.x source JDK7 compliant for type handling.
    * [KARAF-725] - Read-only commands shouldn't ask for system bundle confirmation
    * [KARAF-729] - Karaf Maven Plugin source code cleanup
    * [KARAF-733] - Doc fixes to the quick start guide and overview page
    * [KARAF-737] - The Karaf WebConsole should not only list Http contexts but also web contexts as in web:list
    * [KARAF-752] - Editorial fixes to the assemblies/ configuration files
    * [KARAF-755] - Recommended improvements to help commands
    * [KARAF-756] - Add ability to have KeyStoreManager to wait for SSL keystore to be fully initialize by other bundle through timeout
    * [KARAF-762] - dev:watch should support multiple bundle IDs
    * [KARAF-764] - Correct links to ops4j in documentation
    * [KARAF-772] - Cleanup Karaf assemblies
    * [KARAF-783] - Improve security docs wrt role policies
    * [KARAF-784] - Add date in the default Karaf log
    * [KARAF-786] - Add more MBeans
    * [KARAF-795] - Kar builder uses a different version for easymock then the rest of the project
    * [KARAF-802] - Upgrade mail bundle version to 1.4.4.
    * [KARAF-807] - Add a features name to the karaf-cellar features.xml
    * [KARAF-808] - Remove author attribute tags from Karaf source code
    * [KARAF-813] - Install Pax URL OBR with the OBR feature
    * [KARAF-817] - Allow to set Karaf window name via parameter
    * [KARAF-818] - Allow JAVA_MAX_MEM, JAVA_PERM_MEM, JAVA_MIN_MEM, JAVA_MAX_PERM_MEM the same way as for linux startup file
    * [KARAF-819] - Rename Karaf features name (and sub-projects features name) to use full qualified name
    * [KARAF-829] - Support of Java 7
    * [KARAF-832] - build html manual by default, use a profile for pdf generation
    * [KARAF-840] - specify javax.annotation packages version to 1.1.0 for jre-1.6 as Annotation 1.1 Spec is used for Java 6
    * [KARAF-847] - Provide Karaf features covering all Spring bundles
    * [KARAF-851] - Upgrade Maven plugins in use
    * [KARAF-864] - obr:deploy command should provide a start option
    * [KARAF-881] - Make aliases to osgi:* commands to be more clear for the users
    * [KARAF-885] - StartBundle doesn't deploy all bundles if one failed
    * [KARAF-886] - Document security properties in the relevant configuration files
    * [KARAF-888] - Add a Karaf Config Service
    * [KARAF-897] - Fixing text in bundle.info files
    * [KARAF-898] - Config delete operation should remove the pid.cfg file
    * [KARAF-899] - Upgrade to Apache Felix Gogo version 0.10.0
    * [KARAF-900] - Shutdown command should display the instance name
    * [KARAF-907] - Include 64 bits wrapper library
    * [KARAF-916] - use org.apache.aries.jmx.core instead of org.apache.aries.jmx
    * [KARAF-925] - Karaf config.properties doesn't define J2SE-1.6 and J2SE-1.7 execution environment
    * [KARAF-930] - Bundles MBean should mimic the BundleSelector like osgi:* commands
    * [KARAF-931] - Add includeTransitiveDependencies option to features-generate-descriptor Maven goal
    * [KARAF-936] - Features info command should display the start level of a bundle if available.
    * [KARAF-940] - Align various bat and sh scripts
    * [KARAF-942] - Expose Karaf RMI registry as a service
    * [KARAF-945] - Use singular for shell commands
    * [KARAF-946] - MBeans should be renamed in singular
    * [KARAF-947] - Rename admin service to instance service
    * [KARAF-948] - Apply normalized shell command format
    * [KARAF-956] - jaas module should throw generic FailedLoginException
    * [KARAF-963] - Refactoring of the modules
    * [KARAF-965] - Allow features-maven-plugin to handle multiple versions of the same feature
    * [KARAF-968] - Features file should require name attribute on features element
    * [KARAF-970] - feature <config/> tag doesn't create the cfg file
    * [KARAF-981] - Set kar as a boot feature
    * [KARAF-999] - local-repo folder shouldn't be used
    * [KARAF-1001] - Consistency between command annotation and blueprint
    * [KARAF-1002] - Switch the blueprint extender to synchronous mode
    * [KARAF-1005] - Port current karaf integration tests to new test framework
    * [KARAF-1010] - Add 64Bit ServiceWrapper to karaf
    * [KARAF-1013] - Less verbose in log when mistyped commands at INFO level
    * [KARAF-1014] - Make files specified by ${includes} optional
    * [KARAF-1017] - Use the Pax Web features.xml for Pax Web 2.0 and further
    * [KARAF-1019] - Set java memory options only when required
    * [KARAF-1021] - karaf-maven-plugin does not prefix non-bundles with the wrap: prefix when generating a feature.xml
    * [KARAF-1022] - java.io.tmpdir system property should use $KARAF_DATA/tmp in place of $KARAF_BASE/tmp
    * [KARAF-1023] - Add karaf activators for jars in the lib folder
    * [KARAF-1032] - Text improvements to Features XSD
    * [KARAF-1035] - Allow Karaf config commands to accept the pid as an option
    * [KARAF-1039] - Rename the org.apache.felix.gogo.commands package to org.apache.karaf.shell.commands
    * [KARAF-1041] - create-kar goal should handle configfile
    * [KARAF-1045] - Improved help system
    * [KARAF-1048] - make pom.xml eclipse 3.7 m2e friendly
    * [KARAF-1057] - Update the list of supported execution environments
    * [KARAF-1069] - create a ServerInfo service that Main sets up that exposes karaf home, base, data, instances, and the command line arguments
    * [KARAF-1072] - Provide man command as an alias to help
    * [KARAF-1073] - Add -r (reboot) and -h (halt) options to the system:shutdown command
    * [KARAF-1077] - New service:list command focused on services instead of bundles
    * [KARAF-1080] - Spring feature repo for spring related features
    * [KARAF-1087] - kar archetype
    * [KARAF-1088] - assembly archetype
    * [KARAF-1091] - Upgrade maven bundle plugin to 2.3.6
    * [KARAF-1093] - Make org.apache.karaf.util a bundle
    * [KARAF-1112] - shell:sleep should be in seconds
    * [KARAF-1115] - Add a jre.properties.cxf with all changes required to run cxf
    * [KARAF-1118] - Enable install of CXF into karaf with a simple command
    * [KARAF-1119] - expose rmiregistry port as a service property
    * [KARAF-1129] - Allow configuring rmi Registry host as well as port
    * [KARAF-1142] - Get rid of the code using StartLevel and PackageAdmin has they are now deprecated
    * [KARAF-1145] - Upgrade to pax-logging 1.6.4
    * [KARAF-1167] - No SCR implementation supplied with Karaf
    * [KARAF-1181] - Add tab completer to the help command
    * [KARAF-1186] - Provide a migration/update section in the manual
    * [KARAF-1191] - Switch back to millis per default on shell:sleep and introduce -s option
    * [KARAF-1197] - AdminService - Allow to provide a PrintStream so you can capture or control activity on the console
    * [KARAF-1208] - Rename features to feature
    * [KARAF-1214] - Improvement in Karaf log4j appender docs
    * [KARAF-1245] - blueprint deployer and spring deployer should get started before features.core bundle
    * [KARAF-1261] - Jaas commands should allow you to distinguish between to realms that have the same name
    * [KARAF-1271] - Feature service should log in DEBUG instead of INFO
    * [KARAF-1273] - Combine the commands and mbeans for osgi framework related stuff into one module set
    * [KARAF-1276] - Add activation="eager" to springListener bean in shell/osgi/src/main/resources/OSGI-INF/blueprint/shell-osgi.xml
    * [KARAF-1281] - New table support for shell
    * [KARAF-1282] - Remove osgi sources from karaf main
    * [KARAF-1289] - Move the standard feature definition to the feature.xml
    * [KARAF-1290] - Kar deployer should move into the kar module
    * [KARAF-1291] - Features deployer should be in the features module
    * [KARAF-1295] - serviceUrl in org.apache.karaf.management.cfg should use 0.0.0.0 but not localhost
    * [KARAF-1296] - Karaf startup without startup.properties
    * [KARAF-1299] - Make sure that all karaf archetype contain a description
    * [KARAF-1300] - features managment should be more robust if customer features descriptor file has duplicated feature name
    * [KARAF-1302] - Replace MBeanRegistrer with aries jmx whiteboard and remove .management modules
    * [KARAF-1307] - Refactor http command and mbean to new module layout and change to use jmx whiteboard
    * [KARAF-1328] - jclouds feature repo url has been changed after version 1.0
    * [KARAF-1351] - Improvements to features-generate-descriptor
    * [KARAF-1383] - Fix warning messages during bundle build
    * [KARAF-1385] - Be able to disable the default PropertiesLoginModule
    * [KARAF-1390] - Embedded features should have POM dependencies on the projects they represent
    * [KARAF-1396] - config:list command description should be enhanced
    * [KARAF-1410] - Error in stop script if KARAF_DEBUG is enabled
    * [KARAF-1427] - Split shell console into API and impl
    * [KARAF-1438] - Simplify imports in bundle plugin for deployers
    * [KARAF-1444] - Rename shell.shell to shell.commands.impl and make packages private
    * [KARAF-1446] - Move help system and table out of console into separate modules
    * [KARAF-1448] - diag command should print the full stacktrace instead of the messages only
    * [KARAF-1449] - The InstallKarMojo fails with a nullpointer if an artifact could not be retrieved
    * [KARAF-1462] - Improvements to shell tables
    * [KARAF-1468] - Use the geronimo servlet spec instead of jetty' since it's backward compatible
    * [KARAF-1470] - Cleanup: Remove no longer required org.apache.karaf.tooling.testing project
    * [KARAF-1471] - Use project.version instead of direct version in manual
    * [KARAF-1489] - Add an itest showing how to correctly use tinybundles with provision in paxexam-karaf
    * [KARAF-1499] - InfoAction shell command should sort the properties from InfoProvider instances
    * [KARAF-1500] - Forgot a space between hours and minutes in InfoAction.java
AF-1574] - When two karaf containers are started locally, an exception is displayed at startup.  A nicer message would be better.
    * [KARAF-1575] - Features provided by karaf do not have any description
    * [KARAF-1580] - Demo should exclude Eclipse and IntelliJ IDEA files
    * [KARAF-1586] - wrapper:install command should be usable outside OSGi too
    * [KARAF-1600] - Avoid duplicate feature and bundle resolution when installing cascading features
    * [KARAF-1607] - Move dev commands and services to bundle, system and shell
    * [KARAF-1628] - Make client indepenent of console
    * [KARAF-1629] - Command completer should complete only on first scope level
    * [KARAF-1640] - Make sure the local console is fully working before the user can type commands
    * [KARAF-1641] - Avoid embedding jline in the console
    * [KARAF-1657] - org.ops4j.pax.url.mvn.proxySupport=false
    * [KARAF-1659] - Use dependencyManagement in features assemblies
    * [KARAF-1667] - Improve wait startup message
    * [KARAF-1676] - OBR URL's in Karaf have no simple identifier
    * [KARAF-1678] - WebConsole still use "admin" instead of "instance"
    * [KARAF-1693] - Rename command-watch to watch
    * [KARAF-1700] - update manual to reflect JDBC Lock updates
    * [KARAF-1710] - Remove @version headers from source
    * [KARAF-1712] - Use Pax-Web Features
    * [KARAF-1752] - hard coded features uri in features deployer feature discovery
    * [KARAF-1757] - Welcome message incorrect during ssh session or using bin/client.
    * [KARAF-1798] - Use exam framework for our itests and increase tests coverage
    * [KARAF-1811] - Remove section about console colors from manual
    * [KARAF-1818] - Improve user guide
    * [KARAF-1828] - Build src distributions within specific profiles
    * [KARAF-1834] - Make KarafTestSupport available externally
    * [KARAF-1836] - Provide a login module class name completer.
    * [KARAF-1850] - feature:list should use alphabetical order
    * [KARAF-1878] - Feature bundle start up order by startLvl
    * [KARAF-1889] - Change logging in FeaturesServiceImpl
    * [KARAF-1903] - Refactore osgicore and osgicompendium modules
    * [KARAF-1933] - Add id for Maven repository
    * [KARAF-1940] - admin/instance should be provided as a feature
    * [KARAF-1951] - Remove workaround for KARAF-1117
    * [KARAF-1952] - Allow Karaf monitoring using host:port
    * [KARAF-1989] - Add CXF DOSGi feature uri to org.apache.karaf.features.repos.cfg
    * [KARAF-1990] - Add Cellar feature URI in org.apache.karaf.features.repos.cfg
    * [KARAF-2003] - Interrupt a running command in shell
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2043] - Document caveats of Pax Url Wrap when used in Karaf Shell
    * [KARAF-2049] - Instructions in welcome screen is a bit misleading with hit
    * [KARAF-2053] - HTTP feature should install a default etc/org.ops4j.pax.web.cfg file
    * [KARAF-2072] - Spelling correction
    * [KARAF-2017] - Service wrapper should use and populate JAVA_HOME in conf file
    * [KARAF-2094] - Include howto add additional jvm configurations (if using the wrapper) to the documentation
    * [KARAF-2097] - endorse stax-api spec jar
    * [KARAF-2104] - Add wildcard support in features:refreshurl
    * [KARAF-2119] - upgrade pax.base to 1.4.0
    * [KARAF-2138] - Add a status check script and karaf script argument
    * [KARAF-2160] - add options to only create tar.gz or zip archive in CreateArchiveMojo
    * [KARAF-2163] - Add a jre-1.8 to jre.properties
    * [KARAF-2175] - Add the sonatype standard snapshot repository to the karaf repositories
    * [KARAF-2219] - Add option to jaas LoginModules to skip checking the credentials

** New Feature
    * [KARAF-32] - Support ssh public key authentication and agent forwarding
    * [KARAF-222] - mvn karaf:run plugin, like jetty:run
    * [KARAF-376] - State replication between Karaf instances
    * [KARAF-401] - Provide kar goal in the karaf maven plugin
    * [KARAF-407] - Extend features:info command to display features description and details
    * [KARAF-408] - Add osgi:services related commands
    * [KARAF-426] - Manage Karaf shell.name by branding
    * [KARAF-463] - Add chapter for Pax Web and the OSGi HttpService
    * [KARAF-473] - Support version resolving in FeatureService#getFeatures(name/version)
    * [KARAF-477] - Karaf console should gracefully handle errors due to the history file being read only.
    * [KARAF-478] - Subclasses of Console should be able to change the history file.
    * [KARAF-523] - Allow maven style names in startup.properties
    * [KARAF-541] - Support JMX SSL via etc/org.apache.karaf.management.cfg
    * [KARAF-572] - Command to show all registered servlets and their contexts
    * [KARAF-581] - Also make rmiRegistryHost configurable
    * [KARAF-605] - Add param to Gogo Argument and Option to override default value with specific value
    * [KARAF-647] - Support of sub-shell
    * [KARAF-657] - kar deployer should start the feature
    * [KARAF-696] - Add a macro allowing users to identify the contents of a specific config file.
    * [KARAF-798] - Support for relocating karaf.history file
    * [KARAF-835] - Provide a spring-jms feature
    * [KARAF-845] - Add a jasypt based property placeholder to support encrypted values
    * [KARAF-866] - New dev:wait-for-service command to wait for a given osgi service
    * [KARAF-908] - Provide a way to access system properties easily in the shell
    * [KARAF-934] - Provide a way to select which features are to be installed when dropping a descriptor to the deploy folder.
    * [KARAF-977] - config propset, propappend & propdel could use some autocompletion
    * [KARAF-980] - Add demo for extending Karaf's console commands
    * [KARAF-984] - Add Kar deployer demo using karaf-maven-plugin
    * [KARAF-987] - Add scp support
    * [KARAF-1004] - Introduce paxexam-karaf into karaf tooling
    * [KARAF-1007] - Include paxexam-karaf testframework documentation into the manual
    * [KARAF-1029] - Add completer support on option values
    * [KARAF-1055] - New bundle:capabilities and bundle:requirements commands
    * [KARAF-1059] - Karaf command features:status to indicate feature loaded or not
    * [KARAF-1109] - Provide archetypes for bundle, bundle-blueprint, web-bundle, war
    * [KARAF-1196] - implement a 'watch' command so we can watch the output of a karaf command like the unix 'watch' mechanism
    * [KARAF-1203] - Make invoker in karaf testcontainer configurable
    * [KARAF-1213] - Add option to configure BundleStartLvl of automatically installed base bundles
    * [KARAF-1254] - Jasypt config admin property with reload strategy.
    * [KARAF-1334] - Use the new servicemix spec to allow the use of both the JRE implementations and implementations from bundles
    * [KARAF-1379] - Provide exit alias and improve shell:logout command
    * [KARAF-1380] - Add a command to easily name an instance
    * [KARAF-1475] - Support SSH agent forwarding and use the agent authentication when connecting to other instances
    * [KARAF-1512] - enhancement: add self to generated feature in "features-generate-descriptor" goal
    * [KARAF-1519] - Support to download features for later offline usage
    * [KARAF-1546] - Add -i/--install-all option to feature:add-url
    * [KARAF-1762] - command to list bundles with the requested class
    * [KARAF-1806] - Add version attribute in the SystemMBean
    * [KARAF-1886] - Create transaction-jdbc and transaction-jms enterprise features
    * [KARAF-2044] - Provide the ability to edit text resources from the Karaf shell
    * [KARAF-2050] - Ability to configure ssh session idle timeout - currently hardcode as 5 minutes
    * [KARAF-2069] - Provide less command
    * [KARAF-2070] - Add support of !$ to recall the last command argument
    * [KARAF-2078] - Create the shell:date command
    * [KARAF-2159] - add option to resolve transitive feature-dependencies in InstallKarsMojo
    * [KARAF-2164] - Create shell:wc command
    * [KARAF-2185] - Provide Spring 3.2.x support

** Task
    * [KARAF-328] - Drop support for JDK 1.5
    * [KARAF-431] - Add documentation around remote management via JMX
    * [KARAF-432] - Remove spring2 support from karaf features
    * [KARAF-433] - Add documentation about KAR archive format and deployer
    * [KARAF-434] - Add wrap deployer description in the deployer section of the Karaf user guide
    * [KARAF-435] - Add diagnostic documentation (dev:create-dump, etc) in the Karaf User Guide
    * [KARAF-437] - Document jre.properties tuning
    * [KARAF-439] - Provide documentation about the Karaf wrapper
    * [KARAF-444] - Upgrade to latest version of pax-url
    * [KARAF-454] - Upgrade Karaf to version 1.0.1 of pax-web
    * [KARAF-489] - Upgrade pax-logging to 1.6.1
    * [KARAF-500] - Upgrade to Jetty 7.3.1
    * [KARAF-501] - Upgrade to PAX Exam 1.2.4
    * [KARAF-516] - Upgrade to felix eventadmin 1.2.10
    * [KARAF-543] - Add manual section around log custom appenders
    * [KARAF-553] - Get place of jetty config with mvn url in sync
    * [KARAF-566] - Build: Remove duplicate entries from build artefacts.
    * [KARAF-567] - org.apache.karaf.jaas.config.impl accidentally exported?
    * [KARAF-584] - Upgrade Karaf build environment
    * [KARAF-619] - Add Cellar manual
    * [KARAF-620] - Cellar should use the parent Karaf POM
    * [KARAF-646] - Upgrade to Jetty 7.4.1.v20110513
    * [KARAF-694] - Upgrade to Pax-Logging 1.6.3
    * [KARAF-887] - Refer PrinceXML website in the manual
    * [KARAF-909] - Delete the copy of the felix gogo Closure class
    * [KARAF-1053] - Removed unused folders/code from Assemblies
    * [KARAF-1054] - Setup eclipse targets now deprecated assembly folder.
    * [KARAF-1086] - Create Kar for Karaf demos
    * [KARAF-1094] - Refactor Karaf Demos to new assemblies format
    * [KARAF-1097] - Update Kar documentation
    * [KARAF-1136] - Rationalize Karaf 3.0 minimal distribution
    * [KARAF-1274] - Please set svn:ignore to all eclipse's project files
    * [KARAF-1357] - Document features-generator
    * [KARAF-1393] - Rename commands module to command
    * [KARAF-1440] - Port deployer wrap demo to Karaf 3.0
    * [KARAF-1441] - Port deployer feature demo to Karaf 3.0
    * [KARAF-1442] - Port deployer bundle demo to Karaf 3.0
    * [KARAF-1445] - more svn:ignore are needed
    * [KARAF-2124] - Adapt the chapter about extending the console to changes made by KARAF-1001
    * [KARAF-2161] - Incorrect LGPL license info in Notices file
    * [KARAF-2222] - Add hawtio to features.repos

** Test
    * [KARAF-1530] - Create integration tests for karaf-maven-plugin
    * [KARAF-1537] - Additional integration tests for karaf-maven-plugin
    * [KARAF-1870] - Add assertion to EquinoxFrameworkTest
    * [KARAF-1871] - KeepRuntimeFolderTest is named wrong and does not assert anything
    * [KARAF-1872] - Backward224Test should check for the karaf version
    * [KARAF-1873] - BaseKarafDefaultFrameworkTest should test for felix framework
    * [KARAF-1874] - Add assertion to FrameworkWithShellOffTest
    * [KARAF-1875] - Improvement of test for keeping or deleting the pax exam folder
    * [KARAF-1876] - Improve StandardFeaturesTest, EnterpriseFeaturesTest and SpringFeaturesTest using feature service
    * [KARAF-1877] - itests fail on jenkins
    * [KARAF-1896] - itests.EnterpriseFeaturesTest.installApplicationWithoutIsolationFeature fails with NotSerializableException
    * [KARAF-1897] - Use dynamic port allocation of integration tests
    * [KARAF-1916] - Make tests faster by using EagerSingleStagedReactorFactory
    * [KARAF-2087] - add a testcase to cover the scenario that the AdminService can always load latest instance status which changed by external process

                    Apache Karaf 2.0.0
                    ==================

  Overview
  --------

 The Apache Karaf 2.0.0 is the first release since the move of Apache Felix Karaf to Apache Karaf.
 This release brings new features, improvements and bug fixes. The changelog below contains the whole
 list of changes.

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** New Feature
    * [KARAF-31] - Use OBR if available to compute the transitive closure of karaf features
    * [KARAF-110] - Provide a placeholder for overriding the configuration properties
    * [KARAF-111] - Allow includes of additional configuration files through a custom property when loading the main configuration files

** Improvement
    * [KARAF-45] - Improve war deployer in order to provide the WebApp-context
    * [KARAF-54] - Minimum default properties
    * [KARAF-59] - Introduce a ${karaf.data} system property to be able to easily move the data directory to a different location
    * [KARAF-67] - Change the webconsole config in the features descriptor to specifiy the realm and not the username/password which aren't used anymore
    * [KARAF-95] - Upgrade Spring to 3.x
    * [KARAF-96] - Enhance the features to support the start level
    * [KARAF-97] - Upgrade to Felix framework 3.x
    * [KARAF-98] - Upgrade to equinox 3.6.0
    * [KARAF-103] - add a spring-dm feature which use spring 2.5.6 inside
    * [KARAF-105] - Remove dependencies on the preference service
    * [KARAF-107] - Improve default log configuration with a rolling file appender
    * [KARAF-108] - Change 'storage.location' system property to 'karaf.instances' for better homogeneity
    * [KARAF-109] - Split the JVM packages from the main config.properties file for easier maintenance
    * [KARAF-112] - Free the org.osgi.framework.system.packages.extra property for users
    * [KARAF-117] - refactor tooling/testing/Helper to accomodate recent changes in config.properties
    * [KARAF-118] - Update Pax Url Wrap to version 1.1.3
    * [KARAF-120] - Some jars are not included in our system repository
    * [KARAF-121] - Better exception handling in JaasSecurityProvider
    * [KARAF-127] - Enahnce features mechanism to allow to stop/start bundle

** Bug
    * [KARAF-4] - [Karaf] If features:refreshUrl reads an incorrect <features> definition, it deletes the old version
    * [KARAF-16] - The JRE provided ciphers are not used on ubuntu server
    * [KARAF-65] - NPE in StandardEmitterMBean on JDK 6
    * [KARAF-99] - new spring 3.0.3.RELEASE feature miss some bundles
    * [KARAF-100] - The list of OBR repositories is not persisted
    * [KARAF-101] - features:refreshUrl doesn't auto complete!
    * [KARAF-102] - The client jar does not work when given a command to execute on the command line
    * [KARAF-122] - Webconsole login doesn't work with karaf.framework set to equinox
    * [KARAF-123] - File jre.properties is not copied and so it is not possible to start a second karaf instance
    * [KARAF-124] - Karaf start script doesn't correctly include jre/lib/ext directory
    * [KARAF-126] - Password: Error executing command: Failed to get the session.
    * [KARAF-128] - java.lang.IndexOutOfBoundsException during generation of User Guide pdf blocking release build.

** Task
    * [KARAF-113] - Change the namespace of the two blueprint schemas

** Sub-task
    * [KARAF-115] - Document Karaf Release Guide
    * [KARAF-119] - Establish KEYS file.


                    Apache Felix Karaf 1.6.0
                    ========================

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** Bug
    * [FELIX-2129] - [Karaf] Possible hang with slave instances of Karaf when using Oracle JDBC lock.
    * [FELIX-2130] - [Karaf] Failover Clustering Mechanism - Database shutdown / loss results in all Karaf instances becoming Active on restart of that DB
    * [FELIX-2169] - Improve dev:show-tree performance and avoid NPE for installed bundle
    * [FELIX-2191] - Drop-in deployment of feature descriptor with spring-dm bundles fails
    * [FELIX-2196] - Karaf uses old version of Aries artifacts
    * [FELIX-2270] - Don't install jaas.boot bundle, its in the startup classpath
    * [FELIX-2295] - Referenced service throws UndeclaredThrowableException instead of real one
    * [FELIX-2311] - Remove the Bootstrap class which is not needed anymore
    * [FELIX-2319] - The order of the list of boot features is not used when installing the features
    * [FELIX-2326] - NullPointerException thrown from PropertiesLoginModule if a user doesn't exist in the properties file
    * [FELIX-2343] - Features maven plugin does not honor local and remote repository overrides
    * [FELIX-2347] - Configurations on features should not override existing configurations

** Improvement
    * [FELIX-1921] - Provide a way to configure the host used for karaf ssh server
    * [FELIX-2058] - The Oracle, MySql and default jdbc lock classes should inherit from a common base class
    * [FELIX-2109] - OBR should support matching resources for a given requirement
    * [FELIX-2110] - The resolver should be able to resolve for some requirements in addition to resources
    * [FELIX-2113] - Add obr:find and obr:resolve to find matching resources and show the resolution output
    * [FELIX-2193] - add-features-to-repo goal of features-maven-plugin should be able to download dependencies if necessary
    * [FELIX-2237] - ^C should interrupt the thread
    * [FELIX-2239] - features-maven-plugin validate goal should be able to use configurable config.properties
    * [FELIX-2278] - refactor features-maven-plugin to use Parser/Clause/VersionRange from utils
    * [FELIX-2280] - To much code duplication in DefaultJDBCLock, OracleJDBCLock and MySQLJDBCLock
    * [FELIX-2293] - features-maven-plugin validate should support  specify the feature repositories from the maven plugin configure
    * [FELIX-2297] - features-maven-plugin validate goal should be able to use configurable jre version
    * [FELIX-2312] - Support for ext and endorsed directories
    * [FELIX-2314] - Improve logging support
    * [FELIX-2315] - Upgrade to felix web console 3.0.0
    * [FELIX-2320] - Override default Karaf shell prompt
    * [FELIX-2327] - Disable and delay Jline terminal initialization
    * [FELIX-2329] - Improve the URL handling in features-maven-plugin regarding the add-features-to-repo goal
    * [FELIX-2330] - Uninstall, refresh, and resolve osgi shell commands do not support multiple bundle ids

** Task
    * [FELIX-1990] - Use aries blueprint / jmx


                    Apache Felix Karaf 1.4.0
                    ========================

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:


** Bug
    * [FELIX-1768] - should catch exception for FeaturesServiceImpl.internalAddRepository per uri
    * [FELIX-1843] - Karaf shell doens't work properly under windows
    * [FELIX-1932] - Possible NullPointerException when itest fails
    * [FELIX-1939] - [karaf] Ssh client out put is poorly formatted.
    * [FELIX-1964] - Unable to choose the framework using system properties
    * [FELIX-1970] - The stop script should always work even if the default user / password / host has been changed
    * [FELIX-1994] - Web Console admin,features and gogo plugins do not work with Equinox
    * [FELIX-1995] - Spring status does not show properly after osgi:list command
    * [FELIX-2012] - NullPointerException when some links clicked if karaf.framework=equinox
    * [FELIX-2025] - grep -v doesn't filter linefeed on Windows
    * [FELIX-2026] - Remove org.ops4j.pax.logging.DefaultServiceLog.level from system.properties
    * [FELIX-2027] - The custom deployers leveraging url handlers must not be registered before the url handler is actually registered in the osgi framework
    * [FELIX-2032] - file host.key is not correctly written for a new instance(s)
    * [FELIX-2043] - When launching Karaf with equinox, the osgi framework state is not written until 30s after the boot
    * [FELIX-2044] - System bundles are started out of order if the karaf.lock.level is > 1
    * [FELIX-2045] - Restarting the framework from the web console (or using update on the system bundle) does not work
    * [FELIX-2053] - Completion does not reprint previous characters in some circumstances
    * [FELIX-2054] - Logo is garbled when connecting using putty
    * [FELIX-2063] - [karaf] hardcoding org.ops4j.pax.exam.rbc.rmi.port property in raw pax runner --vmOptions is problematic when 1099 is not the next free port
    * [FELIX-2065] - BootstrapLogManager doesn't load etc/org.ops4j.pax.logging.cfg file
    * [FELIX-2072] - [Karaf]  OracleJDBCLock filling UNDO segment.
    * [FELIX-2074] - Bring back the history command

** Improvement
    * [FELIX-1914] - Add a development subshell to ease troubleshooting classloading/resolution issues
    * [FELIX-1947] - [Karaf] Remove import java.util.* from karaf.main.StringMap and replace with proper import list.
    * [FELIX-2001] - Add more info to log and console when feature bundles fail to resolve
    * [FELIX-2018] - features-maven-plugin add-features-to-repo should suport the bundle start with wrap: in features.xml
    * [FELIX-2028] - Upgrade to preferences services 1.0.4
    * [FELIX-2046] - Upgrade web bundles to their latest version (jetty, pax-web, felix console)
    * [FELIX-2049] - extend org.apache.felix.karaf.testing.Helper to emit a karaf-specific execution environment file for pax-runner
    * [FELIX-2055] - Use a nicer shutdown mechanism when stopping a managed instance
    * [FELIX-2061] - [karaf] use waitForFrameworkStartup pax-exam option in the integration tests
    * [FELIX-2070] - Upgrade to felix framework 2.0.3
    * [FELIX-2075] - Add a "new" command to create java objects from the command line
    * [FELIX-2084] - Make the display of exception stack traces available through a variable in the shell
    * [FELIX-2182] - An improved "list" command implementation that correctly displays Spring column status

** New Feature
    * [FELIX-1815] - Introduce 'shell:logout' command to close the current shell
    * [FELIX-1975] - [Karaf] Add oracle database support to Karaf jdbc locking feature.
    * [FELIX-2033] - Provide an easy to use layer for writing pax-exam test for Karaf
    * [FELIX-2047] - Support for WAR files

** Task
    * [FELIX-1902] - [karaf] sanitize web demo README of references to FUSE SNAPSHOT version
    * [FELIX-1915] - [karaf] allow overridding of etc/system.properties via environment


                    Apache Felix Karaf 1.2.0
                    ========================

  Overview
  --------

 This release is mostly a bug fix release and contains a lot of bug fixes and improvements in the console,
 commands, features service, instance administration.  The binary distribution now also includes the user's
 manual in pdf and html formats.

  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

** Sub-task
    * [FELIX-1701] - Aggregate all the Karaf related pages in one single Confluence page using the include macro

** Bug
    * [FELIX-1620] - Script for running the created Karaf instances with a console
    * [FELIX-1626] - Configuration loaded from the etc/ directory are only available after a delay
    * [FELIX-1638] - [karaf] The branding properties load can't find the external branding file
    * [FELIX-1642] - osgi:shutdown just hang when use karaf-client.jar
    * [FELIX-1660] - karaf should not hardcode the "system" location of its maven-like repository
    * [FELIX-1681] - Bundles of webconsole feature are not assembled into distribution packages
    * [FELIX-1705] - [Karaf] Hot undeploy does not work after a Karaf restart
    * [FELIX-1715] - osgi:update on xml deployments will cause ZIPExceptions
    * [FELIX-1717] - osgi:list column for spring is sometimes filled and sometimes not
    * [FELIX-1723] - [Karaf] Slave instances on same host as Master instance does not properly lock.
    * [FELIX-1728] - Karaf itest fail on IBM JDK due to Pax Exam annotations not found
    * [FELIX-1730] - When displaying help for commands, arguments are not ordered correctly
    * [FELIX-1745] - Unable to alter/unset a log level after it has been set from the console
    * [FELIX-1751] - [karaf] admin:start silently fails to launch new instance
    * [FELIX-1766] - Refactor and enable AdminServiceMBean
    * [FELIX-1768] - should catch exception for FeaturesServiceImpl.internalAddRepository per uri
    * [FELIX-1771] - Feature deployer is broken on windows
    * [FELIX-1777] - Hitting backspace beyond last character causes LOUD BEEP
    * [FELIX-1778] - instances/myinst/bin/karaf.bat leaks environment variables to shell
    * [FELIX-1779] - The port for the jmx server needs to be configured at two locations
    * [FELIX-1784] - install one feature failed in org.apache.felix.karaf.features.cfg featuresBoot list shouldn't block install other features in this list
    * [FELIX-1786] - The features deployment listener tacks installed bundles and force their resolution
    * [FELIX-1793] - ensure launch karaf java process from KARAF_BASE folder
    * [FELIX-1799] - Hot-deployment does not work on admin:create'd instances
    * [FELIX-1801] - Case insensitive grep outputs all uppercase in match results
    * [FELIX-1802] - Grep command line prefix (-n) not working properly
    * [FELIX-1803] - Unable to edit or backspace on multiline commands
    * [FELIX-1805] - Upgrade equinox to 3.5.1
    * [FELIX-1817] - Backspace does not work anymore when connecting from the karaf-client
    * [FELIX-1818] - Ctrl-C kills the karaf-client, but it should be sent to the server
    * [FELIX-1855] - exec command eats first keystroke of subsequent commands
    * [FELIX-1857] - Backspace not working when using admin:connect
    * [FELIX-1858] - Remote commands via ssh only work once per restart
    * [FELIX-1869] - Need better UI feedback when features commands fail
    * [FELIX-1877] - karaf.main.BootstrapLogManager possible resource leak and ignored exception in open method.
    * [FELIX-1878] - karaf.main.Main possible resource leaks and ignored exceptions from mkdirs().
    * [FELIX-1887] - The stop script can't be used if the user or password has been changed
    * [FELIX-1888] - The karaf client hangs if the authentication fails
    * [FELIX-1899] - Karaf itest (CoreTest) fails on slower CI machines

** Improvement
    * [FELIX-1064] - New goal for the features-maven-plugin: validate a features xml file
    * [FELIX-1207] - [PATCH] Ignore files generated by mvn:eclipse
    * [FELIX-1643] - Improvements / Fixes for Karaf commands and their helps
    * [FELIX-1655] - Provide an additional argument to the Karaf admin:create command that specifies the featuresBoot
    * [FELIX-1675] - karaf web demo README references old servicemix-client.jar
    * [FELIX-1682] - The newly installed bundles for a feature should be uninstalled when feature install failed
    * [FELIX-1689] - When deploying a feature, we need to refresh some bundles to cope with newly resolved optional dependencies
    * [FELIX-1693] - [karaf][shell] Make "system bundles" start level configurable via properties
    * [FELIX-1694] - [karaf][shell] Do not print stack traces on exceptions
    * [FELIX-1700] - Create quality PDF manual for Karaf
    * [FELIX-1706] - Highlight grep matches
    * [FELIX-1707] - Add OSGi framework information to InfoAction
    * [FELIX-1718] - karaf shell config:update command should persist / override configurations from the etc/ folder
    * [FELIX-1729] - The if / each commands are not available in the console
    * [FELIX-1737] - Upgrade to fileinstall 2.0.4
    * [FELIX-1744] - Add a -C/--context option to shell:grep
    * [FELIX-1748] - Make the command history persistent across restarts
    * [FELIX-1749] - Improve log:set command - add auto-completion for log levels and support lower case level
    * [FELIX-1752] - [Karaf] Extend DefaultJDBCLock to support MySQL out of the box.
    * [FELIX-1755] - Provide a script file that would be loaded when starting a new shell (to create closures, etc...)
    * [FELIX-1757] - Completer for session scopes
    * [FELIX-1759] - Upgrade to latest webconsole
    * [FELIX-1772] - Upgrade to felix framework 2.0.1
    * [FELIX-1791] - Update to the karaf web demo readme.
    * [FELIX-1810] - Improvements to Main startup class
    * [FELIX-1882] - [karaf] karaf-client should have the option to retry connection establishment

** New Feature
    * [FELIX-1656] - new Shell command: shell:clear

** Task
    * [FELIX-1091] - Re-enable gshell integration tests on windows
    * [FELIX-1761] - Include felix as a platform for the karaf integration tests
    * [FELIX-1762] - Upgrade to pax-web 0.7.1
    * [FELIX-1763] - Upgrade to latest pax-url
    * [FELIX-1848] - Include instance name in the JMX ObjectName for AdminService and FeaturesService MBeans
    * [FELIX-1849] - Provide Instance details for root instance via AdminServiceMBean.getInstances() attribute
    * [FELIX-1850] - Expose additional isRoot attribute on AdminServiceMBean
    * [FELIX-1892] - Upgrade to sshd-0.3.0, mina-2.0.0-RC1, gogo-0.2.2, jansi-1.1



                    Apache Felix Karaf 1.0.0
                    ========================

  Overview
  --------

 The Apache Felix Karaf 1.0.0 release is the first release since the move of ServiceMix Kernel to Apache Felix.
 This release brings a lot of new features:
  * Switch from Spring-DM to Blueprint for the default Dependency Injection container (Spring-DM is still
       fully supported and easy to install through the features service)
  * Switch from Geronimo GShell to Felix Gogo
      This changes is a bit disruptive for the command line syntax, but offers much more features such
      as closures
  * Integration with the Felix Web Console (easily installed using the features service).
  * Built-in support for Equinox
  * Upgrade to OSGi 4.2 frameworks (both Felix and Equinox)
 This release also contains a lot of small improvements and bug fixes.  The changelog below contains the whole
 list of changes.


  Changelog
  ---------

 The following list shows the bug fixes and enhancements included in this release:

 ** Bug
     * [FELIX-1087] - Unable to log into ServiceMix Kernel using Windows putty SSH client
     * [FELIX-1097] - ServiceMix -> Karaf in base directory notices
     * [FELIX-1100] - Cat Command fails to display ?wsdl files
     * [FELIX-1125] - "features/list -i" returns "ERROR CommandLineExecutionFailed: org.apache.geronimo.gshell.command.CommandException: java.lang.ArrayStoreException: org.apache.servicemix.kernel.gshell.features.internal.FeatureImpl"
     * [FELIX-1128] - Features installed via the deploy directory aren't listed by the "features/list" command
     * [FELIX-1152] - wrapper scripts fail to start Karaf
     * [FELIX-1153] - change parent artifact id from kernel to karaf in some modules to make the build pass from clean local maven repo
     * [FELIX-1161] - Stange classloading issues when using compendium services
     * [FELIX-1192] - KARAF: Locking error in DefaultJDBCLock, also contains an eventual OutOfMemory error on locked processes.
     * [FELIX-1199] - Karaf: closing IO stream, removal of minor file descriptor leak.
     * [FELIX-1212] - Possible infinit loop when a remote ssh connection is closed
     * [FELIX-1218] - Existing configurations are not retrieved when installing a feature
     * [FELIX-1222] - [features-maven-plugin:add-features-to-repo] Incorrect parsing of pax mvn url string
     * [FELIX-1243] - Change the default port for the OSGI HTTP Service from 8080 to 8181
     * [FELIX-1253] - Cursor is blocked when the correct syntax is not displaed
     * [FELIX-1265] - The command refreshUrl does not work if the features.xml file is embedded in a Jar. The JVM caches jar entries
     * [FELIX-1274] - Spring deployer fails when bean class is from java.* packages
     * [FELIX-1315] - Karaf console is garbled on Windows
     * [FELIX-1320] - Authentication failed connecting via ssh on Windows
     * [FELIX-1361] - Issue with import/export version of the package : org.osgi.util.tracker in Apache Felix Karaf
     * [FELIX-1373] - featuresBoot in etc/org.apache.felix.karaf.featues no longer works
     * [FELIX-1375] - [Karaf] There's no 'help' command
     * [FELIX-1378] - Optional branding does not work in new gogo console
     * [FELIX-1391] - Unable to create new ConfigAdmin PID through karaf console
     * [FELIX-1423] - karaf fails to start in cygwin bash
     * [FELIX-1431] - Add a web console plugin to have access to the gogo shell
     * [FELIX-1449] - Tab completion doesn't work on Windows
     * [FELIX-1454] - install --help throws exception
     * [FELIX-1458] - 'servicemix server' and servicemix client' not working properly on windows
     * [FELIX-1459] - bin/karaf may fail to start when CDPATH is set (on POSIX shells)
     * [FELIX-1465] - Make symbolic names of Karaf webconsole bundles consistent with other bundles
     * [FELIX-1466] - org.apache.felix.karaf.features.FeaturesServiceTest fails
     * [FELIX-1468] - wrapper:install and admin:create prints old ansi output that need to be converted to real ansi
     * [FELIX-1472] - Better handling of configurations from the deployer and feature service
     * [FELIX-1515] - Entering an illegal command has an unusual effect
     * [FELIX-1517] - Manually deleting an instance breaks admin:list
     * [FELIX-1519] - Karaf Failover does not work with PostgreSQL and Oracle
     * [FELIX-1529] - The console does not work anymore when connecting to another karaf instance
     * [FELIX-1564] - Authentication failed when using admin:connect to connect to a newly created instance
     * [FELIX-1566] - Possible NPE when uninstalling a feature
     * [FELIX-1567] - When dropping an empty xml file (i.e. just an empty file with an xml extension) in the deploy folder, errors are printed to the console
     * [FELIX-1575] - The JMX connector can not be registered because of a clash in the name in the RMI registry
     * [FELIX-1576] - The features service should do a PackageAdmin.refresh() after uninstalling a feature
     * [FELIX-1602] - Unable to configure boot features on admin:create-d instance
     * [FELIX-1618] - in spring-dm feature, optional imports in spring-context won't get resolved

 ** Improvement
     * [FELIX-1062] - Upgrade to latest Felix Runtime
     * [FELIX-1063] - Upgrade to latest Felix Bundle Repository
     * [FELIX-1092] - The client jar / ssh deamon should support direct commands
     * [FELIX-1102] - Make gshell-core really independant of the MainService
     * [FELIX-1104] - Allow osgi/stop command to specify more than one bundle per command entry.
     * [FELIX-1107] - Make org.apache.servicemix.kernel.gshell.features dependency on org.apache.servicemix.kernel.filemonitor optional
     * [FELIX-1110] - Refactor filemonitor / deployers inside a deployer sub module
     * [FELIX-1112] - [PATCH] Allow osgi/start command to specify more than one bundle per command entry
     * [FELIX-1115] - Use better version ranges for imports
     * [FELIX-1121] - Add feature for installing Felix Web Console
     * [FELIX-1126] - No errors are generated for a bad URL passed to the "features/addUrl", "features/refreshUrl", or "features/list" commands.
     * [FELIX-1127] - Add a name for a repository
     * [FELIX-1133] - Allow usage of fragments in Karaf features
     * [FELIX-1149] - Describe ConfigAdmin configurations using metatype
     * [FELIX-1150] - Upgrade to SpringDM and SpringFramework
     * [FELIX-1172] - Rebrand Karaf locking mechanism.
     * [FELIX-1180] - Improve Karaf DefaultJDBCLock to use proper logging mechanism instead of System err prints.
     * [FELIX-1196] - Felix Web Console can't list Karaf features
     * [FELIX-1204] - Fix the karaf client to allow direct execution of commands
     * [FELIX-1220] - Remove unnecssary parts of a filter
     * [FELIX-1276] - There is no way to get all the Feature information from the FeaturesService
     * [FELIX-1303] - add an osgi/imports and osgi/exports to show a pretty-printed output of the imports/exports packages for a bundle
     * [FELIX-1450] - Karaf branding and plugins for Felix webconsole
     * [FELIX-1455] - OSGi Storage is hardcoded to be data/cache
     * [FELIX-1457] - Externalize and refactory management layer for FeatureService to be more scalable and more consistent with the OSGi management (using open mbeans)
     * [FELIX-1463] - Switch to Felix Fileinstall instead of our own file deployer
     * [FELIX-1467] - Add Karaf to top-level build files
     * [FELIX-1469] - Add svn:ignore property to a few Karaf projects
     * [FELIX-1528] - [karaf] Use a defined location for storing the list of managed instances create by the admin service
     * [FELIX-1555] - The osgi:list command should print spring-dm bundle state if spring-dm has been deployed
     * [FELIX-1558] - use com.sun.* instead of com.sun.management* for boot delegation
     * [FELIX-1594] - include blueprint bundle in karaf kit system folder

 ** New Feature
     * [FELIX-1109] - Deployer for blueprint applications
     * [FELIX-1111] - Ability to run Karaf on Equinox
     * [FELIX-1206] - [PATCH] config/propappend
     * [FELIX-1261] - Install/Uninstall Karaf Features from Felix WebConsole
     * [FELIX-1485] - Admin commands support in Karaf webconsole
     * [FELIX-1524] - Implement a better tac command
     * [FELIX-1547] - OS shell level admin commands for Karaf

 ** Task
     * [FELIX-1098] - Switch from spring-dm to blueprint
     * [FELIX-1099] - Switch from spring-dm integration tests to pax-exam
     * [FELIX-1116] - Rename to Apache Felix Karaf
     * [FELIX-1200] - Move features-maven-plugin into Karaf
     * [FELIX-1312] - Switch from gshell to gogo
     * [FELIX-1523] - Fix Karaf version to 0.9.0-SNAPSHOT as next release will be 1.0.0

 ** Sub-task
     * [FELIX-1117] - Update branding
     * [FELIX-1118] - Update shell scripts
     * [FELIX-1132] - Get rid of the JMX spring stuff in gshell-features




                    Apache ServiceMix Kernel 1.1.0
                    ==============================

  Overview
  --------

 The Apache ServiceMix Kernel 1.1.0 release brings a lot of new features enhancements and bug fixes:
  * remote connection using SSH protocol
  * provisioning enhancements: versioning / hot deployment of features
  * new commands, including OSGi related commands for the Configuration Admin and Package Admin services
  * improved spring integration: upgrade to spring 2.5.6 and spring-dm 1.2.0-m2, the osgi/list command
       now displays spring applications status
  * container level locking for master / slave deployments
  * support for JAXP 1.4 on all platforms
  * improved JMX support for managing the OSGi framework and features
 Note that the commands syntax has changed due to the upgrade to the latest gshell version.

  Known issues
  ============

     * [SMX4KNL-141] - The config/edit command changes does not takes precedence over configuration files in the etc folder at restart
     * [SMX4KNL-183] - features/uninstall behaves different in version selection than features/install
     * [SMX4KNL-189] - Shell completion works only in the root shell
     * [SMX4KNL-200] - The client jar / ssh daemon should support direct commands
     * [SMX4KNL-227] - Full support of fragment bundles
     * [SMX4KNL-228] - Warning messages when using OpenSSH 5.1 to connect to ServiceMix Kernel
     * [SMX4KNL-231] - Unable to log into ServiceMix Kernel using OpenSolaris SSH client
     * [SMX4KNL-232] - Unable to log into ServiceMix Kernel using Windows putty SSH client

  Changelog
  ---------

  The following list shows the bug fixes and enhancements included in this release:

 ** Bug
     * [SMX4KNL-72] - If there is no etc/startup.properties, the kernel hangs without displaying any error
     * [SMX4KNL-79] - When starting the kernel, a log entry states "Can not install feature ''"
     * [SMX4KNL-86] - When running integration tests, the container classpath contains all the test bundles which may cause problems
     * [SMX4KNL-87] - Problems with batch files on windows
     * [SMX4KNL-95] - kernel build failed in testing/itests
     * [SMX4KNL-96] - package missing for felix.config.properties
     * [SMX4KNL-97] - Dissociate the name and the location of ServiceMix Kernel instances managed by the admin shell
     * [SMX4KNL-100] - The client does not close when running "osgi shutdown" command
     * [SMX4KNL-102] - The file monitor should use ${servicemix.base} for default polling locations
     * [SMX4KNL-104] - When using a remote connection, errors are not reported correctly
     * [SMX4KNL-105] - Features are reinstalled on restart of servicemix
     * [SMX4KNL-112] - gshell pom needs to include gshell-config and gshell-packages modules
     * [SMX4KNL-115] - config.properties for SMX-Kernel needs to be updated
     * [SMX4KNL-117] - The Smx testing platform should take into account the boot delegation packages specified in the configuration file
     * [SMX4KNL-118] - The configuration file for felix comes from 3 different places in the svn tree, only one copy should be used
     * [SMX4KNL-122] - When using the client and trying to connect to another instance using the "admin connect" command, the console hangs
     * [SMX4KNL-123] - XML parsing does not work on non Sun JVMs and Sun's SAAJ bundle requires Sun's JAXP implementation
     * [SMX4KNL-124] - Issuing command "log d" fails with NullPointerException on AIX.
     * [SMX4KNL-126] - The user is no more authenticated with the new gshell integration
     * [SMX4KNL-128] - Remove OBR support from default distribution
     * [SMX4KNL-132] - osgi/list command should display the spring application state
     * [SMX4KNL-133] - jaxp-ri bundle miss javax.xml.datatype.DatatypeFactory factoryId under META-INF/services
     * [SMX4KNL-134] - XPathFactoryFinder in jaxp api should use factoryId to load the spi class in osgi enviroment
     * [SMX4KNL-135] - Remote shell missing help resources
     * [SMX4KNL-138] - No command history with Shell console
     * [SMX4KNL-140] - Shell commands references not cleaned up when bundle uninstalled
     * [SMX4KNL-142] - Starting a new instance that was created with admin on windows fails to start
     * [SMX4KNL-145] - java.lang.IllegalStateException: Streams not registered for thread
     * [SMX4KNL-148] - OPS4J maven repo missing form default search list
     * [SMX4KNL-149] - Build failure due to new sshd snapshot
     * [SMX4KNL-150] - Shell group name variable doesn't resolve
     * [SMX4KNL-151] - Update displayed version in Shell to be 1.1.0-SNAPSHOT for trunk
     * [SMX4KNL-153] - Stopping one of the "core" bundles of the servicemix engine block the server
     * [SMX4KNL-155] - Error changing manifest while bundle is deployed
     * [SMX4KNL-162] - The default jaas realm uses the config admin to store clear password
     * [SMX4KNL-164] - features/removeUrl does not remove the repository
     * [SMX4KNL-165] - Initial provisioning using features is very slow especially when using snapshots
     * [SMX4KNL-170] - Unknown protoc
