Release Notes -- Apache Jackrabbit -- Version 2.21.15

Introduction
------------

This is Apache Jackrabbit(TM) 2.21.15, a fully compliant implementation of the
Content Repository for Java(TM) Technology API, version 2.0 (JCR 2.0) as
specified in the Java Specification Request 283 (JSR 283).

Apache Jackrabbit 2.21.15 is an unstable release cut directly from
Jackrabbit trunk, with a focus on new features and other
improvements. For production use we recommend the latest stable 2.20.x
release.

Changes in Jackrabbit 2.21.15
-----------------------------

Task

    [JCR-4878] - Javadoc fixes
    [JCR-4879] - update checkstyle-plugin dependency to 3.2.0
    [JCR-4880] - Update javadoc-plugin dependency to 3.4.1
    [JCR-4881] - Update maven-jar-plugin to 3.3.0
    [JCR-4882] - Update animal-sniffer plugin dependency to 1.22
    [JCR-4883] - Update pmd-plugin dependency to 3.19.0
    [JCR-4884] - Update spotbugs-maven-plugin to 4.7.3.0
    [JCR-4885] - update Apache parent pom to version 28
    [JCR-4886] - Update Jackrabbit trunk to Oak 1.46.0
    [JCR-4888] - update Apache parent pom to version 29
    [JCR-4889] - Update javacc-maven-plugin to version 3.0.1
    [JCR-4891] - set baseline comparisonVersion to latest stable (2.20.8)
    [JCR-4893] - Update mockito dependency to 4.11.0
    [JCR-4894] - webapp: update htmlunit dependency to 2.69.0
    [JCR-4895] - update aws java sdk version to 1.12.383
    [JCR-4896] - Update easymock dependency to 5.1.0
    [JCR-4897] - update kotlin-stdlib dependency to 1.8.0
    [JCR-4898] - Update oak-jackrabbit-api.version.used in trunk and 2.20 to Oak 1.22.14
    [JCR-4899] - Update tomcat dependency to 8.5.85
    [JCR-4900] - Update oak-jackrabbit-api.version.implemented in trunk and 2.20 to Oak 1.48.0
    [JCR-4901] - webapp: update htmlunit dependency to 2.70.0
    [JCR-4903] - update checkstyle-plugin dependency to 3.2.1
    [JCR-4905] - Update pmd-plugin dependency to 3.20.0


For more detailed information about all the changes in this and other
Jackrabbit releases, please see the Jackrabbit issue tracker at

    https://issues.apache.org/jira/browse/JCR

Release Contents
----------------

This release consists of a single source archive packaged as a zip file.
The archive can be unpacked with the jar tool from your JDK installation.
See the README.txt file for instructions on how to build this release.

The source archive is accompanied by an SHA512 checksum and a
PGP signature that you can use to verify the authenticity of your
download. The public key used for the PGP signature can be found at
https://www.apache.org/dist/jackrabbit/KEYS.

About Apache Jackrabbit
-----------------------

Apache Jackrabbit is a fully conforming implementation of the Content
Repository for Java Technology API (JCR). A content repository is a
hierarchical content store with support for structured and unstructured
content, full text search, versioning, transactions, observation, and
more.

For more information, visit http://jackrabbit.apache.org/

About The Apache Software Foundation
------------------------------------

Established in 1999, The Apache Software Foundation provides organizational,
legal, and financial support for more than 140 freely-available,
collaboratively-developed Open Source projects. The pragmatic Apache License
enables individual and commercial users to easily deploy Apache software;
the Foundation's intellectual property framework limits the legal exposure
of its 3,800+ contributors.

For more information, visit http://www.apache.org/

Trademarks
----------

Apache Jackrabbit, Jackrabbit, Apache, the Apache feather logo, and the Apache
Jackrabbit project logo are trademarks of The Apache Software Foundation.



