The Maven parent POM for Fess (Full tExt Search System) and its related modules. It centralizes dependency version management, plugin configuration, and build conventions so that every project in the Fess ecosystem builds consistently.
fess-parent is a pom-packaging project with no source code of its own. Modules across the Fess ecosystem — the main application, crawler, suggest, and the various data store and web application plugins — declare it as their parent to inherit:
- Managed versions for the framework, search engine, and third-party libraries used throughout Fess
- A shared set of Maven plugins pinned to known-good versions
- Common build settings such as the Java release level, source encoding, license-header enforcement, and code formatting
- Artifact signing, plus the
scpexewagon used to publish releases to the CodeLibs Maven repository
Keeping these definitions in one place ensures compatible versions across modules and reduces the effort of upgrading dependencies.
- Java 21 or later
- Maven 3.8 or later
Declare fess-parent as the parent of your module:
<parent>
<groupId>org.codelibs.fess</groupId>
<artifactId>fess-parent</artifactId>
<version>15.7.0</version>
<!-- Refer to the Maven Central badge above for the latest release -->
</parent>Dependency and plugin versions are exposed as Maven properties (for example ${lastaflute.version}, ${opensearch.version}, and ${tika.version}), so child modules can reference the managed versions directly.
Snapshots of fess-parent itself are published to the Central Portal snapshot repository; snapshots of the modules that inherit from it are published to the CodeLibs snapshot repository. Both, along with the CodeLibs release repository, are already configured in this POM, so child modules resolve them without extra setup.
Because this is a parent POM, building it simply installs the POM into your local repository:
# Install the POM into the local Maven repository
mvn clean install
# Deploy to the remote repository (maintainers only)
mvn clean deployThe plugin and build configuration defined here (compiler, Surefire/Failsafe, JaCoCo, license, formatter, and others) takes effect in the child modules that inherit from this POM, not in fess-parent itself.
- Framework: LastaFlute, Lasta Di, DBFlute, MailFlute
- Search engine: OpenSearch and the OpenSearch runner
- Fess modules: crawler, suggest, and the Fesen HTTP client
- Runtime: Tomcat and its boot integration
- Libraries: Apache Tika, PDFBox, POI, Lucene, Jackson, Guava, Log4j, and many more
- Testing: JUnit 4, JUnit Jupiter, and UTFlute
- Plugins: the Maven plugins used to compile, test, format, license-check, sign, and publish Fess modules
Releases follow semantic versioning (major.minor.patch) and are produced with the Maven Release Plugin:
- Artifacts are signed with GPG under the
releaseprofile. fess-parentitself is published to Maven Central through the Central Publishing Plugin. It stays there deliberately: a parent POM can only be fetched from repositories the consuming project already knows about, so keeping it on Maven Central lets every child — including third-party plugins — resolve it without configuring an extra repository first.- Every module inheriting from this POM publishes to the CodeLibs Maven repository over
scpexe, using thedistributionManagementdeclared in its own POM.
Contributions are welcome. A typical workflow:
- Fork the repository and create a topic branch.
- Make your change — for a version update, edit the relevant property in
pom.xml. - Verify the POM builds with
mvn clean install. - Open a pull request with a clear description of the change.
Please use conventional commit messages and keep each change focused.
- Fess — the main full-text search server
- Fess Crawler — web, file system, and data store crawler
- Fess Suggest — search suggestion library
- Documentation: https://fess.codelibs.org/
- Issues: https://github.com/codelibs/fess/issues
- Discussions: https://discuss.codelibs.org/
Licensed under the Apache License, Version 2.0.