This is an automated email from the ASF dual-hosted git repository.

hansva pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/main by this push:
     new af615ad34b some extra cleanup, fixes  #7721 (#7722)
af615ad34b is described below

commit af615ad34b463393811c0e6e026848ce5ddc3336
Author: Hans Van Akelyen <[email protected]>
AuthorDate: Fri Jul 31 17:39:19 2026 +0200

    some extra cleanup, fixes  #7721 (#7722)
---
 assemblies/client/pom.xml                          |  16 +-
 assemblies/client/src/assembly/assembly.xml        |   5 +-
 assemblies/plugins/pom.xml                         |  13 +-
 assemblies/static/src/main/resources/hop-conf.bat  |   7 -
 assemblies/static/src/main/resources/hop-conf.sh   |  10 --
 .../static/src/main/resources/hop-encrypt.bat      |   7 -
 .../static/src/main/resources/hop-encrypt.sh       |  10 --
 .../static/src/main/resources/hop-gui-nolog.bat    |   7 -
 assemblies/static/src/main/resources/hop-gui.bat   |   7 -
 assemblies/static/src/main/resources/hop-gui.sh    |  10 --
 .../static/src/main/resources/hop-import.bat       |   7 -
 assemblies/static/src/main/resources/hop-import.sh |  10 --
 assemblies/static/src/main/resources/hop-run.bat   |   7 -
 assemblies/static/src/main/resources/hop-run.sh    |  10 --
 .../static/src/main/resources/hop-search.bat       |   7 -
 assemblies/static/src/main/resources/hop-search.sh |  10 --
 .../static/src/main/resources/hop-server.bat       |   7 -
 assemblies/static/src/main/resources/hop-server.sh |  10 --
 assemblies/static/src/main/resources/hop.bat       |   7 -
 .../pages/pipeline/transforms/detectlanguage.adoc  |  15 +-
 .../pages/pipeline/transforms/stanfordnlp.adoc     |  36 +++--
 plugins/engines/beam/pom.xml                       |  34 +----
 .../beam/src/assembly/assembly-beam-runtime.xml    | 154 --------------------
 .../engines/beam/src/assembly/assembly-libs.xml    | 161 ---------------------
 plugins/engines/beam/src/assembly/assembly.xml     |  41 +++++-
 .../org/apache/hop/beam/gui/HopBeamGuiPlugin.java  |  11 +-
 .../marketplace/catalog/OptionalPluginCatalog.java |   2 +-
 .../apache/hop/marketplace/optional-plugins.yaml   |   6 +
 .../marketplace/install/PluginInstallerTest.java   |   2 +-
 plugins/transforms/detectlanguage/pom.xml          |   5 -
 plugins/transforms/stanfordnlp/pom.xml             |   7 +
 31 files changed, 116 insertions(+), 525 deletions(-)

diff --git a/assemblies/client/pom.xml b/assemblies/client/pom.xml
index b99efff000..abad987b67 100644
--- a/assemblies/client/pom.xml
+++ b/assemblies/client/pom.xml
@@ -61,17 +61,9 @@
             <version>${project.version}</version>
             <type>zip</type>
         </dependency>
-        <!-- Slim Beam-related libs only: lib/spark-client + shared lib/core 
extras.
-             Beam SDKs/runners ship with the marketplace plugin under 
plugins/engines/beam/lib-beam.
-             Use -Pbeam to bake the full Beam plugin (+ lib-beam) into 
hop-client (IT / fat Beam builds). -->
-        <dependency>
-            <groupId>org.apache.hop</groupId>
-            <artifactId>hop-engines-beam</artifactId>
-            <version>${project.version}</version>
-            <classifier>libs</classifier>
-            <type>zip</type>
-        </dependency>
-        <!-- hop-engines-spark is a marketplace-optional plugin (not bundled 
in the client). -->
+        <!-- hop-engines-beam and hop-engines-spark are marketplace-optional 
plugins (not bundled
+             in the client). Use -Pbeam / -Pfull to bake the full Beam plugin 
— including its
+             lib/core and lib/spark-client — into hop-client (IT / fat Beam 
builds). -->
         <dependency>
             <groupId>org.apache.hop</groupId>
             <artifactId>hop-ui</artifactId>
@@ -144,7 +136,7 @@
     </dependencies>
 
     <!--
-      Opt-in Beam engine + SDKs in hop-client (plugins/engines/beam including 
lib-beam).
+      Opt-in Beam engine + SDKs in hop-client (plugin jar plus its libs in 
lib/core).
       Analogous to HOP_SPARK_CLIENT_VERSION=native for Spark: default lean 
client has no Beam
       runners on the classpath; use -Pbeam for IT / local full Beam installs.
 
diff --git a/assemblies/client/src/assembly/assembly.xml 
b/assemblies/client/src/assembly/assembly.xml
index 58b15cad02..c5b6534a64 100644
--- a/assemblies/client/src/assembly/assembly.xml
+++ b/assemblies/client/src/assembly/assembly.xml
@@ -40,9 +40,8 @@
                 <include>org.apache.hop:hop-core:zip</include>
                 <include>org.apache.hop:hop-engine:zip</include>
                 <include>org.apache.hop:hop-ui:zip</include>
-                <!-- Slim: spark-client + shared lib/core extras (no Beam 
SDKs) -->
-                <include>org.apache.hop:hop-engines-beam:zip:libs</include>
-                <!-- Full Beam plugin + lib-beam only when dependency present 
(-Pbeam) -->
+                <!-- Beam is a marketplace plugin; bundled only when the 
dependency is
+                     present (-Pbeam / -Pfull). It brings its own lib/core 
libs and lib/spark-client. -->
                 <include>org.apache.hop:hop-engines-beam:zip</include>
                 <include>org.apache.hop:hop-ui-rcp:zip</include>
             </includes>
diff --git a/assemblies/plugins/pom.xml b/assemblies/plugins/pom.xml
index 5198265e75..ff455aabc6 100644
--- a/assemblies/plugins/pom.xml
+++ b/assemblies/plugins/pom.xml
@@ -908,12 +908,7 @@
             <version>${project.version}</version>
             <type>zip</type>
         </dependency>
-        <dependency>
-            <groupId>org.apache.hop</groupId>
-            <artifactId>hop-transform-detectlanguage</artifactId>
-            <version>${project.version}</version>
-            <type>zip</type>
-        </dependency>
+        <!-- marketplace optional: hop-transform-detectlanguage -->
         <dependency>
             <groupId>org.apache.hop</groupId>
             <artifactId>hop-transform-detectlastrow</artifactId>
