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 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:
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 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 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 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>
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>
sourcesDir
directory.- Type:
java.util.Set<java.lang.String>
- Since:
0.13.0
- Required:
No
- User Property:
jeo.disassemble.excludes
<includes>
sourcesDir
directory.- Type:
java.util.Set<java.lang.String>
- Since:
0.13.0
- Required:
No
- User Property:
jeo.disassemble.includes
<mode>
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>
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>
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>
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>
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>
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>
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