Hi all,

I'm excited to announce the preview availability of declarative Maven
RPM builds in Fedora 43 -- a new approach to RPM packaging for
Maven-based Java projects that focuses on simplicity, consistency, and
future automation. This functionality is already usable today, though
it is still under active development and not yet feature-complete.
The preview is intended to gather early feedback and prepare for
broader adoption.

Declarative Maven builds let you define packaging logic entirely as
structured data using BuildOption tags (available in RPM 4.20 and
later). This eliminates the need for %prep, %build, and %install
scriptlets. The build process still uses XMvn internally, but the
declarative layer eliminates the need for RPM macros or shell
scripting.

Key features:

- Declarative configuration: Build logic is expressed through
structured tags, not executable code.

- Cleaner spec files: Less boilerplate, easier to read and maintain.

- Tooling-friendly: Pure data is easier to parse, validate, and
transform, enabling better automation down the line.

- Dynamic BuildRequires: Build dependencies are inferred automatically
based on the project’s POM metadata, reducing manual maintenance and
errors.

- Interoperability: Packages built with declarative Maven builds
remain fully compatible with traditional Java packages that use
javapackages-tools. They can coexist and interoperate in the same
dependency graph.

This feature is currently in preview. So far, a single package
"plexus-cipher" has been converted to use declarative Maven builds. It
serves as a working example and proof of concept. The spec file of
plexus-cipher can be seen at
https://src.fedoraproject.org/rpms/plexus-cipher/blob/rawhide/f/plexus-cipher.spec

More information can be found at upstream project at
https://github.com/mizdebsk/dola
Currently supported syntax for BuildOptions (subject to change) is
documented at https://github.com/mizdebsk/dola/blob/master/SYNTAX.md
More info about declarative RPM builds in general can be found at
https://rpm-software-management.github.io/rpm/manual/buildsystem.html

--
Mikolaj Izdebski

-- 
_______________________________________________
devel mailing list -- devel@lists.fedoraproject.org
To unsubscribe send an email to devel-le...@lists.fedoraproject.org
Fedora Code of Conduct: 
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: 
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
Do not reply to spam, report it: 
https://pagure.io/fedora-infrastructure/new_issue

Reply via email to