@@ -1717,6 +1712,12 @@
                     <version>${project.version}</version>
                     <type>zip</type>
                 </dependency>
+                <dependency>
+                    <groupId>org.apache.hop</groupId>
+                    <artifactId>hop-transform-detectlanguage</artifactId>
+                    <version>${project.version}</version>
+                    <type>zip</type>
+                </dependency>
                 <dependency>
                     <groupId>org.apache.hop</groupId>
                     <artifactId>hop-transform-drools</artifactId>
diff --git a/assemblies/static/src/main/resources/hop-conf.bat 
b/assemblies/static/src/main/resources/hop-conf.bat
index 12726246c8..fea7732864 100644
--- a/assemblies/static/src/main/resources/hop-conf.bat
+++ b/assemblies/static/src/main/resources/hop-conf.bat
@@ -29,13 +29,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-conf.sh 
b/assemblies/static/src/main/resources/hop-conf.sh
index 67dd91794e..3c3257dd3a 100755
--- a/assemblies/static/src/main/resources/hop-conf.sh
+++ b/assemblies/static/src/main/resources/hop-conf.sh
@@ -104,16 +104,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.config.HopConfig "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-encrypt.bat 
b/assemblies/static/src/main/resources/hop-encrypt.bat
index 66b37dea1e..0c605ec0fe 100644
--- a/assemblies/static/src/main/resources/hop-encrypt.bat
+++ b/assemblies/static/src/main/resources/hop-encrypt.bat
@@ -30,13 +30,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-encrypt.sh 
b/assemblies/static/src/main/resources/hop-encrypt.sh
index 365b2e72d6..e67e2ab8a9 100755
--- a/assemblies/static/src/main/resources/hop-encrypt.sh
+++ b/assemblies/static/src/main/resources/hop-encrypt.sh
@@ -104,16 +104,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -classpath "${CLASSPATH}" 
org.apache.hop.encryption.HopEncrypt "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-gui-nolog.bat 
b/assemblies/static/src/main/resources/hop-gui-nolog.bat
index 042384cd8e..b9297fa6bd 100644
--- a/assemblies/static/src/main/resources/hop-gui-nolog.bat
+++ b/assemblies/static/src/main/resources/hop-gui-nolog.bat
@@ -27,13 +27,6 @@ if not "%HOP_WINDOWS_SHELL_ENCODING%"=="" chcp 
%HOP_WINDOWS_SHELL_ENCODING%
 set LIBSPATH=lib\core
 set CLASSPATH=lib\core\*;lib\swt\win64\*
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 set _temphelp=0
 if [%1]==[help] set _temphelp=1
