Small, focused Java libraries that Apache Maven and its plugins are built on — archive handling, compiler abstraction, file I/O, XML, string interpolation, classloader management and code generation.
If you write Maven plugins, you almost certainly depend on several of these already, usually transitively. They are maintained by the Apache Maven community.
Documentation: https://codehaus-plexus.github.io/ · Javadoc: javadoc.io
Plexus originally had two halves: an IoC container and a set of components for it. The container is retired. Maven moved to Eclipse Sisu and JSR-330 years ago, and nothing here needs a Plexus container to run — the components are ordinary JSR-330 beans.
What remains, and what this organisation is now, is the second half: the libraries below. The old container documentation is kept on the site for historical reference, because plenty of writing from that era still links to it.
| Artifact | Version | What it does |
|---|---|---|
| plexus-utils | Utilities for strings, files, command lines and process execution | |
| plexus-xml | XML classes split out of plexus-utils 4 (Xpp3Dom and friends) |
|
| plexus-io | File and resource abstractions, selectors and mappers | |
| plexus-interpolation | Resolves ${...} expressions — the engine behind POM interpolation |
|
| plexus-classworlds | Classloader management; how Maven isolates plugins from itself |
| Artifact | Version | What it does |
|---|---|---|
| plexus-archiver | One API over zip, jar, tar, and their compressed variants | |
| plexus-compiler | One API over javac, ECJ, AspectJ and others — used by maven-compiler-plugin | |
| plexus-languages | Reads module-info and splits the classpath from the module path (plexus-java) |
|
| plexus-sec-dispatcher | Encrypts and decrypts passwords in settings.xml |
|
| plexus-resources | Reads a resource from the filesystem, the classpath or a URL | |
| plexus-velocity | Apache Velocity integration | |
| plexus-i18n | Resource-bundle lookup for localised messages | |
| plexus-interactivity | Prompts the user on the console | |
| plexus-build-api | Lets plugins report file changes to an incremental build (m2e) |
| Artifact | Version | What it does |
|---|---|---|
| modello | Generates Java classes, readers/writers, XSD and docs from one model file. MIT-licensed | |
| plexus-testing | JUnit 5 support for testing JSR-330 components | |
| plexus-pom | The parent POM every project here inherits |
These repositories are archived and receive no fixes, including security fixes. Don't start anything new on them.
| Repository | What to use instead |
|---|---|
| plexus-containers | Eclipse Sisu with JSR-330 annotations |
| plexus-cipher | plexus-sec-dispatcher 4.x, which absorbed it |
| plexus-component-factories | Nothing — a container concern that no longer exists |
| plexus-maven-plugin | Nothing — generated container descriptors, obsolete under Sisu |
| plexus-digest | java.security.MessageDigest, or Commons Codec |
| plexus-cli | Commons CLI, picocli |
| plexus-swizzle | Nothing |
| plexus-components | Split into the individual repositories above |
Issues and pull requests are welcome on each repository. Start with CONTRIBUTING.md — it covers building, the Java baseline and code formatting, which is enforced by the build.
To report a security vulnerability, please follow SECURITY.md rather than opening a public issue.
Everything here is Apache-2.0 except Modello, which is MIT.