Class OptimizeMojo
- All Implemented Interfaces:
org.apache.maven.plugin.ContextEnabled
,org.apache.maven.plugin.Mojo
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
phino,
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
- Suppressed Checkstyle violations:
- CyclomaticComplexityCheck (500 lines), NPathComplexityCheck (500 lines), ExecutableStatementCountCheck (500 lines)
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interface
C library interface for getting user IDs. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected boolean
Run without Docker even if phino is available.protected String
Docker image to use.protected boolean
Whether to use "sudo" when executing Docker commands.protected File
The "target/" directory of Maven project.protected org.eolang.hone.Timings
Timings tracker for performance measurements.Fields inherited from interface org.apache.maven.plugin.Mojo
ROLE
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class org.apache.maven.plugin.AbstractMojo
getLog, getPluginContext, setLog, setPluginContext
-
Field Details
-
target
The "target/" directory of Maven project.- Since:
- 0.1.0
-
timings
protected org.eolang.hone.Timings timingsTimings tracker for performance measurements.- Since:
- 0.1.0
-
image
Docker image to use.- Since:
- 0.1.0
-
sudo
@Parameter(property="hone.sudo", defaultValue="false") protected boolean sudoWhether to use "sudo" when executing Docker commands.- Since:
- 0.1.0
-
alwaysWithDocker
@Parameter(property="hone.always-with-docker", defaultValue="false") protected boolean alwaysWithDockerRun without Docker even if phino is available.If this is set to true, Docker is used even if phino is available. It is recommended to keep this parameter to false, thus making the build faster if it's possible.
- Since:
- 0.17.0
- Suppressed Checkstyle violations:
- MemberNameCheck (6 lines)
-
-
Constructor Details
-
OptimizeMojo
public OptimizeMojo()
-
-
Method Details
-
exec
- Throws:
IOException
-
execute
public final void execute() throws org.apache.maven.plugin.MojoExecutionException- Throws:
org.apache.maven.plugin.MojoExecutionException
-