diff --git a/assemblies/static/src/main/resources/hop-gui.bat 
b/assemblies/static/src/main/resources/hop-gui.bat
index 7fb165def5..7c00cd500c 100755
--- a/assemblies/static/src/main/resources/hop-gui.bat
+++ b/assemblies/static/src/main/resources/hop-gui.bat
@@ -32,13 +32,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-gui.sh 
b/assemblies/static/src/main/resources/hop-gui.sh
index 188ec8af38..1df8915e91 100755
--- a/assemblies/static/src/main/resources/hop-gui.sh
+++ b/assemblies/static/src/main/resources/hop-gui.sh
@@ -123,16 +123,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.ui.hopgui.HopGui "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-import.bat 
b/assemblies/static/src/main/resources/hop-import.bat
index 5a4b91e88c..210f1acbda 100644
--- a/assemblies/static/src/main/resources/hop-import.bat
+++ b/assemblies/static/src/main/resources/hop-import.bat
@@ -30,13 +30,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-import.sh 
b/assemblies/static/src/main/resources/hop-import.sh
index 5ee373c1ae..fc65d4ebd7 100755
--- a/assemblies/static/src/main/resources/hop-import.sh
+++ b/assemblies/static/src/main/resources/hop-import.sh
@@ -104,16 +104,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.imp.HopImport "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-run.bat 
b/assemblies/static/src/main/resources/hop-run.bat
index 9c4e215227..c4c370abf1 100755
--- a/assemblies/static/src/main/resources/hop-run.bat
+++ b/assemblies/static/src/main/resources/hop-run.bat
@@ -32,13 +32,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-run.sh 
b/assemblies/static/src/main/resources/hop-run.sh
index 83c03b7f5f..8b29434593 100755
--- a/assemblies/static/src/main/resources/hop-run.sh
+++ b/assemblies/static/src/main/resources/hop-run.sh
@@ -104,16 +104,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.run.HopRun "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-search.bat 
b/assemblies/static/src/main/resources/hop-search.bat
index 35571bb464..4526845a1b 100644
--- a/assemblies/static/src/main/resources/hop-search.bat
+++ b/assemblies/static/src/main/resources/hop-search.bat
@@ -29,13 +29,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-search.sh 
b/assemblies/static/src/main/resources/hop-search.sh
index 607f53261e..a16d884a8b 100755
--- a/assemblies/static/src/main/resources/hop-search.sh
+++ b/assemblies/static/src/main/resources/hop-search.sh
@@ -104,16 +104,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.search.HopSearch "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop-server.bat 
b/assemblies/static/src/main/resources/hop-server.bat
index d47d761bf0..e6194a0d01 100644
--- a/assemblies/static/src/main/resources/hop-server.bat
+++ b/assemblies/static/src/main/resources/hop-server.bat
@@ -32,13 +32,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git a/assemblies/static/src/main/resources/hop-server.sh 
b/assemblies/static/src/main/resources/hop-server.sh
index d732505d4d..f32919b2ba 100755
--- a/assemblies/static/src/main/resources/hop-server.sh
+++ b/assemblies/static/src/main/resources/hop-server.sh
@@ -109,16 +109,6 @@ if [ -n "${HOP_SPARK_CLIENT_VERSION:-}" ] && [ -d 
"lib/spark-clients/${HOP_SPARK
   CLASSPATH="${CLASSPATH}:lib/spark-clients/${HOP_SPARK_CLIENT_VERSION}/*"
 fi
 
-# Beam SDKs/runners live with the optional Beam plugin (not lib/beam).
-# Only on the system classpath when marketplace (or -Pbeam) has installed them.
-if [ -d "plugins/engines/beam/lib-beam" ]; then
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/lib-beam/*"
-fi
-if [ -d "plugins/engines/beam" ]; then
-  # Hop Beam plugin jars at the plugin root (exclude subdirs via non-recursive 
glob is fine for /*.jar intent;
-  # shell * includes jars and may pick non-jars; match historical lib/* style)
-  CLASSPATH="${CLASSPATH}:plugins/engines/beam/*"
-fi
 "${_HOP_JAVA}" ${HOP_OPTIONS} -Djava.library.path="${LIBPATH}" -classpath 
"${CLASSPATH}" org.apache.hop.www.HopServer "$@"
 EXITCODE=$?
 
diff --git a/assemblies/static/src/main/resources/hop.bat 
b/assemblies/static/src/main/resources/hop.bat
index 0b624c3364..d612752ea6 100755
--- a/assemblies/static/src/main/resources/hop.bat
+++ b/assemblies/static/src/main/resources/hop.bat
@@ -33,13 +33,6 @@ if defined HOP_SPARK_CLIENT_VERSION if exist 
"lib\spark-clients\%HOP_SPARK_CLIEN
   set CLASSPATH=%CLASSPATH%;lib\spark-clients\%HOP_SPARK_CLIENT_VERSION%\*
 )
 
-REM Beam SDKs under optional plugin (plugins\engines\beam\lib-beam)
-if exist "plugins\engines\beam\lib-beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\lib-beam\*
-)
-if exist "plugins\engines\beam\" (
-  set CLASSPATH=%CLASSPATH%;plugins\engines\beam\*
-)
 
 
 
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
index 11a0b36b14..3ca6d7f496 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/detectlanguage.adoc
@@ -51,6 +51,15 @@ 
https://github.com/pemistahl/lingua?tab=readme-ov-file#3-which-languages-are-sup
 This name must be unique throughout the pipeline.
 |===
 
-NOTE: The dependencies for this transform are not included in the application 
to make this work you need to include following files in the 
/plugins/transforms/detectlanguage/lib folder +
-- 
https://repo1.maven.org/maven2/com/github/pemistahl/lingua/1.2.2/lingua-1.2.2.jar[Lingua]
 +
-- 
https://repo1.maven.org/maven2/it/unimi/dsi/fastutil/8.5.15/fastutil-8.5.15.jar[Fastutil]
 +
+== Installation
+
+This transform is not part of the default Hop client.
+Install it from the Marketplace perspective in Hop Gui (Detect language, 
category Transforms), or with the 
xref:hop-tools/hop-marketplace.adoc[marketplace command line]:
+
+[source,bash]
+----
+./hop marketplace install hop-transform-detectlanguage
+----
+
+The https://github.com/pemistahl/lingua[Lingua] language models and 
https://fastutil.di.unimi.it/[fastutil] are bundled with the plugin, so no jars 
have to be downloaded by hand.
+Because the language models are large, the plugin is around 100MB in size.
diff --git 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
index 2ebe90a68a..2a4cc7a650 100644
--- 
a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
+++ 
b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/stanfordnlp.adoc
@@ -39,15 +39,29 @@ Stanford CoreNLP provides a set of natural language 
analysis tools which can tak
 !===
 |===
 
-NOTE: The dependencies for this transform are not included in the application 
to make this work you need to include following files in the 
/plugins/transforms/stanfordnlp/lib folder +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7.jar[stanford-corenlp
 4.5.7] +
-Model for your language +
+== Installation
+
+This transform is not part of the default Hop client.
+Install it from the Marketplace perspective in Hop Gui (Stanford NLP, category 
Transforms), or with the xref:hop-tools/hop-marketplace.adoc[marketplace 
command line]:
+
+[source,bash]
+----
+./hop marketplace install hop-transform-stanfordnlp
+----
+
+The plugin ships the supporting libraries, but Stanford CoreNLP itself is 
licensed under the GPL v3 and can not be distributed by the Apache Software 
Foundation.
+Download the following two jars and drop them in the 
`plugins/transforms/stanfordnlp/lib` folder: +
+ +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10.jar[stanford-corenlp
 4.5.10] +
+- https://repo1.maven.org/maven2/xom/xom/1.3.9/xom-1.3.9.jar[xom 1.3.9]
+
+NOTE: The language models are not distributed either: pick the model for your 
language and drop it in the same `plugins/transforms/stanfordnlp/lib` folder. +
  +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-arabic.jar[Arabic
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-chinese.jar[Chinese
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-english.jar[English
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-french.jar[French
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-german.jar[German
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-hungarian.jar[Hungarian
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-italian.jar[Italian
 Model] +
-- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.7/stanford-corenlp-4.5.7-models-spanish.jar[Spanish
 Model]
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-arabic.jar[Arabic
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-chinese.jar[Chinese
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-english.jar[English
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-french.jar[French
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-german.jar[German
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-hungarian.jar[Hungarian
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-italian.jar[Italian
 Model] +
+- 
https://repo1.maven.org/maven2/edu/stanford/nlp/stanford-corenlp/4.5.10/stanford-corenlp-4.5.10-models-spanish.jar[Spanish
 Model]
diff --git a/plugins/engines/beam/pom.xml b/plugins/engines/beam/pom.xml
index e13686c527..de34cb7cf1 100644
--- a/plugins/engines/beam/pom.xml
+++ b/plugins/engines/beam/pom.xml
@@ -34,6 +34,13 @@
 
     <dependencyManagement>
         <dependencies>
+            <dependency>
+                <groupId>org.apache.hop</groupId>
+                <artifactId>hop-libs</artifactId>
+                <version>${project.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
             <dependency>
                 <groupId>com.azure</groupId>
                 <artifactId>azure-sdk-bom</artifactId>
@@ -62,13 +69,6 @@
                 <type>pom</type>
                 <scope>import</scope>
             </dependency>
-            <dependency>
-                <groupId>org.apache.hop</groupId>
-                <artifactId>hop-libs</artifactId>
-                <version>${project.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
             <dependency>
                 <groupId>org.apache.hadoop</groupId>
                 <artifactId>hadoop-client-api</artifactId>
@@ -1660,31 +1660,11 @@
         </dependency>
     </dependencies>
 
-    <!--
-      Two zips:
-      - hop-engines-beam-${version}.zip : marketplace plugin 
(plugins/engines/beam + lib-beam SDKs)
-      - hop-engines-beam-${version}-libs.zip : slim client libs 
(lib/spark-client + shared lib/core extras)
-      Opt-in full Beam in hop-client: mvn … -Pbeam (assemblies/client)
-    -->
     <build>
         <plugins>
             <plugin>
                 <artifactId>maven-assembly-plugin</artifactId>
                 <executions>
-                    <execution>
-                        <id>assembly-beam-libs</id>
-                        <goals>
-                            <goal>single</goal>
-                        </goals>
-                        <phase>package</phase>
-                        <configuration>
-                            <appendAssemblyId>true</appendAssemblyId>
-                            <descriptors>
-                                
<descriptor>${project.basedir}/src/assembly/assembly-libs.xml</descriptor>
-                            </descriptors>
-                            <descriptorSourceDirectory 
combine.self="override"></descriptorSourceDirectory>
-                        </configuration>
-                    </execution>
                     <execution>
                         <id>assembly_package</id>
                         <goals>
diff --git a/plugins/engines/beam/src/assembly/assembly-beam-runtime.xml 
b/plugins/engines/beam/src/assembly/assembly-beam-runtime.xml
deleted file mode 100644
index 369c7ca832..0000000000
--- a/plugins/engines/beam/src/assembly/assembly-beam-runtime.xml
+++ /dev/null
@@ -1,154 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-<component xmlns="http://maven.apache.org/ASSEMBLY/2.2.0";
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 
http://maven.apache.org/xsd/assembly-2.2.0.xsd";>
-    <!-- Beam SDK / runners: shipped with marketplace plugin under 
plugins/engines/beam/lib-beam -->
-    <dependencySets>
-        <dependencySet>
-            <scope>runtime</scope>
-            <excludes>
-                <exclude>org.apache.hop:hop-engines-beam:jar</exclude>
-                <exclude>org.apache.hadoop:*:jar</exclude>
-                <exclude>org.apache.hadoop.thirdparty:*:jar</exclude>
-                <exclude>org.yaml:snakeyaml:jar</exclude>
-                <exclude>com.google.protobuf:protobuf-java:jar</exclude>
-                <exclude>com.google.protobuf:protobuf-java-util:jar</exclude>
-                <exclude>org.jetbrains:annotations:jar</exclude>
-                
<exclude>com.google.auto.value:auto-value-annotations:jar</exclude>
-                
<exclude>org.apache.beam:beam-vendor-guava-32_1_2-jre:jar</exclude>
-                <exclude>com.github.luben:zstd-jni:jar</exclude>
-                
<exclude>com.google.auth:google-auth-library-oauth2-http:jar</exclude>
-                
<exclude>com.google.oauth-client:google-oauth-client:jar</exclude>
-                <exclude>com.google.api-client:google-api-client:jar</exclude>
-                
<exclude>com.google.http-client:google-http-client:jar</exclude>
-                
<exclude>com.google.http-client:google-http-client-apache-v2:jar</exclude>
-                
<exclude>com.google.http-client:google-http-client-appengine:jar</exclude>
-                <exclude>google-http-client-gson:jar</exclude>
-                
<exclude>com.google.http-client:google-http-client-jackson2:jar</exclude>
-                <exclude>com.google.android:annotations:jar</exclude>
-                
<exclude>org.codehaus.mojo:animal-sniffer-annotations:jar</exclude>
-                <exclude>com.google.api:api-common:jar</exclude>
-                
<exclude>com.google.auto.value:auto-value-annotations:jar</exclude>
-                <exclude>com.google.guava::jar</exclude>
-                <exclude>org.jetbrains.kotlin::jar</exclude>
-                <exclude>io.netty::jar</exclude>
-                
<exclude>org.codehaus.mojo:animal-sniffer-annotations:jar</exclude>
-                <exclude>io.projectreactor.netty::jar</exclude>
-                <exclude>io.grpc:grpc-netty-shaded:jar</exclude>
-                <exclude>io.grpc:grpc-xds:jar</exclude>
-                <exclude>org.apache.kafka::jar</exclude>
-                <exclude>org.xerial.snappy:snappy-java:jar</exclude>
-                <exclude>org.eclipse.jetty::jar</exclude>
-                <exclude>org.eclipse.jetty.compression::jar</exclude>
-                <exclude>com.google.cloud:google-cloud-storage:jar</exclude>
-                <exclude>io.grpc::jar</exclude>
-                <exclude>com.google.cloud:google-cloud-core-grpc:jar</exclude>
-                
<exclude>com.google.api.grpc:grpc-google-cloud-storage-v2:jar</exclude>
-                <exclude>com.google.api:gax-grpc:jar</exclude>
-                <exclude>com.google.api.grpc::jar</exclude>
-                <exclude>org.checkerframework:checker-qual:jar</exclude>
-                <exclude>io.confluent:common-utils:jar</exclude>
-                <exclude>commons-cli:commons-cli:jar</exclude>
-                <exclude>commons-codec:commons-codec:jar</exclude>
-                <exclude>commons-logging:commons-logging:jar</exclude>
-                <exclude>org.apache.commons:commons-text:jar</exclude>
-                
<exclude>com.google.cloud.opentelemetry:detector-resources-support:jar</exclude>
-                
<exclude>com.google.errorprone:error_prone_annotations:jar</exclude>
-                
<exclude>com.google.cloud.opentelemetry:exporter-metrics:jar</exclude>
-                <exclude>com.google.api:gax:jar</exclude>
-                <exclude>com.google.api:gax-httpjson:jar</exclude>
-                
<exclude>com.google.apis:google-api-services-storage:jar</exclude>
-                
<exclude>com.google.auth:google-auth-library-credentials:jar</exclude>
-                
<exclude>com.google.auth:google-auth-library-oauth2-http:jar</exclude>
-                <exclude>com.google.cloud:google-cloud-core:jar</exclude>
-                <exclude>com.google.cloud:google-cloud-core-http:jar</exclude>
-                <exclude>com.google.cloud:google-cloud-monitoring:jar</exclude>
-                
<exclude>com.google.http-client:google-http-client-gson:jar</exclude>
-                <exclude>org.apache.httpcomponents:httpclient:jar</exclude>
-                <exclude>org.apache.httpcomponents:httpcore:jar</exclude>
-                <exclude>com.google.j2objc:j2objc-annotations:jar</exclude>
-                <exclude>com.fasterxml.jackson.core::jar</exclude>
-                <exclude>com.fasterxml.jackson.dataformat::jar</exclude>
-                <exclude>com.fasterxml.jackson.datatype::jar</exclude>
-                <exclude>com.fasterxml.jackson::jar</exclude>
-                
<exclude>com.github.stephenc.jcip:jcip-annotations:jar</exclude>
-                <exclude>net.java.dev.jna::jar</exclude>
-                <exclude>com.google.code.findbugs:jsr305:jar</exclude>
-                <exclude>com.squareup.okhttp3:okhttp:jar</exclude>
-                <exclude>com.squareup.okio::jar</exclude>
-                <exclude>io.opentelemetry::jar</exclude>
-                
<exclude>com.google.cloud.opentelemetry:shared-resourcemapping:jar</exclude>
-                <exclude>org.codehaus.woodstox:stax2-api:jar</exclude>
-                <exclude>org.threeten::jar</exclude>
-                <exclude>org.lz4:lz4-java:jar</exclude>
-                <exclude>io.opentelemetry.contrib::jar</exclude>
-                <exclude>io.opentelemetry.semconv::jar</exclude>
-                <exclude>io.perfmark:perfmark-api:jar</exclude>
-                <exclude>com.google.re2j:re2j:jar</exclude>
-                <exclude>org.reactivestreams:reactive-streams:jar</exclude>
-                <exclude>io.projectreactor:reactor-core:jar</exclude>
-                <exclude>org.bouncycastle::jar</exclude>
-                <exclude>com.microsoft.azure:msal4j:jar</exclude>
-                
<exclude>com.microsoft.azure:msal4j-persistence-extension:jar</exclude>
-                <exclude>com.amazonaws:aws-java-sdk-core:jar</exclude>
-                <exclude>com.amazonaws:aws-java-sdk-kms:jar</exclude>
-                <exclude>com.amazonaws:aws-java-sdk-s3:jar</exclude>
-                <exclude>com.nimbusds:oauth2-oidc-sdk:jar</exclude>
-                <exclude>com.azure:azure-core:jar</exclude>
-                <exclude>com.azure:azure-identity:jar</exclude>
-                <exclude>com.azure:azure-core-http-netty:jar</exclude>
-                <exclude>com.azure:azure-json:jar</exclude>
-                <exclude>com.microsoft.azure:azure-keyvault-core:jar</exclude>
-                
<exclude>com.azure:azure-security-keyvault-secrets:jar</exclude>
-                <exclude>com.azure:azure-storage-blob:jar</exclude>
-                <exclude>com.azure:azure-storage-common:jar</exclude>
-                <exclude>com.azure:azure-storage-internal-avro:jar</exclude>
-                <exclude>com.azure:azure-xml:jar</exclude>
-                <exclude>com.nimbusds:nimbus-jose-jwt:jar</exclude>
-                <exclude>io.confluent::jar</exclude>
-                <exclude>com.google.code.gson:gson:jar</exclude>
-                <exclude>org.apache.commons:commons-collections4:jar</exclude>
-                <exclude>org.jspecify:jspecify:jar</exclude>
-                <exclude>org.apache.commons:commons-lang3:jar</exclude>
-                <exclude>commons-collections:commons-collections:jar</exclude>
-                <exclude>com.fasterxml.woodstox:woodstox-core:jar</exclude>
-                <exclude>com.ibm.icu:icu4j:jar</exclude>
-                
<exclude>com.fasterxml.jackson.core:jackson-annotations:jar</exclude>
-                <exclude>software.amazon.awssdk:*:jar</exclude>
-                <exclude>software.amazon.eventstream:eventstream:jar</exclude>
-                <exclude>javax.annotation:javax.annotation-api:jar</exclude>
-                <exclude>javax.inject:javax.inject:jar</exclude>
-                <exclude>org.jctools:jctools-core:jar</exclude>
-                <exclude>com.nimbusds:lang-tag:jar</exclude>
-                <exclude>io.dropwizard.metrics:*:jar</exclude>
-                
<exclude>com.eclipsesource.minimal-json:minimal-json:jar</exclude>
-                <exclude>org.slf4j:slf4j-api:jar</exclude>
-                <!-- Spark client runtime lives in lib/spark-client (versioned 
packs); keep Beam own Spark fragments in lib-beam -->
-                <exclude>org.apache.spark:spark-core_2.12:jar</exclude>
-                <exclude>org.apache.spark:spark-streaming_2.12:jar</exclude>
-                <exclude>org.apache.spark:spark-launcher_2.12:jar</exclude>
-                <exclude>org.apache.spark:spark-kvstore_2.12:jar</exclude>
-                
<exclude>org.apache.spark:spark-network-common_2.12:jar</exclude>
-                
<exclude>org.apache.spark:spark-network-shuffle_2.12:jar</exclude>
-                <exclude>org.apache.spark:spark-unsafe_2.12:jar</exclude>
-                <exclude>org.apache.spark:spark-tags_2.12:jar</exclude>
-            </excludes>
-            <outputDirectory>plugins/engines/beam/lib-beam</outputDirectory>
-        </dependencySet>
-    </dependencySets>
-</component>
diff --git a/plugins/engines/beam/src/assembly/assembly-libs.xml 
b/plugins/engines/beam/src/assembly/assembly-libs.xml
deleted file mode 100644
index 4736424a1c..0000000000
--- a/plugins/engines/beam/src/assembly/assembly-libs.xml
+++ /dev/null
@@ -1,161 +0,0 @@
-<!--
-  ~ Licensed to the Apache Software Foundation (ASF) under one or more
-  ~ contributor license agreements.  See the NOTICE file distributed with
-  ~ this work for additional information regarding copyright ownership.
-  ~ The ASF licenses this file to You under the Apache License, Version 2.0
-  ~ (the "License"); you may not use this file except in compliance with
-  ~ the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0";
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 
http://maven.apache.org/xsd/assembly-2.2.0.xsd";>
-    <!-- Slim client libs: default Spark client pack + shared lib/core extras 
from Beam deps. Beam SDKs live in plugin zip (lib-beam). -->
-    <id>libs</id>
-    <formats>
-        <format>zip</format>
-    </formats>
-    <baseDirectory>.</baseDirectory>
-
-    <dependencySets>
-        <!-- hop-engines-beam.jar is packaged in the plugin zip -->
-        
-        <!-- Default Spark client pack (matches plugins/engines/beam 
spark.version). Optional
-             additional packs can be materialised under 
lib/spark-clients/<version>/ via
-             tools/spark-client-pack. Selected at runtime with 
HOP_SPARK_CLIENT_VERSION. -->
-        <dependencySet>
-            <scope>runtime</scope>
-            <includes>
-                <include>org.apache.spark:spark-core_2.12:jar</include>
-                <include>org.apache.spark:spark-streaming_2.12:jar</include>
-                <include>org.apache.spark:spark-launcher_2.12:jar</include>
-                <include>org.apache.spark:spark-kvstore_2.12:jar</include>
-                
<include>org.apache.spark:spark-network-common_2.12:jar</include>
-                
<include>org.apache.spark:spark-network-shuffle_2.12:jar</include>
-                <include>org.apache.spark:spark-unsafe_2.12:jar</include>
-                <include>org.apache.spark:spark-tags_2.12:jar</include>
-            </includes>
-            <outputDirectory>lib/spark-client</outputDirectory>
-        </dependencySet>
-        <dependencySet>
-            <scope>runtime</scope>
-            <includes>
-                <include>org.apache.hadoop:*:jar</include>
-                <include>org.apache.hadoop.thirdparty:*:jar</include>
-                <include>org.yaml:snakeyaml:jar</include>
-                <include>org.jetbrains:annotations:jar</include>
-                
<include>com.google.auto.value:auto-value-annotations:jar</include>
-                
<include>org.apache.beam:beam-vendor-guava-32_1_2-jre:jar</include>
-                <include>com.github.luben:zstd-jni:jar</include>
-                
<include>com.google.auth:google-auth-library-oauth2-http:jar</include>
-                
<include>com.google.oauth-client:google-oauth-client:jar</include>
-                <include>com.google.api-client:google-api-client:jar</include>
-                
<include>com.google.http-client:google-http-client:jar</include>
-                
<include>com.google.http-client:google-http-client-apache-v2:jar</include>
-                
<include>com.google.http-client:google-http-client-appengine:jar</include>
-                <include>google-http-client-gson:jar</include>
-                
<include>com.google.http-client:google-http-client-jackson2:jar</include>
-                <include>com.google.android:annotations:jar</include>
-                
<include>org.codehaus.mojo:animal-sniffer-annotations:jar</include>
-                <include>com.google.api:api-common:jar</include>
-                
<include>com.google.auto.value:auto-value-annotations:jar</include>
-                <include>org.jetbrains.kotlin::jar</include>
-                <include>io.netty::jar</include>
-                <include>io.projectreactor.netty::jar</include>
-                <include>io.projectreactor:reactor-core:jar</include>
-                <include>io.grpc:grpc-netty-shaded:jar</include>
-                <include>org.apache.kafka::jar</include>
-                <include>com.google.cloud:google-cloud-storage:jar</include>
-                <include>io.grpc::jar</include>
-                <include>com.google.cloud:google-cloud-core-grpc:jar</include>
-                
<include>com.google.api.grpc:grpc-google-cloud-storage-v2:jar</include>
-                <include>com.google.api:gax-grpc:jar</include>
-                <include>com.google.api:gax:jar</include>
-                <include>com.google.api.grpc::jar</include>
-                <include>org.checkerframework:checker-qual:jar</include>
-                <include>io.confluent:common-utils:jar</include>
-                <include>commons-cli:commons-cli:jar</include>
-                <include>commons-codec:commons-codec:jar</include>
-                <include>commons-logging:commons-logging:jar</include>
-                <include>org.apache.commons:commons-text:jar</include>
-                
<include>com.google.cloud.opentelemetry:detector-resources-support:jar</include>
-                
<include>com.google.errorprone:error_prone_annotations:jar</include>
-                
<include>com.google.cloud.opentelemetry:exporter-metrics:jar</include>
-                <include>com.google.api:gax-httpjson:jar</include>
-                
<include>com.google.apis:google-api-services-storage:jar</include>
-                
<include>com.google.auth:google-auth-library-credentials:jar</include>
-                
<include>com.google.auth:google-auth-library-oauth2-http:jar</include>
-                <include>com.google.cloud:google-cloud-core:jar</include>
-                <include>com.google.cloud:google-cloud-core-http:jar</include>
-                <include>com.google.cloud:google-cloud-monitoring:jar</include>
-                
<include>com.google.http-client:google-http-client-gson:jar</include>
-                <include>org.apache.httpcomponents:httpclient:jar</include>
-                <include>org.apache.httpcomponents:httpcore:jar</include>
-                <include>com.google.j2objc:j2objc-annotations:jar</include>
-                <include>com.fasterxml.jackson.core::jar</include>
-                <include>com.fasterxml.jackson.dataformat::jar</include>
-                <include>com.fasterxml.jackson.datatype::jar</include>
-                <include>com.fasterxml.jackson::jar</include>
-                
<include>com.github.stephenc.jcip:jcip-annotations:jar</include>
-                <include>net.java.dev.jna::jar</include>
-                <include>com.google.code.findbugs:jsr305:jar</include>
-                <include>com.squareup.okhttp3:okhttp:jar</include>
-                <include>com.squareup.okio::jar</include>
-                <include>io.opentelemetry::jar</include>
-                <include>io.opentelemetry.contrib::jar</include>
-                <include>io.opentelemetry.semconv::jar</include>
-                
<include>com.google.cloud.opentelemetry:shared-resourcemapping:jar</include>
-                <include>org.codehaus.woodstox:stax2-api:jar</include>
-                <include>org.threeten::jar</include>
-                <include>org.lz4:lz4-java:jar</include>
-                <include>io.perfmark:perfmark-api:jar</include>
-                <include>com.google.re2j:re2j:jar</include>
-                <include>org.reactivestreams:reactive-streams:jar</include>
-                <include>org.bouncycastle::jar</include>
-                <include>com.microsoft.azure:msal4j:jar</include>
-                
<include>com.microsoft.azure:msal4j-persistence-extension:jar</include>
-                <include>com.amazonaws:aws-java-sdk-core:jar</include>
-                <include>com.amazonaws:aws-java-sdk-kms:jar</include>
-                <include>com.amazonaws:aws-java-sdk-s3:jar</include>
-                <include>com.nimbusds:oauth2-oidc-sdk:jar</include>
-                <include>com.azure:azure-core:jar</include>
-                <include>com.azure:azure-identity:jar</include>
-                <include>com.azure:azure-core-http-netty:jar</include>
-                <include>com.azure:azure-json:jar</include>
-                <include>com.microsoft.azure:azure-keyvault-core:jar</include>
-                
<include>com.azure:azure-security-keyvault-secrets:jar</include>
-                <include>com.azure:azure-storage-blob:jar</include>
-                <include>com.azure:azure-storage-common:jar</include>
-                <include>com.azure:azure-storage-internal-avro:jar</include>
-                <include>com.azure:azure-xml:jar</include>
-                <include>com.nimbusds:nimbus-jose-jwt:jar</include>
-                <include>io.confluent::jar</include>
-                <include>com.google.code.gson:gson:jar</include>
-                <include>org.apache.commons:commons-collections4:jar</include>
-                <include>org.apache.commons:commons-lang3:jar</include>
-                <include>commons-collections:commons-collections:jar</include>
-                <include>com.fasterxml.woodstox:woodstox-core:jar</include>
-                <include>com.ibm.icu:icu4j:jar</include>
-                
<include>com.fasterxml.jackson.core:jackson-annotations:jar</include>
-                <include>software.amazon.awssdk:*:jar</include>
-                <include>software.amazon.eventstream:eventstream:jar</include>
-                <include>javax.annotation:javax.annotation-api:jar</include>
-                <include>javax.inject:javax.inject:jar</include>
-                <include>org.jctools:jctools-core:jar</include>
-                <include>com.nimbusds:lang-tag:jar</include>
-                <include>io.dropwizard.metrics:*:jar</include>
-                
<include>com.eclipsesource.minimal-json:minimal-json:jar</include>
-                <include>org.slf4j:slf4j-api:jar</include>
-            </includes>
-            <outputDirectory>lib/core</outputDirectory>
-        </dependencySet>
-    </dependencySets>
-</assembly>
\ No newline at end of file
diff --git a/plugins/engines/beam/src/assembly/assembly.xml 
b/plugins/engines/beam/src/assembly/assembly.xml
index fe175665fb..4aa190324f 100644
--- a/plugins/engines/beam/src/assembly/assembly.xml
+++ b/plugins/engines/beam/src/assembly/assembly.xml
@@ -18,7 +18,6 @@
 <assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0";
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
     xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 
http://maven.apache.org/xsd/assembly-2.2.0.xsd";>
-    <!-- Marketplace plugin: Hop Beam jar + Beam SDKs under lib-beam (runners 
etc.). -->
     <id>plugin</id>
     <formats>
         <format>zip</format>
@@ -51,9 +50,41 @@
             </includes>
             <outputDirectory>plugins/engines/beam</outputDirectory>
         </dependencySet>
-    </dependencySets>
 
-    <componentDescriptors>
-        
<componentDescriptor>${project.basedir}/src/assembly/assembly-beam-runtime.xml</componentDescriptor>
-    </componentDescriptors>
+        <!-- Default Spark client pack. Kept in its own folder so 
HOP_SPARK_CLIENT_VERSION can
+             swap it for a versioned pack under lib/spark-clients/<version>/ 
(materialised with
+             tools/spark-client-pack) without touching the rest of the 
installation. -->
+        <dependencySet>
+            <scope>runtime</scope>
+            <useProjectArtifact>false</useProjectArtifact>
+            <includes>
+                <include>org.apache.spark:spark-core_2.12:jar</include>
+                <include>org.apache.spark:spark-streaming_2.12:jar</include>
+                <include>org.apache.spark:spark-launcher_2.12:jar</include>
+                <include>org.apache.spark:spark-kvstore_2.12:jar</include>
+                
<include>org.apache.spark:spark-network-common_2.12:jar</include>
+                
<include>org.apache.spark:spark-network-shuffle_2.12:jar</include>
+                <include>org.apache.spark:spark-unsafe_2.12:jar</include>
+                <include>org.apache.spark:spark-tags_2.12:jar</include>
+            </includes>
+            <outputDirectory>lib/spark-client</outputDirectory>
+        </dependencySet>
+
+        <!-- Beam SDKs, runners and everything they need - the former lib/beam 
-->
+        <dependencySet>
+            <scope>runtime</scope>
+            <useProjectArtifact>false</useProjectArtifact>
+            <excludes>
+                <exclude>org.apache.spark:spark-core_2.12</exclude>
+                <exclude>org.apache.spark:spark-streaming_2.12</exclude>
+                <exclude>org.apache.spark:spark-launcher_2.12</exclude>
+                <exclude>org.apache.spark:spark-kvstore_2.12</exclude>
+                <exclude>org.apache.spark:spark-network-common_2.12</exclude>
+                <exclude>org.apache.spark:spark-network-shuffle_2.12</exclude>
+                <exclude>org.apache.spark:spark-unsafe_2.12</exclude>
+                <exclude>org.apache.spark:spark-tags_2.12</exclude>
+            </excludes>
+            <outputDirectory>lib/core</outputDirectory>
+        </dependencySet>
+    </dependencySets>
 </assembly>
diff --git 
a/plugins/engines/beam/src/main/java/org/apache/hop/beam/gui/HopBeamGuiPlugin.java
 
b/plugins/engines/beam/src/main/java/org/apache/hop/beam/gui/HopBeamGuiPlugin.java
index ac8efbf8ab..2f5d2dd7b1 100644
--- 
a/plugins/engines/beam/src/main/java/org/apache/hop/beam/gui/HopBeamGuiPlugin.java
+++ 
b/plugins/engines/beam/src/main/java/org/apache/hop/beam/gui/HopBeamGuiPlugin.java
@@ -461,7 +461,7 @@ public class HopBeamGuiPlugin {
 
   /**
    * @param versionedPack when true, also skip {@code spark-*.jar} under Beam 
SDK folders ({@code
-   *     lib/beam} legacy or {@code plugins/engines/beam/lib-beam}) so Beam's 
fixed Spark fragments
+   *     lib/beam} legacy or {@code plugins/engines/beam/lib}) so Beam's fixed 
Spark fragments
    *     cannot mix with an alternate client pack
    */
   private static void collectJarsExcludingSparkClientPacks(
@@ -485,7 +485,7 @@ public class HopBeamGuiPlugin {
       if (child.isDirectory()) {
         collectJarsExcludingSparkClientPacks(child, jarFiles, versionedPack);
       } else if (child.isFile() && child.getName().endsWith(".jar")) {
-        // Versioned packs own all spark-* jars; drop Beam's spark fragments 
from lib-beam /
+        // Versioned packs own all spark-* jars; drop Beam's spark fragments 
from the plugin /
         // lib/beam
         if (versionedPack
             && child.getName().startsWith("spark-")
@@ -498,7 +498,12 @@ public class HopBeamGuiPlugin {
     }
   }
 
-  /** True for legacy {@code lib/beam} or marketplace {@code …/beam/lib-beam}. 
*/
+  /**
+   * True for the Beam SDK folder of older layouts: the top-level {@code 
lib/beam} before Beam
+   * became a marketplace plugin, and {@code plugins/engines/beam/lib-beam} in 
between. Current
+   * installs put the Beam SDKs in {@code lib/core}, where the generic spark-* 
guard below already
+   * covers them.
+   */
   static boolean isBeamSdkJarFolder(File folder) {
     if (folder == null) {
       return false;
diff --git 
a/plugins/misc/marketplace/src/main/java/org/apache/hop/marketplace/catalog/OptionalPluginCatalog.java
 
b/plugins/misc/marketplace/src/main/java/org/apache/hop/marketplace/catalog/OptionalPluginCatalog.java
index e62767e0d4..35d233a548 100644
--- 
a/plugins/misc/marketplace/src/main/java/org/apache/hop/marketplace/catalog/OptionalPluginCatalog.java
+++ 
b/plugins/misc/marketplace/src/main/java/org/apache/hop/marketplace/catalog/OptionalPluginCatalog.java
@@ -149,7 +149,7 @@ public final class OptionalPluginCatalog {
             "hop-engines-beam",
             "Apache Beam engine",
             "Engines",
-            "Beam pipeline engine and transforms (includes Beam SDKs under 
lib-beam).",
+            "Beam pipeline engine and transforms (includes the Beam SDKs).",
             "plugins/engines/beam"));
     wave1.add(
         new OptionalPluginInfo(
diff --git 
a/plugins/misc/marketplace/src/main/resources/org/apache/hop/marketplace/optional-plugins.yaml
 
b/plugins/misc/marketplace/src/main/resources/org/apache/hop/marketplace/optional-plugins.yaml
index f6a49b35d1..d38681230d 100644
--- 
a/plugins/misc/marketplace/src/main/resources/org/apache/hop/marketplace/optional-plugins.yaml
+++ 
b/plugins/misc/marketplace/src/main/resources/org/apache/hop/marketplace/optional-plugins.yaml
@@ -44,6 +44,12 @@ plugins:
     description: Scripting transform with embedded language runtimes.
     installPath: plugins/transforms/script
     modulePath: plugins/transforms/script
+  - artifactId: hop-transform-detectlanguage
+    name: Detect language
+    category: Transforms
+    description: Detect the language of a text field; includes the Lingua 
language models.
+    installPath: plugins/transforms/detectlanguage
+    modulePath: plugins/transforms/detectlanguage
   - artifactId: hop-transform-tika
     name: Apache Tika
     category: Transforms
diff --git 
a/plugins/misc/marketplace/src/test/java/org/apache/hop/marketplace/install/PluginInstallerTest.java
 
b/plugins/misc/marketplace/src/test/java/org/apache/hop/marketplace/install/PluginInstallerTest.java
index 44ac307892..a63e343918 100644
--- 
a/plugins/misc/marketplace/src/test/java/org/apache/hop/marketplace/install/PluginInstallerTest.java
+++ 
b/plugins/misc/marketplace/src/test/java/org/apache/hop/marketplace/install/PluginInstallerTest.java
@@ -55,7 +55,7 @@ class PluginInstallerTest {
   @Test
   void sharedCorePaths() {
     assertFalse(PluginInstaller.isSharedCorePath("lib/beam/foo.jar"));
-    
assertFalse(PluginInstaller.isSharedCorePath("plugins/engines/beam/lib-beam/x.jar"));
+    
assertFalse(PluginInstaller.isSharedCorePath("plugins/engines/beam/hop-engines-beam.jar"));
     assertTrue(PluginInstaller.isSharedCorePath("lib/core/bar.jar"));
     assertTrue(PluginInstaller.isSharedCorePath("lib/core"));
     
assertFalse(PluginInstaller.isSharedCorePath("plugins/engines/beam/hop.jar"));
diff --git a/plugins/transforms/detectlanguage/pom.xml 
b/plugins/transforms/detectlanguage/pom.xml
index b3108ec42c..6125b6932a 100644
--- a/plugins/transforms/detectlanguage/pom.xml
+++ b/plugins/transforms/detectlanguage/pom.xml
@@ -29,11 +29,6 @@
     <packaging>jar</packaging>
     <name>Hop Plugins Transforms Detect Language</name>
 
-    <properties>
-        <hop.pluginlib.exclude1>lingua</hop.pluginlib.exclude1>
-        <hop.pluginlib.exclude2>fastutil</hop.pluginlib.exclude2>
-    </properties>
-
     <dependencyManagement>
         <dependencies>
             <dependency>
diff --git a/plugins/transforms/stanfordnlp/pom.xml 
b/plugins/transforms/stanfordnlp/pom.xml
index 2882aacd32..4813edc593 100644
--- a/plugins/transforms/stanfordnlp/pom.xml
+++ b/plugins/transforms/stanfordnlp/pom.xml
@@ -30,6 +30,13 @@
     <name>Hop Plugins Transforms Stanford Simple NLP</name>
 
     <properties>
+        <!-- These are compiled against but must never be shipped: 
stanford-corenlp is GPLv3, xom is
+             LGPL 2.1 and AppleJavaExtensions carries Apple's own license, all 
ASF category X.
+             Users download stanford-corenlp (and the language model of their 
choice) themselves,
+             see the "Stanford NLP" page in the user manual. -->
+        <hop.pluginlib.exclude1>stanford-corenlp</hop.pluginlib.exclude1>
+        <hop.pluginlib.exclude2>xom</hop.pluginlib.exclude2>
+        <hop.pluginlib.exclude3>AppleJavaExtensions</hop.pluginlib.exclude3>
         <stanford-corenlp.version>4.5.10</stanford-corenlp.version>
     </properties>
 

Reply via email to