Class ResolveMojo

  • All Implemented Interfaces:
    org.apache.maven.plugin.ContextEnabled, org.apache.maven.plugin.Mojo

    @Mojo(name="resolve",
          defaultPhase=PROCESS_SOURCES,
          threadSafe=true)
    public final class ResolveMojo
    extends org.apache.maven.plugin.AbstractMojo
    Find all required runtime dependencies, download them from Maven Central, unpack and place to the target/eo directory.

    The motivation for this mojo is simple: Maven doesn't have a mechanism for adding .JAR files to transpile/test classpath in runtime.

    Since:
    0.1
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected File cache
      EO cache directory.
      protected BiConsumer<org.apache.maven.model.Dependency,​Path> central
      The central.
      protected File classesDir
      Directory where classes are stored in target.
      static String DIR
      The directory where to resolve to.
      protected boolean discoverSelf
      Shall we discover JAR artifacts for .EO sources?
      protected Set<String> excludeBinaries
      List of exclusion GLOB filters for finding class files.
      protected File foreign
      File with foreign "tojos".
      protected String foreignFormat
      Format of "foreign" file ("json" or "csv").
      protected boolean ignoreTransitive
      Fail resolution process on transitive dependencies.
      protected boolean ignoreVersionConflicts
      Fail resolution process on conflicting dependencies.
      protected Set<String> includeBinaries
      List of inclusion GLOB filters for finding class files.
      protected org.apache.maven.plugin.BuildPluginManager manager
      Maven plugin manager.
      protected boolean offline
      If we are offline and not able to download anything from the internet.
      protected File outputDir
      Output.
      protected boolean overWrite
      Pull again even if the .eo file is already present?
      protected boolean placeBinariesThatHaveSources
      Place only binaries that have EO sources inside jar.
      protected File placed
      The path to a text file where paths of all added .class (and maybe others) files are placed.
      protected String placedFormat
      Format of "placed" file ("json" or "csv").
      protected PlacedTojos placedTojos
      Placed tojos.
      protected org.apache.maven.plugin.descriptor.PluginDescriptor plugin
      The current version of eo-maven-plugin.
      protected org.apache.maven.project.MavenProject project
      Maven project.
      protected boolean rewriteBinaries
      Rewrite binaries in output directory or not.
      protected String scope
      Current scope (either "compile" or "test").
      protected org.apache.maven.execution.MavenSession session
      Maven session.
      protected boolean skipZeroVersions
      Skip artifact with the version 0.0.0.
      protected File sourcesDir
      Directory in which .eo files are located.
      protected String tag
      The Git tag to pull objects from, in objectionary.
      protected File targetDir
      Target directory.
      protected Integer timeout
      Mojo execution timeout in seconds.
      protected boolean trackTransformationSteps
      Track optimization steps into intermediate XMIR files?
      protected File transpiled
      The path to a text file where paths of generated java files per EO program.
      protected String transpiledFormat
      Format of "transpiled" file ("json" or "csv").
      protected TranspiledTojos transpiledTojos
      Cached transpiled tojos.
      protected boolean unrollExitError
      If set to TRUE, the exception on exit will be printed in details to the log.
      protected boolean withRuntimeDependency
      Add eo-runtime dependency to the classpath.
      protected File xslMeasures
      The path of the file where XSL measurements (time of execution in milliseconds) will be stored.
      • Fields inherited from interface org.apache.maven.plugin.Mojo

        ROLE
    • Constructor Summary

      Constructors 
      Constructor Description
      ResolveMojo()  
    • Field Detail

      • project

        @Parameter(defaultValue="${project}",
                   readonly=true)
        protected org.apache.maven.project.MavenProject project
        Maven project.
      • session

        @Parameter(defaultValue="${session}",
                   readonly=true)
        protected org.apache.maven.execution.MavenSession session
        Maven session.
      • manager

        @Component
        protected org.apache.maven.plugin.BuildPluginManager manager
        Maven plugin manager.
      • classesDir

        @Parameter(defaultValue="${project.build.directory}/classes",
                   readonly=true,
                   required=true)
        protected File classesDir
        Directory where classes are stored in target.
      • foreign

        @Parameter(property="eo.foreign",
                   required=true,
                   defaultValue="${project.build.directory}/eo-foreign.csv")
        protected File foreign
        File with foreign "tojos".
      • foreignFormat

        @Parameter(property="eo.foreignFormat",
                   required=true,
                   defaultValue="csv")
        protected String foreignFormat
        Format of "foreign" file ("json" or "csv").
      • sourcesDir

        @Parameter(property="eo.sourcesDir",
                   required=true,
                   defaultValue="${project.basedir}/src/main/eo")
        protected File sourcesDir
        Directory in which .eo files are located.
      • targetDir

        @Parameter(property="eo.targetDir",
                   required=true,
                   defaultValue="${project.build.directory}/eo")
        protected File targetDir
        Target directory.
      • outputDir

        @Parameter(property="eo.outputDir",
                   required=true,
                   defaultValue="${project.build.outputDirectory}")
        protected File outputDir
        Output.
      • scope

        @Parameter(property="eo.scope")
        protected String scope
        Current scope (either "compile" or "test").
      • placed

        @Parameter(property="eo.placed",
                   required=true,
                   defaultValue="${project.build.directory}/eo-placed.csv")
        protected File placed
        The path to a text file where paths of all added .class (and maybe others) files are placed.
        Since:
        0.11.0
      • placedFormat

        @Parameter(property="eo.placedFormat",
                   required=true,
                   defaultValue="json")
        protected String placedFormat
        Format of "placed" file ("json" or "csv").
      • transpiled

        @Parameter(property="eo.transpiled",
                   required=true,
                   defaultValue="${project.build.directory}/eo-transpiled.csv")
        protected File transpiled
        The path to a text file where paths of generated java files per EO program.
        Since:
        0.11.0
      • xslMeasures

        @Parameter(property="eo.xslMeasuresFile",
                   required=true,
                   defaultValue="${project.build.directory}/eo/xsl-measures.csv")
        protected File xslMeasures
        The path of the file where XSL measurements (time of execution in milliseconds) will be stored.
        Since:
        0.41.0
      • timeout

        @Parameter(property="eo.timeout")
        protected Integer timeout
        Mojo execution timeout in seconds.
        Since:
        0.28.12
      • transpiledFormat

        @Parameter(property="eo.transpiledFormat",
                   required=true,
                   defaultValue="csv")
        protected String transpiledFormat
        Format of "transpiled" file ("json" or "csv").
      • trackTransformationSteps

        @Parameter(property="eo.trackTransformationSteps",
                   required=true,
                   defaultValue="false")
        protected boolean trackTransformationSteps
        Track optimization steps into intermediate XMIR files?
        Since:
        0.24.0
      • unrollExitError

        @Parameter(property="eo.unrollExitError")
        protected boolean unrollExitError
        If set to TRUE, the exception on exit will be printed in details to the log.
        Since:
        0.29.0
      • cache

        @Parameter(property="eo.cache")
        protected File cache
        EO cache directory.
      • rewriteBinaries

        @Parameter(property="eo.rewriteBinaries",
                   defaultValue="true")
        protected boolean rewriteBinaries
        Rewrite binaries in output directory or not.
        Since:
        0.32.0
      • offline

        @Parameter(property="eo.offline",
                   required=true,
                   defaultValue="false")
        protected boolean offline
        If we are offline and not able to download anything from the internet.
        Since:
        0.32.0
      • tag

        @Parameter(property="eo.tag",
                   required=true,
                   defaultValue="master")
        protected String tag
        The Git tag to pull objects from, in objectionary.
        Since:
        0.21.0
      • overWrite

        @Parameter(property="eo.overWrite",
                   required=true,
                   defaultValue="false")
        protected boolean overWrite
        Pull again even if the .eo file is already present?
        Since:
        0.10.0
      • skipZeroVersions

        @Parameter(property="eo.skipZeroVersions",
                   required=true,
                   defaultValue="true")
        protected boolean skipZeroVersions
        Skip artifact with the version 0.0.0.
        Since:
        0.9.0
      • placeBinariesThatHaveSources

        @Parameter
        protected boolean placeBinariesThatHaveSources
        Place only binaries that have EO sources inside jar.
        Since:
        0.31
      • ignoreVersionConflicts

        @Parameter(property="eo.ignoreVersionConflicts",
                   required=true,
                   defaultValue="false")
        protected boolean ignoreVersionConflicts
        Fail resolution process on conflicting dependencies.
        Since:
        0.1.0
      • discoverSelf

        @Parameter(property="eo.discoverSelf",
                   required=true,
                   defaultValue="false")
        protected boolean discoverSelf
        Shall we discover JAR artifacts for .EO sources?
        Since:
        0.12.0
      • includeBinaries

        @Parameter
        protected Set<String> includeBinaries
        List of inclusion GLOB filters for finding class files.
        Since:
        0.15
      • excludeBinaries

        @Parameter
        protected Set<String> excludeBinaries
        List of exclusion GLOB filters for finding class files.
        Since:
        0.15
      • withRuntimeDependency

        @Parameter(property="eo.ignoreRuntime",
                   required=true,
                   defaultValue="true")
        protected boolean withRuntimeDependency
        Add eo-runtime dependency to the classpath.

        That property is useful only for eo-runtime library compilation. When you compile eo-runtime, you don't want to add eo-runtime from foreign sources (since you compile an eo-runtime library and classpath will anyway have all required classes) and in this case, you should set this property to false. In any other cases, the eo-runtime dependency will be downloaded and added to the classpath automatically.

      • ignoreTransitive

        @Parameter(property="eo.ignoreTransitive",
                   required=true,
                   defaultValue="false")
        protected boolean ignoreTransitive
        Fail resolution process on transitive dependencies.
      • plugin

        @Parameter(defaultValue="${plugin}",
                   readonly=true)
        protected org.apache.maven.plugin.descriptor.PluginDescriptor plugin
        The current version of eo-maven-plugin. Maven 3 only. You can read more about that property here.
      • placedTojos

        protected final PlacedTojos placedTojos
        Placed tojos.
      • transpiledTojos

        protected final TranspiledTojos transpiledTojos
        Cached transpiled tojos.
      • central

        protected BiConsumer<org.apache.maven.model.Dependency,​Path> central
        The central.
    • Constructor Detail

      • ResolveMojo

        public ResolveMojo()
    • Method Detail

      • isRuntime

        public static boolean isRuntime​(org.apache.maven.model.Dependency dep)
        Checks if dependency is runtime.
        Parameters:
        dep - Dependency
        Returns:
        True if runtime.
      • execute

        public final void execute()
                           throws org.apache.maven.plugin.MojoFailureException
        Execute it.
        Throws:
        org.apache.maven.plugin.MojoFailureException - If fails during build
      • scopedTojos

        protected final ForeignTojos scopedTojos()
        Tojos to use, in my scope only.
        Returns:
        Tojos to use
      • compileTojos

        protected final ForeignTojos compileTojos()
        Tojos to use, in "compile" scope only.
        Returns:
        Tojos to use
      • measured

        protected final com.yegor256.xsline.Train<com.yegor256.xsline.Shift> measured​(com.yegor256.xsline.Train<com.yegor256.xsline.Shift> train)
        Make a measured train from another train.
        Parameters:
        train - The train
        Returns:
        Measured train