• 0.0.17

Plugin Documentation

This report describes goals, parameters details, requirements and sample usage of this plugin.

Goals

Goals available for this plugin:

Goal Description
hone:build Build Docker image.

This goal must be used only if you want to build a local custom Docker image for your project. This may be useful when you don't have network access to Docker Hub. In most cases, you have it and that's why don't need this goal. Instead, just use the pull goal, which will simply pull a required Docker image from the Hub.

This goal is mostly for testing and CI/CD.

hone:help Display help information on hone-maven-plugin.
Call mvn hone:help -Ddetail=true -Dgoal=<goal-name> to display parameter details.
hone:optimize 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.

hone:pull Pull Docker image from Docker Hub.

This goal pulls Docker image from Docker Hub to your machine. You may skip this goal and simply use the optimize goal, which will automatically pull the image from the Hub. However, it would be cleaner to use pull, then optimize, and then rmi (which deletes the image from your machine).

hone:rmi Remove Docker image.

This goal deletes Docker image from your machine, in order to save space and simply clean up after the optimization step. You may not use this goal at all, but we recommend to use it.

System Requirements

The following specifies the minimum requirements to run this Maven plugin:

Maven 3.9.9
JDK 11

System Requirements History

The following specifies the minimum requirements to run this Maven plugin for historical versions:

Plugin Version Maven JDK
from 0.0.1 to 0.0.17 - 11

Usage

You should specify the version in your project's plugin configuration:

<project>
  ...
  <build>
    <!-- To define the plugin version in your parent POM -->
    <pluginManagement>
      <plugins>
        <plugin>
          <groupId>org.eolang</groupId>
          <artifactId>hone-maven-plugin</artifactId>
          <version>0.0.17</version>
        </plugin>
        ...
      </plugins>
    </pluginManagement>
    <!-- To use the plugin goals in your POM or parent POM -->
    <plugins>
      <plugin>
        <groupId>org.eolang</groupId>
        <artifactId>hone-maven-plugin</artifactId>
      </plugin>
      ...
    </plugins>
  </build>
  ...
</project>

For more information, see "Guide to Configuring Plug-ins"