Skip to content

Build: Unnecessary --enable-preview flag in compiler configuration #41

@sfloess

Description

@sfloess

Description

pom.xml includes --enable-preview in compiler args, but the codebase doesn't use any Java preview features.

Problem Location

pom.xml lines 149, 169:

<compilerArgs>
    <arg>--enable-preview</arg>
</compilerArgs>

<additionalOptions>
    <additionalOption>--enable-preview</additionalOption>
</additionalOptions>

Surefire test args line 238:

<argLine>@{argLine} --enable-preview --enable-native-access=ALL-UNNAMED</argLine>

Analysis

Searched codebase for Java preview features:

  • No pattern matching enhancements
  • No record patterns (records are stable in Java 21)
  • No virtual threads preview APIs
  • No structured concurrency
  • No scoped values
  • No string templates (preview in Java 21)

The only "preview" mentions in code refer to dry-run preview mode, not Java language features.

Impact

  • Confusion: Implies code uses unstable features when it doesn't
  • Build warnings: May generate warnings about preview features
  • Documentation burden: Requires explaining why preview is enabled
  • Future compatibility: Preview features may change in future Java versions

Recommended Fix

Remove all --enable-preview flags:

<!-- Compiler Plugin -->
<compilerArgs>
    <arg>-parameters</arg>
    <!-- Remove: <arg>--enable-preview</arg> -->
</compilerArgs>

<!-- Javadoc Plugin -->
<!-- Remove: <additionalOption>--enable-preview</additionalOption> -->

<!-- Surefire Plugin -->
<argLine>@{argLine} --enable-native-access=ALL-UNNAMED</argLine>

Note: Keep --enable-native-access=ALL-UNNAMED as it may be needed for native libraries (jcurses).

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions