Skip to content

Commit b73b1ae

Browse files
slachiewiczCopilot
andcommitted
Add comparison to Commons Compress in README
Co-authored-by: Copilot <[email protected]>
1 parent 05bfae8 commit b73b1ae

File tree

1 file changed

+52
-0
lines changed

1 file changed

+52
-0
lines changed

src/site/markdown/index.md

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,55 @@ Collection of Plexus components to create archives or extract archives to a dire
88
| | |
99
| [`UnArchiver`](./apidocs/index.html?org/codehaus/plexus/archiver/UnArchiver.html) | [`bzip2`](./apidocs/index.html?org/codehaus/plexus/archiver/bzip2/BZip2UnArchiver.html), [`gzip`](./apidocs/index.html?org/codehaus/plexus/archiver/gzip/GZipUnArchiver.html), [`snappy`](./apidocs/index.html?org/codehaus/plexus/archiver/snappy/SnappyUnArchiver.html), [`tar`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarUnArchiver.html), [`tar.bz2`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarBZip2Archiver.html) \([`tbz2`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TBZ2Archiver.html)\), [`tar.gz`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarGZipUnArchiver.html) \([`tgz`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TGZUnArchiver.html)\), [`tar.snappy`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarSnappyUnArchiver.html) [`tar.zst`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarZstdUnArchiver.html) \([`tzst`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TZstdUnArchiver.html)\), [`tar.xz`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TarXZUnArchiver.html) \([`txz`](./apidocs/index.html?org/codehaus/plexus/archiver/tar/TXZUnArchiver.html)\), [`xz`](./apidocs/index.html?org/codehaus/plexus/archiver/xz/XZUnArchiver.html), [`zip`](./apidocs/index.html?org/codehaus/plexus/archiver/zip/ZipUnArchiver.html) \(also available as [`car`](./apidocs/index.html?org/codehaus/plexus/archiver/car/CarUnArchiver.html), [`ear`](./apidocs/index.html?org/codehaus/plexus/archiver/ear/EarUnArchiver.html), [`esb`](./apidocs/index.html?org/codehaus/plexus/archiver/esb/EsbUnArchiver.html), [`jar`](./apidocs/index.html?org/codehaus/plexus/archiver/jar/JarUnArchiver.html), [`nar`](./apidocs/index.html?org/codehaus/plexus/archiver/nar/NarUnArchiver.html), [`par`](./apidocs/index.html?org/codehaus/plexus/archiver/par/ParUnArchiver.html), [`rar`](./apidocs/index.html?org/codehaus/plexus/archiver/rar/RarUnArchiver.html), [`sar`](./apidocs/index.html?org/codehaus/plexus/archiver/sar/SarUnArchiver.html), [`swc`](./apidocs/index.html?org/codehaus/plexus/archiver/swc/SwcUnArchiver.html), [`war`](./apidocs/index.html?org/codehaus/plexus/archiver/war/WarUnArchiver.html)\), [`zst`](./apidocs/index.html?org/codehaus/plexus/archiver/zstd/ZstdUnArchiver.html) |
1010

11+
## What is Plexus Archiver?
12+
13+
Plexus Archiver is a high-level Java API for creating and extracting archives (ZIP, JAR, TAR, etc.). It provides a simple, unified interface for working with various archive formats, abstracting away the low-level details of archive manipulation.
14+
15+
## Comparison to Apache Commons Compress
16+
17+
Plexus Archiver builds on top of [Apache Commons Compress](https://commons.apache.org/proper/commons-compress/) (since version 2.5) and provides additional capabilities:
18+
19+
### Apache Commons Compress
20+
21+
Commons Compress is a low-level library that provides:
22+
- Direct access to archive formats and compression algorithms
23+
- Fine-grained control over archive entries and their attributes
24+
- Support for a wide range of archive formats (ZIP, TAR, AR, CPIO, etc.)
25+
- Streaming API for memory-efficient processing
26+
27+
### Plexus Archiver
28+
29+
Plexus Archiver is a higher-level abstraction layer that adds:
30+
31+
**Simplified API**: Easy-to-use builder-style interface for common archiving tasks without dealing with low-level stream handling.
32+
33+
**Advanced Features**:
34+
- File selectors and filtering capabilities
35+
- Automatic handling of file permissions and attributes
36+
- Built-in support for directory scanning with includes/excludes patterns
37+
- Reproducible builds support (configurable timestamps and ordering)
38+
- Duplicate handling strategies
39+
- File mappers for transforming entry names during archiving/unarchiving
40+
- Protection against ZIP bombs (configurable output size limits)
41+
42+
**Build Tool Integration**: Designed for integration with build tools like Maven, with support for:
43+
- Modular JAR creation (Java 9+ modules)
44+
- Manifest generation and customization
45+
- Archive finalizers for post-processing
46+
47+
**Dependency Injection Ready**: Includes JSR-330 annotations for easy integration with dependency injection frameworks.
48+
49+
### When to Use Which?
50+
51+
**Use Apache Commons Compress when:**
52+
- You need fine-grained control over archive format details
53+
- You're working with streaming data or large archives
54+
- You need to support specialized or uncommon archive formats
55+
- Memory efficiency is critical
56+
57+
**Use Plexus Archiver when:**
58+
- You want a simple, declarative API for common archiving tasks
59+
- You're building a Maven plugin or similar build tool
60+
- You need reproducible builds with consistent archive ordering
61+
- You want built-in file filtering and selection capabilities
62+
- You need to create modular JARs or other specialized Java archives

0 commit comments

Comments
 (0)