• 0.13.9
  • $dateFormat.applyPattern("yyyy-MM-dd'T'hh:mm:ss'Z'")

jeo:disassemble

Full name:

org.eolang:jeo-maven-plugin:0.13.9:disassemble

Description:

Disassembles Java bytecode into XMIR representation.

This Maven plugin converts compiled Java class files into low-level EO representation (in XMIR format) that contains JVM opcodes and their operands. The resulting XMIR files preserve all bytecode instructions and can be assembled back into executable class files.

The plugin supports different disassembly modes to control the level of detail in the output, including debug information such as line numbers and variable names.

Attributes:

  • Requires a Maven project to be executed.
  • The goal is not marked as thread-safe and thus does not support parallel builds.
  • Since version: 0.1.0.
  • Binds by default to the lifecycle phase: process-classes.

Optional Parameters

Name Type Since Description
<disabled> boolean 0.2.0 Flag to disable the plugin execution.

When set to true, the plugin will skip all processing and exit immediately. This can be useful for conditional builds or troubleshooting.


Default: false
User Property: jeo.disassemble.disabled
<excludes> Set<String> 0.13.0 Set of exclusion GLOB filters for finding .class files in the sourcesDir directory.
User Property: jeo.disassemble.excludes
<includes> Set<String> 0.13.0 Set of inclusion GLOB filters for finding .class files in the sourcesDir directory.
User Property: jeo.disassemble.includes
<mode> String 0.6.0 Disassembly mode controlling the level of detail in output.

Supported modes:

  • short - Minimal output with bytecode instructions only (default)
  • debug - Include debug information such as line numbers, local variables, and source file references


Default: short
User Property: jeo.disassemble.mode
<omitComments> boolean 0.11.0 Flag to omit XML comments in generated XMIR files.

When enabled, no comments will be generated in the XMIR output, which can be useful for production builds where comments are not needed and may reduce file size. When disabled, XML comments will be included to provide debugging information.


Default: true
User Property: jeo.disassemble.omitComments
<omitListings> boolean 0.11.0 Flag to omit detailed bytecode listings in generated XMIR.

When enabled, the <listing> element in XMIR files will not contain bytecode listing. This reduces file size and improves readability in production environments where detailed bytecode output is not needed. When disabled, full bytecode listings are included for debugging purposes.


Default: true
User Property: jeo.disassemble.omitListings
<outputDir> File 0.2.0 Target directory for generated XMIR files.

All disassembled XMIR files will be written to this directory, preserving the package structure of the original class files. Each class file will be converted to a corresponding XMIR file with .xmir extension.


Default: ${project.build.directory}/generated-sources/jeo-xmir
User Property: jeo.disassemble.outputDir
<prettyXmir> boolean 0.11.0 Flag to enable pretty-printing of XMIR files.

When enabled, the generated XMIR files will be formatted with indentation (2 spaces) and line breaks for better readability. This is useful for development and debugging purposes. By default, pretty-printing is enabled, but it's best to disable it for large projects or production builds to reduce file size and improve performance.


Default: true
User Property: jeo.disassemble.prettyXmir
<sourcesDir> File 0.2.0 Source directory containing compiled Java class files.

This directory should contain .class files that will be disassembled into XMIR format. Typically points to the project's build output directory.


Default: ${project.build.outputDirectory}
User Property: jeo.disassemble.sourcesDir
<xmirVerification> boolean 0.8.0 Flag to enable XMIR verification after disassembling.

When enabled, verifies all generated XMIR files for structural integrity and correctness after disassembly. If any XMIR file is invalid or corrupted, the build process will fail. This verification is disabled by default for performance.


Default: false
User Property: jeo.disassemble.xmir.verification

Parameter Details

<disabled>

Flag to disable the plugin execution.

When set to true, the plugin will skip all processing and exit immediately. This can be useful for conditional builds or troubleshooting.

  • Type: boolean
  • Since: 0.2.0
  • Required: No
  • User Property: jeo.disassemble.disabled
  • Default: false

<excludes>

Set of exclusion GLOB filters for finding .class files in the sourcesDir directory.
  • Type: java.util.Set<java.lang.String>
  • Since: 0.13.0
  • Required: No
  • User Property: jeo.disassemble.excludes

<includes>

Set of inclusion GLOB filters for finding .class files in the sourcesDir directory.
  • Type: java.util.Set<java.lang.String>
  • Since: 0.13.0
  • Required: No
  • User Property: jeo.disassemble.includes

<mode>

Disassembly mode controlling the level of detail in output.

Supported modes:

  • short - Minimal output with bytecode instructions only (default)
  • debug - Include debug information such as line numbers, local variables, and source file references

  • Type: java.lang.String
  • Since: 0.6.0
  • Required: No
  • User Property: jeo.disassemble.mode
  • Default: short

<omitComments>

Flag to omit XML comments in generated XMIR files.

When enabled, no comments will be generated in the XMIR output, which can be useful for production builds where comments are not needed and may reduce file size. When disabled, XML comments will be included to provide debugging information.

  • Type: boolean
  • Since: 0.11.0
  • Required: No
  • User Property: jeo.disassemble.omitComments
  • Default: true

<omitListings>

Flag to omit detailed bytecode listings in generated XMIR.

When enabled, the <listing> element in XMIR files will not contain bytecode listing. This reduces file size and improves readability in production environments where detailed bytecode output is not needed. When disabled, full bytecode listings are included for debugging purposes.

  • Type: boolean
  • Since: 0.11.0
  • Required: No
  • User Property: jeo.disassemble.omitListings
  • Default: true

<outputDir>

Target directory for generated XMIR files.

All disassembled XMIR files will be written to this directory, preserving the package structure of the original class files. Each class file will be converted to a corresponding XMIR file with .xmir extension.

  • Type: java.io.File
  • Since: 0.2.0
  • Required: No
  • User Property: jeo.disassemble.outputDir
  • Default: ${project.build.directory}/generated-sources/jeo-xmir

<prettyXmir>

Flag to enable pretty-printing of XMIR files.

When enabled, the generated XMIR files will be formatted with indentation (2 spaces) and line breaks for better readability. This is useful for development and debugging purposes. By default, pretty-printing is enabled, but it's best to disable it for large projects or production builds to reduce file size and improve performance.

  • Type: boolean
  • Since: 0.11.0
  • Required: No
  • User Property: jeo.disassemble.prettyXmir
  • Default: true

<sourcesDir>

Source directory containing compiled Java class files.

This directory should contain .class files that will be disassembled into XMIR format. Typically points to the project's build output directory.

  • Type: java.io.File
  • Since: 0.2.0
  • Required: No
  • User Property: jeo.disassemble.sourcesDir
  • Default: ${project.build.outputDirectory}

<xmirVerification>

Flag to enable XMIR verification after disassembling.

When enabled, verifies all generated XMIR files for structural integrity and correctness after disassembly. If any XMIR file is invalid or corrupted, the build process will fail. This verification is disabled by default for performance.

  • Type: boolean
  • Since: 0.8.0
  • Required: No
  • User Property: jeo.disassemble.xmir.verification
  • Default: false