88use php \lang \System ;
99use php \lib \fs ;
1010use php \lib \str ;
11+ use php \util \Flow ;
1112
1213class AppPluginJavaRuntimeBuilder
1314{
@@ -16,6 +17,8 @@ class AppPluginJavaRuntimeBuilder
1617 */
1718 public $ jars = [];
1819
20+ public $ jvmModules = [];
21+
1922 public function __construct ()
2023 {
2124 }
@@ -25,6 +28,16 @@ public function addJar($jar)
2528 $ this ->jars [$ jar ] = $ jar ;
2629 }
2730
31+ public function addJvmModules (...$ modules )
32+ {
33+ foreach ($ modules as $ module ) {
34+ if (!$ this ->jvmModules [$ module ]) {
35+ $ this ->jvmModules [$ module ] = $ module ;
36+ Console::log ("-- add jvm module '{0}' " , $ module );
37+ }
38+ }
39+ }
40+
2841 public function fetchModules ($ workingDir )
2942 {
3043 $ javaExec = new JavaExec ();
@@ -41,8 +54,14 @@ public function fetchModules($workingDir)
4154 foreach (str::lines ($ string , true ) as $ line ) {
4255 [, $ module ] = str::split ($ line , "-> " );
4356 $ module = str::trim ($ module );
44- if ($ module === "not found " ) continue ;
45- $ modules [$ module ] = $ module ;
57+ if ($ module === "not found " ) {
58+ continue ;
59+ }
60+
61+ if (!$ modules [$ module ]) {
62+ Console::log ("-- add jvm module '{0}' " , $ module );
63+ $ modules [$ module ] = $ module ;
64+ }
4665 }
4766 }
4867 }
@@ -52,11 +71,10 @@ public function fetchModules($workingDir)
5271
5372 public function build ($ workingDir )
5473 {
55- $ modules = $ this ->fetchModules ($ workingDir );
56-
57- foreach ($ modules as $ module ) {
58- Console::log ("-- add jvm module '{0}' " , $ module );
59- }
74+ $ modules = flow (
75+ $ this ->fetchModules ($ workingDir ),
76+ $ this ->jvmModules
77+ )->toMap ();
6078
6179 $ javaExec = new JavaExec ();
6280 $ javaHome = fs::parent ($ javaExec ->getJavaBin ());
0 commit comments