Renders Apache Hop pipelines (.hpl) and workflows (.hwf) as diagrams. Diagram files are discovered from sourceFolder (recursively, honoring includes and excludes), the project variables and metadata are resolved, then one diagram per requested formats is written under targetFolder preserving the source relative path. HOP files load headlessly so the goal is well suited to CI builds.

Coordinates

<plugin>
  <groupId>io.yupiik.hop</groupId>
  <artifactId>hop-maven-plugin</artifactId>
  <version>1.0.1-SNAPSHOT</version>
</plugin>

To call this goal from the command line execute: mvn hop:render.

To bind this goal in the build you can use:

<plugin>
  <groupId>io.yupiik.hop</groupId>
  <artifactId>hop-maven-plugin</artifactId>
  <version>1.0.1-SNAPSHOT</version>
  <executions>
    <execution>
      <id>my-execution</id>
      <goals>
        <goal>render</goal>
      </goals>
      <configuration>
        <!-- execution specific configuration come there -->
      </configuration>
    </execution>
  </executions>
</plugin>

You can execute this goal particularly with mvn hop:render@my-execution command.

Configuration

action2ArtifactMapping (Map)

Override mappings from action plugin id to the artifact (artifactId or full groupId:artifactId:version coordinates) shipping it. Entries take precedence over the built-in table; the default rule is org.apache.hop:hop-action-<id>.

autoResolve (boolean)

Resolve the Hop plugin artifacts (transforms and actions) declared by the rendered diagrams with the Maven resolver, stage them and register them into the Hop registry programmatically. This removes the need to add hop-transform-* / hop-action-* modules as dependencies of this plugin for icon rendering. No JVM-global property is set; the resolution/staging phase runs outside any lock and the registration is serialized on HopEnvironment.class so several mojos can run concurrently in the same build. Default value: false. Property: ${hop.autoResolve}.

autoResolvePluginsFolder (java.io.File)

Staging folder where auto-resolved plugin jars are copied (plugin jar at the root, dependencies in a lib/ sub-folder). Only used when autoResolve is enabled. Property: ${hop.autoResolvePluginsFolder}.

autoResolveVersion (String)

Version used when a mapped artifact is given as a bare hop-transform-<id> artifactId (no explicit version). Defaults to the Hop version this plugin runs against when it can be detected, otherwise Apache Hop dependency version. Property: ${hop.autoResolveVersion}.

configFile (java.io.File)

JSON file declaring the Hop variables to inject before diagrams are resolved and rendered. The file may be a canonical Hop project-config.json (reading config.variables) or any JSON exposing a top-level variables array, each entry being {name, value, description}. Property: ${hop.configFile}.

excludes (List)

Ant-style glob patterns excluding files from processing. Property: ${hop.excludes}.

failOnMissing (boolean)

Fail the build if a transform or action declared by a rendered .hpl/.hwf is not resolvable (its hop-transform-* or hop-action-* module is missing from the plugin classpath). When false unresolved steps are rendered as-is (box and label). Enable it in the consuming pom together with the Hop plugin modules as plugin dependencies. Default value: false. Property: ${hop.render.failOnMissing}.

formats (List)

The diagram formats to generate. Each format maps to one exporter per subject type. Default value: SVG. Property: ${hop.render.formats}.

includeNotes (boolean)

Include Hop notes in the rendered diagram. Default value: true. Property: ${hop.render.includeNotes}.

includes (List)

Ant-style glob patterns selecting files to process (applied to the source-relative path). Property: ${hop.includes}.

magnification (float)

Diagram magnification factor. Default value: 1.0. Property: ${hop.render.magnification}.

metadataFolder (java.io.File)

The metadata base folder holding the HOP metadata (rdbms, run configurations, ...). Defaults to <project.basedir>/metadata, matching the canonical Hop metadataBaseFolder={PROJECT_HOME/metadata}. Property: ${hop.metadataFolder}.

recursive (boolean)

Recurse into sub-folders of sourceFolder . Default value: true. Property: ${hop.recursive}.

sourceFolder (java.io.File)

Root folder where HOP diagram files (.hpl, .hwf) are searched. Defaults to the project base dir, following the Apache Hop convention where pipelines and workflows are stored directly in the project folder. Property: ${hop.sourceFolder}.

targetFolder (java.io.File)

Folder where the generated diagrams are written, preserving the source relative path. Default value: ${project.build.directory}/hop-diagrams. Property: ${hop.render.targetFolder}.

transform2ArtifactMapping (Map)

Override mappings from transform plugin id to the artifact (artifactId or full groupId:artifactId:version coordinates) shipping it. Entries take precedence over the built-in table; the default rule is org.apache.hop:hop-transform-<id>.