Class OptimizeMojo

java.lang.Object
org.apache.maven.plugin.AbstractMojo
org.eolang.hone.OptimizeMojo
All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

@Mojo(name="optimize", defaultPhase=PROCESS_CLASSES) public final class OptimizeMojo extends org.apache.maven.plugin.AbstractMojo
Converts Bytecode to Bytecode in order to make it faster.

This goal takes every .class file from the target/classes/ directory, converts it to .xmir format (which is XML representation of EO), then converts .xmir to .phi (which is 𝜑-calculus), then optimizes it via eo-phi-normalizer, and then back to .xmir and to .class. As a result, you obtain optimized Bytecode in the target/classes/ directory, which supposedly works faster than before.

The entire optimization pipeline happens inside Docker container, which is run from the image specified in the image parameter. The image may either be pulled or built locally. We recommend pulling it from the Docker Hub with the help of the pull goal. Also, we recommend deleting the image after optimization is done, with the help of the rmi goal.

Since:
0.1.0
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected String
    Docker image to use.
    protected boolean
    Use "sudo" for "docker".

    Fields inherited from interface org.apache.maven.plugin.Mojo

    ROLE
  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
     
    final void
     

    Methods inherited from class org.apache.maven.plugin.AbstractMojo

    getLog, getPluginContext, setLog, setPluginContext

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

    • image

      @Parameter(property="hone.image", defaultValue="yegor256/hone") protected String image
      Docker image to use.
      Since:
      0.1.0
    • sudo

      @Parameter(property="hone.sudo", defaultValue="false") protected boolean sudo
      Use "sudo" for "docker".
      Since:
      0.1.0
  • Constructor Details

    • OptimizeMojo

      public OptimizeMojo()
  • Method Details

    • exec

      public void exec() throws IOException
      Throws:
      IOException
    • execute

      public final void execute() throws org.apache.maven.plugin.MojoExecutionException
      Throws:
      org.apache.maven.plugin.MojoExecutionException