hop:run
Resolves a Hop distribution (either the one built by the build goal and attached as a zip, or a distribution coordinate), unpacks it in the working directory, merges the configured repository on top (so project-config.json, repositories/ and metadata/ land in the canonical config/projects/<name> project home) and then runs a pipeline or workflow via hop-run.sh / hop-run.bat. The pipeline/workflow to run is selected either with the pipeline/workflow parameters (they are resolved by Hop inside the merged project home) or directly with a -f/--file argument in args (manual mode: no -f is added and the automatic project activation is suppressed). When a -r/--runconfig argument is present it takes precedence over the runConfig parameter.
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:run.
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>run</goal>
</goals>
<configuration>
<!-- execution specific configuration come there -->
</configuration>
</execution>
</executions>
</plugin>
You can execute this goal particularly with mvn hop:run@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>.
-
args (
List) -
Additional arguments appended to the launcher command line.
-
attach (
boolean) -
Whether to attach the packaged distribution to the build. Default value:
true. Property:${hop.build.attach}.
-
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}.
-
baseDirectory (
java.io.File) -
Folder whose content is copied relatively on top of the assembled hop/ distribution (injecting or overriding configuration). Defaults to src/main/hop/distribution. Default value:
${project.basedir}/src/main/hop/distribution. Property:${hop.build.baseDirectory}.
-
cacheDistribution (
boolean) -
Whether a distribution downloaded from a URL is cached into the Maven local repository so later runs resolve it without re-downloading. The cache uses the synthetic coordinates io.yupiik.hop.cache:<filename>:zip:<url-hash>:<version>. Default value:
true. Property:${hop.build.cacheDistribution}.
-
classifier (
String) -
Classifier used when attaching the packaged distribution. Property:
${hop.build.classifier}.
-
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}.
-
customizations (
io.yupiik.hop.maven.mojo.configuration.Customizations) -
Final customization of the assembled distribution: deletions remove files (ant-style relative globs, directories removed recursively) and additions copy a resolved dependency at a relative target path. Deletions run first, additions last, so an addition can replace a deleted path. Both are guarded so nothing outside the distribution root can be touched.
-
distribution (
String) -
Coordinates of the distribution to run, groupId:artifactId:version[:type[:classifier]], resolved through the Maven resolver. When blank the plugin falls back to the current project artifact if its packaging is a zip. Property:
${hop.run.distribution}.
-
downloadTimeoutMinutes (
long) -
Timeout in minutes for downloading a distribution from a URL. Large distributions on slow links may need more than the default. Default value:
15. Property:${hop.build.downloadTimeoutMinutes}.
-
drivers (
List) -
Extra JDBC driver coordinates copied into hop/lib/jdbc.
-
environmentVariables (
Map) -
Extra environment variables set for the launched process.
-
excludes (
List) -
Ant-style glob patterns excluding files from processing. Property:
${hop.excludes}.
-
failOnError (
boolean) -
Fail the build when the launched process exits with a non-zero code (only when waiting). Default value:
true. Property:${hop.run.failOnError}.
-
headers (
Map) -
Map of additional headers to send on the download request; the username/password credentials (or the matching settings.xml server) take precedence for Authorization.
-
hopFolder (
java.io.File) -
Folder where the assembled distribution is written before the enrichment (the hop/ folder lives underneath workdir ). Default value:
${project.build.directory}/hop-build/hop. Property:${hop.build.hopFolder}.
-
hopVersion (
String) -
Version of the Hop distribution targeted by versionUrl ( \${version} placeholder). Property: `\$ {hop.build.version}`.
-
includes (
List) -
Ant-style glob patterns selecting files to process (applied to the source-relative path). Property:
${hop.includes}.
-
javaagents (
List) -
Extra -javaagent coordinates copied into hop/lib and injected into the scripts. Each may carry =args appended to the javaagent.
-
libs (
List) -
Extra library coordinates copied into hop/lib.
-
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}.
-
overrides (
List) -
In-place jar overrides: a relative path inside the distribution replaced by a resolved dependency coordinate.
-
packageDistribution (
boolean) -
Whether to package the assembled distribution as a zip. Default value:
true. Property:${hop.build.package}.
-
parameters (
Map) -
Pipeline/workflow parameters (name -> value), passed as -p name=value.
-
password (
String) -
Explicit password for the download. When it starts with Bearer it is used as a bearer token (the username becomes the header name, default Authorization). Property:
${hop.build.password}.
-
pipeline (
String) -
Path to the pipeline (.hpl) to run, relative to the merged repository (the canonical project home). Mutually exclusive with workflow ; when both are unset a -f/--file argument in args is required. Property:
${hop.run.pipeline}.
-
plugins (
List) -
Marketplace/plugin coordinates resolved from Maven and installed into the distribution plugins tree, with the category derived from the artifactId.
-
projectName (
String) -
Name of the Hop project to activate. When set (and no -j/--project is present in args ) it is appended to the launcher command line so the project defined by the merged repository (or by any project registered in the distribution config/hop-config.json) is active on startup. When unset the project registered from the merged repository is used. The encrypt goal accepts the parameter but does not append it: its launcher has no project option. Property:
${hop.run.project}.
-
recursive (
boolean) -
Recurse into sub-folders of sourceFolder . Default value:
true. Property:${hop.recursive}.
-
repository (
java.io.File) -
Folder whose content is merged onto the exploded distribution before executing. When unset it defaults to the conventional Hop project home src/main/repositories (skipped when that folder does not exist). With the default home the merged content lands in config/projects/<name> (canonical Hop project layout) so the launcher sees the project home; with an explicit repository it lands at the exploded distribution root (legacy layout, useful for overriding distribution files). An explicit repository whose content contains a root project-config.json is registered and activated like the default home. Property:
${hop.run.repository}.
-
runConfig (
String) -
Run configuration name to use. A -r/--runconfig argument in args takes precedence over this parameter. Property:
${hop.run.runConfig}.
-
skipRootFolderOnUnzip (
boolean) -
Strip the leading root folder when unzipping the distribution (canonical Hop layout). The upstream zip has a hop/ root so this defaults to true. Default value:
true. Property:${hop.build.skipRootFolderOnUnzip}.
-
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}.
-
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>.
-
transforms (
List) -
Custom transform coordinates resolved from Maven and installed into hop/plugins/transforms.
-
username (
String) -
Explicit username for the download (basic auth, or the header name for a bearer token). Property:
${hop.build.username}.
-
versionUrl (
String) -
Location of the Hop distribution to enrich. When it contains a / it is an HTTP(S) URL with an optional \${hop.version} placeholder (a \$ {version} placeholder is also accepted when the value is passed raw via -D on the CLI); otherwise it is a Maven coordinate (groupId:artifactId:version[:type[:classifier]]) resolved through the Maven resolver. The placeholders are replaced with hopVersion . The literal value scratch (or a blank value) assembles a scratch distribution: no client zip is downloaded, unzipped or cached. Only the custom content (drivers, libs, javaagents, transforms, plugins, overrides and the baseDirectory merge) is produced inside an otherwise empty hop/ folder. This is useful to stack custom Hop content on top of a base distribution image (for example via Jib's from + layer filters) without re-downloading the full Hop distribution. Note that in scratch mode there is no base hop-*.sh script, so injected javaagents are staged in lib/ but not wired into a launcher. The run/encrypt/gui/server goals accept the same scratch value: they then log a warning, skip the unzip and assemble only the custom content (plus your baseDirectory) so you can supply a launcher yourself and fake a distribution. Default value:
https://downloads.apache.org/hop/${hop.version}/apache-hop-client-${hop.version}.zip. Property:${hop.build.versionUrl}.
-
waitFor (
Boolean) -
Whether to wait for the launched process to exit before returning. When left unset the goal-specific defaultWaitFor() applies (false for gui/server). Property:
${hop.run.waitFor}.
-
workdir (
java.io.File) -
Working directory where the distribution zip is downloaded and unzipped. Property:
${hop.build.workdir}.
-
workflow (
String) -
Path to the workflow (.hwf) to run, relative to the merged repository (the canonical project home). Mutually exclusive with pipeline ; when both are unset a -f/--file argument in args is required. Property:
${hop.run.workflow}.
-
zipFile (
java.io.File) -
Output zip of the assembled distribution. Default value:
${project.build.directory}/${project.build.finalName}.zip. Property:${hop.build.zipFile}.